diff --git a/.circleci/config.yml b/.circleci/config.yml index 8747b7804e..17e6a25fbc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -326,24 +326,16 @@ jobs: workflows: penpot: jobs: - - lint - test-frontend: requires: - lint: success - test-library: requires: - - test-frontend: success - lint: success - test-components: requires: - - test-frontend: success - - lint: success - - - test-integration: - requires: - - test-frontend: success - lint: success - test-backend: @@ -354,4 +346,6 @@ workflows: requires: - lint: success + - lint + - test-integration - test-render-wasm diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 4665e618a9..1a0723a046 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -46,6 +46,7 @@ jobs: mv penpot/backend bundle-backend mv penpot/frontend bundle-frontend mv penpot/exporter bundle-exporter + mv penpot/storybook bundle-storybook popd - name: Set up Docker Buildx @@ -99,3 +100,29 @@ jobs: tags: ${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:${{ steps.vars.outputs.gh_ref }} cache-from: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache cache-to: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache,mode=max + + - name: Build and push Storybook Docker image + uses: docker/build-push-action@v6 + env: + DOCKER_IMAGE: 'storybook' + BUNDLE_PATH: './bundle-storybook' + with: + context: ./docker/images/ + file: ./docker/images/Dockerfile.storybook + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:${{ steps.vars.outputs.gh_ref }} + cache-from: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache + cache-to: type=registry,ref=${{ secrets.DOCKER_REGISTRY }}/${{ env.DOCKER_IMAGE }}:buildcache,mode=max + + - name: Notify Mattermost + if: failure() + uses: mattermost/action-mattermost-notify@master + with: + MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK }} + MATTERMOST_CHANNEL: bot-alerts-cicd + TEXT: | + ❌ 🐳 *[PENPOT] Error building penpot docker images.* + 📄 Triggered from ref: `${{ steps.vars.outputs.gh_ref }}` + 🔗 Run: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} + @infra diff --git a/.github/workflows/commit-checker.yml b/.github/workflows/commit-checker.yml index 7918c23395..90f5d18a68 100644 --- a/.github/workflows/commit-checker.yml +++ b/.github/workflows/commit-checker.yml @@ -26,7 +26,7 @@ jobs: - name: Check Commit Type uses: gsactions/commit-message-checker@v2 with: - pattern: '^(Merge|Revert|:(lipstick|globe_with_meridians|wrench|books|arrow_up|arrow_down|zap|ambulance|construction|boom|fire|whale|bug|sparkles|paperclip|tada|recycle|rewind):)\s["A-Z].*[^.]$' + pattern: '^(Merge|Revert|:(lipstick|globe_with_meridians|wrench|books|arrow_up|arrow_down|zap|ambulance|construction|boom|fire|whale|bug|sparkles|paperclip|tada|recycle|rewind|construction_worker):)\s["A-Z].*[^.]$' flags: 'gm' error: 'Commit should match CONTRIBUTING.md guideline' checkAllCommitMessages: 'true' # optional: this checks all commits associated with a pull request diff --git a/CHANGES.md b/CHANGES.md index 8272fc334e..fceece355a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,17 +1,91 @@ # CHANGELOG +## 2.11.0 (Unreleased) + +### :boom: Breaking changes & Deprecations + +- Deprecated configuration variables with the prefix `PENPOT_ASSETS_*`, and will be + removed in future versions: + + - The `PENPOT_ASSETS_STORAGE_BACKEND` becomes `PENPOT_OBJECTS_STORAGE_BACKEND` and its + values passes from (`assets-fs` or `assets-s3`) to (`fs` or `s3`) + - The `PENPOT_STORAGE_ASSETS_FS_DIRECTORY` becomes `PENPOT_OBJECTS_STORAGE_FS_DIRECTORY` + - The `PENPOT_STORAGE_ASSETS_S3_BUCKET` becomes `PENPOT_OBJECTS_STORAGE_S3_BUCKET` + - The `PENPOT_STORAGE_ASSETS_S3_REGION` becomes `PENPOT_OBJECTS_STORAGE_S3_REGION` + - The `PENPOT_STORAGE_ASSETS_S3_ENDPOINT` becomes `PENPOT_OBJECTS_STORAGE_S3_ENDPOINT` + - The `PENPOT_STORAGE_ASSETS_S3_IO_THREADS` replaced (see below) + +- Add `PENPOT_NETTY_IO_THREADS` and `PENPOT_EXECUTOR_THREADS` variables to provide the + control over concurrency of the shared resources used by netty. Penpot uses the netty IO + threads for AWS S3 SDK and Redis/Valkey communication, and the EXEC threads to perform + out of HTTP serving threads tasks such that cache invalidation, S3 response completion, + configuration reloading and many other auxiliar tasks. By default they use a half number + if available cpus with a minumum of 2 for both executors. You should not touch that + variables unless you are know what you are doing. + +- Replace the `PENPOT_STORAGE_ASSETS_S3_IO_THREADS` with a more general configuration + `PENPOT_NETTY_IO_THREADS` used to configure a shared netty resources across different + services which use netty internally (redis connection, S3 SDK client). This + configuration is not very commonly used so don't expected real impact on any user. + +### :rocket: Epics and highlights + +### :heart: Community contributions (Thank you!) + +### :sparkles: New features & Enhancements + +- New composite token: Typography [Taiga #10200](https://tree.taiga.io/project/penpot/us/10200) +- Show current Penpot version [Taiga #11603](https://tree.taiga.io/project/penpot/us/11603) +- Switch several variant copies at the same time [Taiga #11411](https://tree.taiga.io/project/penpot/us/11411) +- Invitations management improvements [Taiga #3479](https://tree.taiga.io/project/penpot/us/3479) +- Alternative ways of creating variants - Button Viewport [Taiga #11931](https://tree.taiga.io/project/penpot/us/11931) +- Reorder properties for a component [Taiga #10225](https://tree.taiga.io/project/penpot/us/10225) +- File Data storage layout refactor [Github #7345](https://github.com/penpot/penpot/pull/7345) +- Make several queries optimization on comment threads [Github #7506](https://github.com/penpot/penpot/pull/7506) + +### :bug: Bugs fixed + +- Fix selection problems when devtools open [Taiga #11950](https://tree.taiga.io/project/penpot/issue/11950) +- Fix long font names overlap [Taiga #11844](https://tree.taiga.io/project/penpot/issue/11844) +- Fix paste behavior according to the selected element [Taiga #11979](https://tree.taiga.io/project/penpot/issue/11979) +- Fix problem with export size [Github #7160](https://github.com/penpot/penpot/issues/7160) +- Fix multi level library dependencies [Taiga #12155](https://tree.taiga.io/project/penpot/issue/12155) +- Fix component context menu options order in assets tab [Taiga #11941](https://tree.taiga.io/project/penpot/issue/11941) +- Fix error updating library [Taiga #12218](https://tree.taiga.io/project/penpot/issue/12218) +- Fix restoring a variant in another file makes it overlap the existing variant [Taiga #12049](https://tree.taiga.io/project/penpot/issue/12049) +- Fix auto-width changes to fixed when switching variants [Taiga #12172](https://tree.taiga.io/project/penpot/issue/12172) +- Fix component number has no singular translation string [Taiga #12106](https://tree.taiga.io/project/penpot/issue/12106) +- Fix adding/removing identical text fills [Taiga #12287](https://tree.taiga.io/project/penpot/issue/12287) +- Fix scroll on the inspect tab [Taiga #12293](https://tree.taiga.io/project/penpot/issue/12293) +- Fix lock proportion tooltip [Taiga #12326](https://tree.taiga.io/project/penpot/issue/12326) +- Fix internal Error when selecting a set by name in the token theme editor [Taiga #12310](https://tree.taiga.io/project/penpot/issue/12310) +- Fix drag & drop functionality is swapping instead or reordering [Taiga #12254](https://tree.taiga.io/project/penpot/issue/12254) +- Fix variants not syncronizing tokens on switch [Taiga #12290](https://tree.taiga.io/project/penpot/issue/12290) +- Fix incorrect behavior of Alt + Drag for variants [Taiga #12309](https://tree.taiga.io/project/penpot/issue/12309) +- Fix text override is lost after switch [Taiga #12269](https://tree.taiga.io/project/penpot/issue/12269) +- Fix exporting a board crashing the app [Taiga #12384](https://tree.taiga.io/project/penpot/issue/12384) +- Fix nested variant in a component doesn't keep inherited overrides [Taiga #12299](https://tree.taiga.io/project/penpot/issue/12299) +- Fix selected colors not showing colors from children shapes in multiple selection [Taiga #12384](https://tree.taiga.io/project/penpot/issue/12385) +- Fix scrollbar issue in design tab [Taiga #12367](https://tree.taiga.io/project/penpot/issue/12367) +- Fix library update notificacions showing when they should not [Taiga #12397](https://tree.taiga.io/project/penpot/issue/12397) +- Fix remove flex button doesn’t work within variant [Taiga #12314](https://tree.taiga.io/project/penpot/issue/12314) +- Fix an error translation [Taiga #12402](https://tree.taiga.io/project/penpot/issue/12402) +- Fix problem with certain text input in some editable labels (pages, components, tokens...) being in conflict with the drag/drop functionality [Taiga #12316](https://tree.taiga.io/project/penpot/issue/12316) +- Fix not controlled theme renaming [Taiga #12411](https://tree.taiga.io/project/penpot/issue/12411) +- Fix paste without selection sends the new element in the back [Taiga #12382](https://tree.taiga.io/project/penpot/issue/12382) +- Fix options button does not work for comments created in the lower part of the screen [Taiga #12422](https://tree.taiga.io/project/penpot/issue/12422) +- Fix problem when checking usage with removed teams [Taiga #12442](https://tree.taiga.io/project/penpot/issue/12442) + ## 2.10.1 ### :sparkles: New features & Enhancements - Improve workpace file loading [Github 7366](https://github.com/penpot/penpot/pull/7366) - ### :bug: Bugs fixed - Fix regression with text shapes creation with Plugins API [Taiga #12244](https://tree.taiga.io/project/penpot/issue/12244) - ## 2.10.0 ### :rocket: Epics and highlights @@ -27,7 +101,7 @@ - Add efficiency enhancements to right sidebar [Github #7182](https://github.com/penpot/penpot/pull/7182) - Add defaults for artboard drawing [Taiga #494](https://tree.taiga.io/project/penpot/us/494?milestone=465047) - Continuous display of distances between elements when moving a layer with the keyboard [Taiga #1780](https://tree.taiga.io/project/penpot/us/1780) -- New Number token - unitless values [Taiga #10936](https://tree.taiga.io/project/penpot/us/10936) +- New Number token - unitless values [Taiga #10936](https://tree.taiga.io/project/penpot/us/10936) - New font-family token [Taiga #10937](https://tree.taiga.io/project/penpot/us/10937) - New text case token [Taiga #10942](https://tree.taiga.io/project/penpot/us/10942) - New text-decoration token [Taiga #10941](https://tree.taiga.io/project/penpot/us/10941) @@ -47,6 +121,7 @@ - Retrieve variants with nested components [Taiga #10277](https://tree.taiga.io/project/penpot/us/10277) - Create variants in bulk from existing components [Taiga #7926](https://tree.taiga.io/project/penpot/us/7926) - Alternative ways of creating variants - Button Design Tab [Taiga #10316](https://tree.taiga.io/project/penpot/us/10316) +- Fix problem with component swapping panel [Taiga #12175](https://tree.taiga.io/project/penpot/issue/12175) ### :bug: Bugs fixed @@ -60,7 +135,7 @@ - Fix issue where Alt + arrow keys shortcut interferes with letter-spacing when moving text layers [Taiga #11552](https://tree.taiga.io/project/penpot/issue/11771) - Fix consistency issues on how font variants are visualized [Taiga #11499](https://tree.taiga.io/project/penpot/us/11499) - Fix parsing rx and ry SVG values for rect radius [Taiga #11861](https://tree.taiga.io/project/penpot/issue/11861) -- Misleading affordance in saved versions [Taiga #11887](https://tree.taiga.io/project/penpot/issue/11887) +- Fix misleading affordance in saved versions [Taiga #11887](https://tree.taiga.io/project/penpot/issue/11887) - Fix pasting RTF text crashes penpot [Taiga #11717](https://tree.taiga.io/project/penpot/issue/11717) - Fix navigation arrows in Libraries & Templates carousel [Taiga #10609](https://tree.taiga.io/project/penpot/issue/10609) - Fix applying tokens with zero value to size [Taiga #11618](https://tree.taiga.io/project/penpot/issue/11618) @@ -107,7 +182,6 @@ - Add info to apply-token event [Taiga #11710](https://tree.taiga.io/project/penpot/task/11710) - Fix double click on set name input [Taiga #11747](https://tree.taiga.io/project/penpot/issue/11747) - ### :bug: Bugs fixed - Copying font size does not copy the unit [Taiga #11143](https://tree.taiga.io/project/penpot/issue/11143) @@ -155,7 +229,7 @@ **Penpot Library** -The initial prototype is completly reworked for provide a more consistent API +The initial prototype is completly reworked to provide a more consistent API and to have proper validation and params decoding. All the details can be found on [its own changelog](library/CHANGES.md) diff --git a/README.md b/README.md index 3240a097c2..07190bcb29 100644 --- a/README.md +++ b/README.md @@ -77,17 +77,14 @@ Provide your team or organization with a completely owned collaborative design t ### Integrations ### Penpot offers integration into the development toolchain, thanks to its support for webhooks and an API accessible through access tokens. -### What’s great for design ### -With Penpot you can design libraries to share and reuse; turn design elements into components and tokens to allow reusability and scalability; and build realistic user flows and interactions. - -### Design Tokens ### -With Penpot’s standardized [design tokens](https://penpot.dev/collaboration/design-tokens) format, you can easily reuse and sync tokens across different platforms, workflows, and disciplines. +### Building Design Systems: design tokens, components and variants ### +Penpot brings design systems to code-minded teams: a single source of truth with native Design Tokens, Components, and Variants for scalable, reusable, and consistent UI across projects and platforms.

- Open Source +


diff --git a/backend/deps.edn b/backend/deps.edn index 8955477424..a6f6fcfecd 100644 --- a/backend/deps.edn +++ b/backend/deps.edn @@ -6,7 +6,7 @@ org.clojure/clojure {:mvn/version "1.12.2"} org.clojure/tools.namespace {:mvn/version "1.5.0"} - com.github.luben/zstd-jni {:mvn/version "1.5.7-3"} + com.github.luben/zstd-jni {:mvn/version "1.5.7-4"} io.prometheus/simpleclient {:mvn/version "0.16.0"} io.prometheus/simpleclient_hotspot {:mvn/version "0.16.0"} @@ -17,7 +17,7 @@ io.prometheus/simpleclient_httpserver {:mvn/version "0.16.0"} - io.lettuce/lettuce-core {:mvn/version "6.7.0.RELEASE"} + io.lettuce/lettuce-core {:mvn/version "6.8.1.RELEASE"} ;; Minimal dependencies required by lettuce, we need to include them ;; explicitly because clojure dependency management does not support ;; yet the BOM format. @@ -28,29 +28,30 @@ com.google.guava/guava {:mvn/version "33.4.8-jre"} funcool/yetti - {:git/tag "v11.4" - :git/sha "ce50d42" + {:git/tag "v11.6" + :git/sha "94dc017" :git/url "https://github.com/funcool/yetti.git" :exclusions [org.slf4j/slf4j-api]} com.github.seancorfield/next.jdbc - {:mvn/version "1.3.1002"} + {:mvn/version "1.3.1070"} + metosin/reitit-core {:mvn/version "0.9.1"} - nrepl/nrepl {:mvn/version "1.3.1"} + nrepl/nrepl {:mvn/version "1.4.0"} org.postgresql/postgresql {:mvn/version "42.7.7"} - org.xerial/sqlite-jdbc {:mvn/version "3.49.1.0"} + org.xerial/sqlite-jdbc {:mvn/version "3.50.3.0"} - com.zaxxer/HikariCP {:mvn/version "6.3.0"} + com.zaxxer/HikariCP {:mvn/version "7.0.2"} io.whitfin/siphash {:mvn/version "2.0.0"} buddy/buddy-hashers {:mvn/version "2.0.167"} buddy/buddy-sign {:mvn/version "3.6.1-359"} - com.github.ben-manes.caffeine/caffeine {:mvn/version "3.2.0"} + com.github.ben-manes.caffeine/caffeine {:mvn/version "3.2.2"} - org.jsoup/jsoup {:mvn/version "1.20.1"} + org.jsoup/jsoup {:mvn/version "1.21.2"} org.im4java/im4java {:git/tag "1.4.0-penpot-2" :git/sha "e2b3e16" @@ -60,12 +61,12 @@ org.clojars.pntblnk/clj-ldap {:mvn/version "0.0.17"} - dawran6/emoji {:mvn/version "0.1.5"} - markdown-clj/markdown-clj {:mvn/version "1.12.3"} + dawran6/emoji {:mvn/version "0.2.0"} + markdown-clj/markdown-clj {:mvn/version "1.12.4"} ;; Pretty Print specs pretty-spec/pretty-spec {:mvn/version "0.1.4"} - software.amazon.awssdk/s3 {:mvn/version "2.33.8"}} + software.amazon.awssdk/s3 {:mvn/version "2.33.10"}} :paths ["src" "resources" "target/classes"] :aliases @@ -80,12 +81,14 @@ :build {:extra-deps - {io.github.clojure/tools.build {:git/tag "v0.10.9" :git/sha "e405aac"}} + {io.github.clojure/tools.build {:mvn/version "0.10.10"}} :ns-default build} :test {:main-opts ["-m" "kaocha.runner"] - :jvm-opts ["-Dlog4j2.configurationFile=log4j2-devenv-repl.xml"] + :jvm-opts ["-Dlog4j2.configurationFile=log4j2-devenv-repl.xml" + "--sun-misc-unsafe-memory-access=allow" + "--enable-native-access=ALL-UNNAMED"] :extra-deps {lambdaisland/kaocha {:mvn/version "1.91.1392"}}} :outdated diff --git a/backend/dev/user.clj b/backend/dev/user.clj index f93e0b6f46..93197eb059 100644 --- a/backend/dev/user.clj +++ b/backend/dev/user.clj @@ -30,8 +30,8 @@ [app.config :as cf] [app.db :as db] [app.main :as main] - [app.srepl.helpers :as srepl.helpers] - [app.srepl.main :as srepl] + [app.srepl.helpers :as h] + [app.srepl.main :refer :all] [app.util.blob :as blob] [clj-async-profiler.core :as prof] [clojure.contrib.humanize :as hum] diff --git a/backend/resources/app/email/invite-to-team/en.subj b/backend/resources/app/email/invite-to-team/en.subj index d4d00f7316..0e0e08d26b 100644 --- a/backend/resources/app/email/invite-to-team/en.subj +++ b/backend/resources/app/email/invite-to-team/en.subj @@ -1 +1 @@ -Invitation to join {{team}} +{{invited-by|abbreviate:25}} has invited you to join the team “{{ team|abbreviate:25 }}” \ No newline at end of file diff --git a/backend/resources/app/onboarding.edn b/backend/resources/app/onboarding.edn index f8686169e8..9efda9bb9f 100644 --- a/backend/resources/app/onboarding.edn +++ b/backend/resources/app/onboarding.edn @@ -1,6 +1,9 @@ [{:id "tokens-starter-kit" :name "Design tokens starter kit" - :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Tokens%20starter%20kit.penpot"}, + :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Tokens%20starter%20kit.penpot"} + {:id "penpot-design-system" + :name "Penpot Design System | Pencil" + :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/penpot-app.penpot"} {:id "wireframing-kit" :name "Wireframe library" :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Wireframing%20kit%20v1.1.penpot"} @@ -10,9 +13,6 @@ {:id "plants-app" :name "UI mockup example" :file-uri "https://github.com/penpot/penpot-files/raw/main/Plants-app.penpot"} - {:id "penpot-design-system" - :name "Design system example" - :file-uri "https://github.com/penpot/penpot-files/raw/refs/heads/main/Penpot%20-%20Design%20System%20v2.1.penpot"} {:id "tutorial-for-beginners" :name "Tutorial for beginners" :file-uri "https://github.com/penpot/penpot-files/raw/main/tutorial-for-beginners.penpot"} diff --git a/backend/resources/app/templates/debug.tmpl b/backend/resources/app/templates/debug.tmpl index 65d3d7614c..1f803140a2 100644 --- a/backend/resources/app/templates/debug.tmpl +++ b/backend/resources/app/templates/debug.tmpl @@ -45,7 +45,41 @@ Debug Main Page +
+ VIRTUAL CLOCK + +

+ CURRENT CLOCK: {{current-clock}} +
+ CURRENT OFFSET: {{current-offset}} +
+ CURRENT TIME: {{current-time}} +

+ +

Examples: 3h, -7h, 24h (allowed suffixes: h, s)

+
+ +
+
+ +
+ +
+ + +
+ + This is a just a security double check for prevent non intentional submits. + +
+ +
+ + +
+
+
diff --git a/backend/scripts/_env b/backend/scripts/_env new file mode 100644 index 0000000000..aba7420c27 --- /dev/null +++ b/backend/scripts/_env @@ -0,0 +1,81 @@ +#!/usr/bin/env bash + + +export PENPOT_MANAGEMENT_API_SHARED_KEY=super-secret-management-api-key +export PENPOT_SECRET_KEY=super-secret-devenv-key +export PENPOT_HOST=devenv + +export PENPOT_FLAGS="\ + $PENPOT_FLAGS \ + enable-login-with-ldap \ + enable-login-with-password + enable-login-with-oidc \ + enable-login-with-google \ + enable-login-with-github \ + enable-login-with-gitlab \ + enable-backend-worker \ + enable-backend-asserts \ + disable-feature-fdata-pointer-map \ + enable-feature-fdata-objects-map \ + enable-audit-log \ + enable-transit-readable-response \ + enable-demo-users \ + disable-secure-session-cookies \ + enable-smtp \ + enable-prepl-server \ + enable-urepl-server \ + enable-rpc-climit \ + enable-rpc-rlimit \ + enable-quotes \ + enable-soft-rpc-rlimit \ + enable-auto-file-snapshot \ + enable-webhooks \ + enable-access-tokens \ + disable-tiered-file-data-storage \ + enable-file-validation \ + enable-file-schema-validation \ + enable-redis-cache \ + enable-subscriptions"; + +# Default deletion delay for devenv +export PENPOT_DELETION_DELAY="24h" + +# Setup default upload media file size to 100MiB +export PENPOT_MEDIA_MAX_FILE_SIZE=104857600 + +# Setup default multipart upload size to 300MiB +export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=314572800 + +export AWS_ACCESS_KEY_ID=penpot-devenv +export AWS_SECRET_ACCESS_KEY=penpot-devenv +export PENPOT_OBJECTS_STORAGE_BACKEND=s3 +export PENPOT_OBJECTS_STORAGE_S3_ENDPOINT=http://minio:9000 +export PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot + +export JAVA_OPTS="\ + -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \ + -Djdk.attach.allowAttachSelf \ + -Dlog4j2.configurationFile=log4j2-devenv.xml \ + -Djdk.tracePinnedThreads=full \ + -Dim4java.useV7=true \ + -XX:+UnlockExperimentalVMOptions \ + -XX:+UseShenandoahGC \ + -XX:+UseCompactObjectHeaders \ + -XX:ShenandoahGCMode=generational \ + -XX:-OmitStackTraceInFastThrow \ + --sun-misc-unsafe-memory-access=allow \ + --enable-preview \ + --enable-native-access=ALL-UNNAMED"; + +function setup_minio() { + # Initialize MINIO config + mc alias set penpot-s3/ http://minio:9000 minioadmin minioadmin -q + mc admin user add penpot-s3 penpot-devenv penpot-devenv -q + mc admin user info penpot-s3 penpot-devenv |grep -F -q "readwrite" + if [ "$?" = "1" ]; then + mc admin policy attach penpot-s3 readwrite --user=penpot-devenv -q + fi + mc mb penpot-s3/penpot -p -q +} + + diff --git a/backend/scripts/repl b/backend/scripts/repl index c8daf5f051..2229d69716 100755 --- a/backend/scripts/repl +++ b/backend/scripts/repl @@ -1,112 +1,13 @@ #!/usr/bin/env bash -export PENPOT_SECRET_KEY=super-secret-devenv-key -export PENPOT_HOST=devenv -export PENPOT_FLAGS="\ - $PENPOT_FLAGS \ - enable-login-with-ldap \ - enable-login-with-password - enable-login-with-oidc \ - enable-login-with-google \ - enable-login-with-github \ - enable-login-with-gitlab \ - enable-backend-worker \ - enable-backend-asserts \ - disable-feature-fdata-pointer-map \ - enable-feature-fdata-objects-map \ - enable-audit-log \ - enable-transit-readable-response \ - enable-demo-users \ - disable-secure-session-cookies \ - enable-smtp \ - enable-prepl-server \ - enable-urepl-server \ - enable-rpc-climit \ - enable-rpc-rlimit \ - enable-quotes \ - enable-soft-rpc-rlimit \ - enable-auto-file-snapshot \ - enable-webhooks \ - enable-access-tokens \ - disable-tiered-file-data-storage \ - enable-file-validation \ - enable-file-schema-validation \ - enable-subscriptions \ - disable-subscriptions-old"; - -# Default deletion delay for devenv -export PENPOT_DELETION_DELAY="24h" - -# Setup default upload media file size to 100MiB -export PENPOT_MEDIA_MAX_FILE_SIZE=104857600 - -# Setup default multipart upload size to 300MiB -export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=314572800 - -# export PENPOT_DATABASE_URI="postgresql://172.17.0.1:5432/penpot" -# export PENPOT_DATABASE_USERNAME="penpot" -# export PENPOT_DATABASE_PASSWORD="penpot" -# export PENPOT_DATABASE_READONLY=true - -# export PENPOT_DATABASE_URI="postgresql://172.17.0.1:5432/penpot_pre" -# export PENPOT_DATABASE_USERNAME="penpot_pre" -# export PENPOT_DATABASE_PASSWORD="penpot_pre" - -# export PENPOT_LOGGERS_LOKI_URI="http://172.17.0.1:3100/loki/api/v1/push" -# export PENPOT_AUDIT_LOG_ARCHIVE_URI="http://localhost:6070/api/audit" +SCRIPT_DIR=$(dirname $0); +source $SCRIPT_DIR/_env; # Initialize MINIO config -mc alias set penpot-s3/ http://minio:9000 minioadmin minioadmin -q -mc admin user add penpot-s3 penpot-devenv penpot-devenv -q -mc admin user info penpot-s3 penpot-devenv |grep -F -q "readwrite" -if [ "$?" = "1" ]; then - mc admin policy attach penpot-s3 readwrite --user=penpot-devenv -q -fi -mc mb penpot-s3/penpot -p -q - -export AWS_ACCESS_KEY_ID=penpot-devenv -export AWS_SECRET_ACCESS_KEY=penpot-devenv - -export PENPOT_OBJECTS_STORAGE_BACKEND=s3 -export PENPOT_OBJECTS_STORAGE_S3_ENDPOINT=http://minio:9000 -export PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot -export PENPOT_OBJECTS_STORAGE_FS_DIRECTORY="assets" - -export JAVA_OPTS="\ - -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \ - -Djdk.attach.allowAttachSelf \ - -Dlog4j2.configurationFile=log4j2-devenv-repl.xml \ - -Djdk.tracePinnedThreads=full \ - -Dim4java.useV7=true \ - -XX:+EnableDynamicAgentLoading \ - -XX:-OmitStackTraceInFastThrow \ - -XX:+UnlockDiagnosticVMOptions \ - -XX:+DebugNonSafepoints \ - --sun-misc-unsafe-memory-access=allow \ - --enable-preview \ - --enable-native-access=ALL-UNNAMED"; +setup_minio; +export JAVA_OPTS="$JAVA_OPTS -Dlog4j2.configurationFile=log4j2-devenv-repl.xml" export OPTIONS="-A:jmx-remote -A:dev" - -# Setup HEAP -# export OPTIONS="$OPTIONS -J-Xms50m -J-Xmx1024m" -# export OPTIONS="$OPTIONS -J-Xms1100m -J-Xmx1100m -J-XX:+AlwaysPreTouch" - -# Increase virtual thread pool size -# export OPTIONS="$OPTIONS -J-Djdk.virtualThreadScheduler.parallelism=16" - -# Disable C2 Compiler -# export OPTIONS="$OPTIONS -J-XX:TieredStopAtLevel=1" - -# Disable all compilers -# export OPTIONS="$OPTIONS -J-Xint" - -# Setup GC -# export OPTIONS="$OPTIONS -J-XX:+UseG1GC" - -# Setup GC -# export OPTIONS="$OPTIONS -J-XX:+UseZGC" - export OPTIONS_EVAL="nil" # export OPTIONS_EVAL="(set! *warn-on-reflection* true)" diff --git a/backend/scripts/repl-test b/backend/scripts/repl-test deleted file mode 100755 index 2ba1acdbfd..0000000000 --- a/backend/scripts/repl-test +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -source /home/penpot/environ -export PENPOT_FLAGS="$PENPOT_FLAGS disable-backend-worker" - -export OPTIONS=" - -A:jmx-remote -A:dev \ - -J-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \ - -J-Djdk.attach.allowAttachSelf \ - -J-Dlog4j2.configurationFile=log4j2-experiments.xml \ - -J-XX:-OmitStackTraceInFastThrow \ - -J-XX:+UnlockDiagnosticVMOptions \ - -J-XX:+DebugNonSafepoints \ - -J-Djdk.tracePinnedThreads=full \ - -J-XX:+UseTransparentHugePages \ - -J-XX:ReservedCodeCacheSize=1g \ - -J-Dpolyglot.engine.WarnInterpreterOnly=false \ - -J--enable-preview"; - -# Setup HEAP -export OPTIONS="$OPTIONS -J-Xms320g -J-Xmx320g -J-XX:+AlwaysPreTouch" - -export PENPOT_HTTP_SERVER_IO_THREADS=2 -export PENPOT_HTTP_SERVER_WORKER_THREADS=2 - -# Increase virtual thread pool size -# export OPTIONS="$OPTIONS -J-Djdk.virtualThreadScheduler.parallelism=16" - -# Disable C2 Compiler -# export OPTIONS="$OPTIONS -J-XX:TieredStopAtLevel=1" - -# Disable all compilers -# export OPTIONS="$OPTIONS -J-Xint" - -# Setup GC -export OPTIONS="$OPTIONS -J-XX:+UseG1GC -J-Xlog:gc:logs/gc.log" - -# Setup GC -#export OPTIONS="$OPTIONS -J-XX:+UseZGC -J-XX:+ZGenerational -J-Xlog:gc:logs/gc.log" - -# Enable ImageMagick v7.x support -# export OPTIONS="-J-Dim4java.useV7=true $OPTIONS"; - -export OPTIONS_EVAL="nil" -# export OPTIONS_EVAL="(set! *warn-on-reflection* true)" - -set -ex -exec clojure $OPTIONS -M -e "$OPTIONS_EVAL" -m rebel-readline.main diff --git a/backend/scripts/run b/backend/scripts/run index 3d003af3a6..f48d0d060f 100755 --- a/backend/scripts/run +++ b/backend/scripts/run @@ -1,44 +1,13 @@ #!/usr/bin/env bash -export PENPOT_SECRET_KEY=super-secret-devenv-key -export PENPOT_HOST=devenv -export PENPOT_FLAGS="\ - $PENPOT_FLAGS \ - enable-backend-asserts \ - enable-feature-fdata-pointer-map \ - enable-feature-fdata-objects-map \ - enable-file-snapshot \ - enable-tiered-file-data-storage"; +SCRIPT_DIR=$(dirname $0); -export JAVA_OPTS=" - -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \ - -Djdk.attach.allowAttachSelf \ - -Dlog4j2.configurationFile=log4j2-devenv.xml \ - -XX:+EnableDynamicAgentLoading \ - -XX:-OmitStackTraceInFastThrow \ - -XX:+UnlockDiagnosticVMOptions \ - -XX:+DebugNonSafepoints"; - -export CLOJURE_OPTIONS="-A:dev" - - -# Default deletion delay for devenv -export PENPOT_DELETION_DELAY="24h" - -# Setup default upload media file size to 100MiB -export PENPOT_MEDIA_MAX_FILE_SIZE=104857600 - -# Setup default multipart upload size to 300MiB -export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=314572800 - -export AWS_ACCESS_KEY_ID=penpot-devenv -export AWS_SECRET_ACCESS_KEY=penpot-devenv -export PENPOT_OBJECTS_STORAGE_BACKEND=s3 -export PENPOT_OBJECTS_STORAGE_S3_ENDPOINT=http://minio:9000 -export PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot +source $SCRIPT_DIR/_env; +export OPTIONS="-A:dev" entrypoint=${1:-app.main}; + shift 1; set -ex -clojure $CLOJURE_OPTIONS -A:dev -M -m $entrypoint "$@"; +exec clojure $OPTIONS -A:dev -M -m $entrypoint "$@"; diff --git a/backend/scripts/start-dev b/backend/scripts/start-dev index b5050e4e82..eaa4ebca70 100755 --- a/backend/scripts/start-dev +++ b/backend/scripts/start-dev @@ -1,70 +1,11 @@ #!/usr/bin/env bash -export PENPOT_SECRET_KEY=super-secret-devenv-key -export PENPOT_HOST=devenv -export PENPOT_FLAGS="\ - $PENPOT_FLAGS \ - enable-prepl-server \ - enable-urepl-server \ - enable-nrepl-server \ - enable-webhooks \ - enable-backend-asserts \ - enable-audit-log \ - enable-login-with-ldap \ - enable-transit-readable-response \ - enable-demo-users \ - disable-feature-fdata-pointer-map \ - enable-feature-fdata-objects-map \ - disable-secure-session-cookies \ - enable-rpc-climit \ - enable-smtp \ - enable-quotes \ - enable-file-snapshot \ - enable-access-tokens \ - disable-tiered-file-data-storage \ - enable-file-validation \ - enable-file-schema-validation \ - enable-subscriptions \ - disable-subscriptions-old"; - -# Default deletion delay for devenv -export PENPOT_DELETION_DELAY="24h" - -# Setup default upload media file size to 100MiB -export PENPOT_MEDIA_MAX_FILE_SIZE=104857600 - -# Setup default multipart upload size to 300MiB -export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=314572800 +SCRIPT_DIR=$(dirname $0); +source $SCRIPT_DIR/_env; # Initialize MINIO config -mc alias set penpot-s3/ http://minio:9000 minioadmin minioadmin -q -mc admin user add penpot-s3 penpot-devenv penpot-devenv -q -mc admin user info penpot-s3 penpot-devenv |grep -F -q "readwrite" -if [ "$?" = "1" ]; then - mc admin policy attach penpot-s3 readwrite --user=penpot-devenv -q -fi -mc mb penpot-s3/penpot -p -q - -export AWS_ACCESS_KEY_ID=penpot-devenv -export AWS_SECRET_ACCESS_KEY=penpot-devenv -export PENPOT_OBJECTS_STORAGE_BACKEND=s3 -export PENPOT_OBJECTS_STORAGE_S3_ENDPOINT=http://minio:9000 -export PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot - -entrypoint=${1:-app.main}; - -export JAVA_OPTS="\ - -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \ - -Djdk.attach.allowAttachSelf \ - -Dlog4j2.configurationFile=log4j2-devenv.xml \ - -Djdk.tracePinnedThreads=full \ - -Dim4java.useV7=true \ - -XX:-OmitStackTraceInFastThrow \ - --sun-misc-unsafe-memory-access=allow \ - --enable-preview \ - --enable-native-access=ALL-UNNAMED"; - -export OPTIONS="-A:jmx-remote -A:dev" +setup_minio; +shift 1; set -ex -clojure $OPTIONS -M -m $entrypoint; +exec clojure -A:jmx-remote -A:dev -M -m app.main "$@"; diff --git a/backend/src/app/auth/oidc.clj b/backend/src/app/auth/oidc.clj index 1651517083..9f5de73957 100644 --- a/backend/src/app/auth/oidc.clj +++ b/backend/src/app/auth/oidc.clj @@ -434,10 +434,10 @@ (sm/validator schema:info)) (defn- get-info - [{:keys [::provider ::setup/props] :as cfg} {:keys [params] :as request}] + [{:keys [::provider] :as cfg} {:keys [params] :as request}] (let [state (get params :state) code (get params :code) - state (tokens/verify props {:token state :iss :oauth}) + state (tokens/verify cfg {:token state :iss :oauth}) tdata (fetch-access-token cfg code) info (case (cf/get :oidc-user-info-source) :token (get-user-info cfg tdata) @@ -516,7 +516,7 @@ :iss :prepared-register :exp (ct/in-future {:hours 48})) - params {:token (tokens/generate (::setup/props cfg) info) + params {:token (tokens/generate cfg info) :provider (:provider (:path-params request)) :fullname (:fullname info)} params (d/without-nils params)] @@ -569,7 +569,7 @@ :else (let [sxf (session/create-fn cfg (:id profile)) token (or (:invitation-token info) - (tokens/generate (::setup/props cfg) + (tokens/generate cfg {:iss :auth :exp (ct/in-future "15m") :profile-id (:id profile)})) @@ -620,8 +620,7 @@ :external-session-id esid :props props :exp (ct/in-future "4h")} - state (tokens/generate (::setup/props cfg) - (d/without-nils params)) + state (tokens/generate cfg (d/without-nils params)) uri (build-auth-uri cfg state)] {::yres/status 200 ::yres/body {:redirect-uri uri}})) diff --git a/backend/src/app/binfile/common.clj b/backend/src/app/binfile/common.clj index 6299ab9179..1f6ab99cf2 100644 --- a/backend/src/app/binfile/common.clj +++ b/backend/src/app/binfile/common.clj @@ -34,8 +34,7 @@ [clojure.set :as set] [cuerdas.core :as str] [datoteka.fs :as fs] - [datoteka.io :as io] - [promesa.exec :as px])) + [datoteka.io :as io])) (set! *warn-on-reflection* true) @@ -142,13 +141,11 @@ ([index coll attr] (reduce #(index-object %1 %2 attr) index coll))) -(defn decode-row - [{:keys [data changes features] :as row}] +(defn- decode-row-features + [{:keys [features] :as row}] (when row (cond-> row - features (assoc :features (db/decode-pgarray features #{})) - changes (assoc :changes (blob/decode changes)) - data (assoc :data (blob/decode data))))) + (db/pgarray? features) (assoc :features (db/decode-pgarray features #{}))))) (def sql:get-minimal-file "SELECT f.id, @@ -162,23 +159,158 @@ [cfg id & {:as opts}] (db/get-with-sql cfg [sql:get-minimal-file id] opts)) -(defn decode-file - "A general purpose file decoding function that resolves all external - pointers, run migrations and return plain vanilla file map" - [cfg {:keys [id] :as file} & {:keys [migrate?] :or {migrate? true}}] - (binding [pmap/*load-fn* (partial fdata/load-pointer cfg id)] - (let [file (->> file - (fmigr/resolve-applied-migrations cfg) - (fdata/resolve-file-data cfg)) - libs (delay (get-resolved-file-libraries cfg file))] +(def sql:files-with-data + "SELECT f.id, + f.project_id, + f.created_at, + f.modified_at, + f.deleted_at, + f.name, + f.is_shared, + f.has_media_trimmed, + f.revn, + f.data AS legacy_data, + f.ignore_sync_until, + f.comment_thread_seqn, + f.features, + f.version, + f.vern, + p.team_id, + coalesce(fd.backend, 'legacy-db') AS backend, + fd.metadata AS metadata, + fd.data AS data + FROM file AS f + LEFT JOIN file_data AS fd ON (fd.file_id = f.id AND fd.id = f.id) + INNER JOIN project AS p ON (p.id = f.project_id)") - (-> file - (update :features db/decode-pgarray #{}) - (update :data blob/decode) - (update :data fdata/process-pointers deref) - (update :data fdata/process-objects (partial into {})) - (update :data assoc :id id) - (cond-> migrate? (fmg/migrate-file libs)))))) +(def sql:get-file + (str sql:files-with-data " WHERE f.id = ?")) + +(def sql:get-file-without-data + (str "WITH files AS (" sql:files-with-data ")" + "SELECT f.id, + f.project_id, + f.created_at, + f.modified_at, + f.deleted_at, + f.name, + f.is_shared, + f.has_media_trimmed, + f.revn, + f.ignore_sync_until, + f.comment_thread_seqn, + f.features, + f.version, + f.vern, + f.team_id + FROM files AS f + WHERE f.id = ?")) + +(defn- migrate-file + [{:keys [::db/conn] :as cfg} {:keys [read-only?]} {:keys [id] :as file}] + (binding [pmap/*load-fn* (partial fdata/load-pointer cfg id) + pmap/*tracked* (pmap/create-tracked)] + (let [libs (delay (get-resolved-file-libraries cfg file)) + ;; For avoid unnecesary overhead of creating multiple + ;; pointers and handly internally with objects map in their + ;; worst case (when probably all shapes and all pointers + ;; will be readed in any case), we just realize/resolve them + ;; before applying the migration to the file. + file (-> (fdata/realize cfg file) + (fmg/migrate-file libs))] + + (if (or read-only? (db/read-only? conn)) + file + (do ;; When file is migrated, we break the rule of no + ;; perform mutations on get operations and update the + ;; file with all migrations applied + (update-file! cfg file) + (fmigr/resolve-applied-migrations cfg file)))))) + +(defn- get-file* + [{:keys [::db/conn] :as cfg} id + {:keys [migrate? + realize? + decode? + skip-locked? + include-deleted? + load-data? + throw-if-not-exists? + lock-for-update? + lock-for-share?] + :or {lock-for-update? false + lock-for-share? false + load-data? true + migrate? true + decode? true + include-deleted? false + throw-if-not-exists? true + realize? false} + :as options}] + + (assert (db/connection? conn) "expected cfg with valid connection") + (when (and (not load-data?) + (or lock-for-share? lock-for-share? skip-locked?)) + (throw (IllegalArgumentException. "locking is incompatible when `load-data?` is false"))) + + (let [sql + (if load-data? + sql:get-file + sql:get-file-without-data) + + sql + (cond + lock-for-update? + (str sql " FOR UPDATE of f") + + lock-for-share? + (str sql " FOR SHARE of f") + + :else + sql) + + sql + (if skip-locked? + (str sql " SKIP LOCKED") + sql) + + file + (db/get-with-sql conn [sql id] + {::db/throw-if-not-exists false + ::db/remove-deleted (not include-deleted?)}) + + file + (-> file + (d/update-when :features db/decode-pgarray #{}) + (d/update-when :metadata fdata/decode-metadata))] + + (if file + (if load-data? + (let [file + (->> file + (fmigr/resolve-applied-migrations cfg) + (fdata/resolve-file-data cfg)) + + will-migrate? + (and migrate? (fmg/need-migration? file))] + + (if decode? + (cond->> (fdata/decode-file-data cfg file) + (and realize? (not will-migrate?)) + (fdata/realize cfg) + + will-migrate? + (migrate-file cfg options)) + + file)) + file) + + (when-not (or skip-locked? (not throw-if-not-exists?)) + (ex/raise :type :not-found + :code :object-not-found + :hint "database object not found" + :table :file + :file-id id))))) (defn get-file "Get file, resolve all features and apply migrations. @@ -187,10 +319,7 @@ operations on file, because it removes the ovehead of lazy fetching and decoding." [cfg file-id & {:as opts}] - (db/run! cfg (fn [{:keys [::db/conn] :as cfg}] - (when-let [row (db/get* conn :file {:id file-id} - (assoc opts ::db/remove-deleted false))] - (decode-file cfg row opts))))) + (db/run! cfg get-file* file-id opts)) (defn clean-file-features [file] @@ -214,12 +343,12 @@ (let [conn (db/get-connection cfg) ids (db/create-array conn "uuid" ids)] (->> (db/exec! conn [sql:get-teams ids]) - (map decode-row)))) + (map decode-row-features)))) (defn get-team [cfg team-id] (-> (db/get cfg :team {:id team-id}) - (decode-row))) + (decode-row-features))) (defn get-fonts [cfg team-id] @@ -311,7 +440,6 @@ (do (l/trc :hint "lookup index" :file-id (str file-id) - :snap-id (str (:snapshot-id file)) :id (str id) :result (str (get mobj :id))) (get mobj :id)) @@ -328,7 +456,6 @@ (doseq [[old-id item] missing-index] (l/dbg :hint "create missing references" :file-id (str file-id) - :snap-id (str (:snapshot-id file)) :old-id (str old-id) :id (str (:id item))) (db/insert! conn :file-media-object item @@ -339,12 +466,16 @@ (def sql:get-file-media "SELECT * FROM file_media_object WHERE id = ANY(?)") +(defn get-file-media* + [{:keys [::db/conn] :as cfg} {:keys [data id] :as file}] + (let [used (cfh/collect-used-media data) + used (db/create-array conn "uuid" used)] + (->> (db/exec! conn [sql:get-file-media used]) + (mapv (fn [row] (assoc row :file-id id)))))) + (defn get-file-media - [cfg {:keys [data] :as file}] - (db/run! cfg (fn [{:keys [::db/conn]}] - (let [used (cfh/collect-used-media data) - used (db/create-array conn "uuid" used)] - (db/exec! conn [sql:get-file-media used]))))) + [cfg file] + (db/run! cfg get-file-media* file)) (def ^:private sql:get-team-files-ids "SELECT f.id FROM file AS f @@ -475,8 +606,8 @@ ;; all of them, not only the applied (vary-meta dissoc ::fmg/migrated)))) -(defn encode-file - [{:keys [::wrk/executor] :as cfg} {:keys [id features] :as file}] +(defn- encode-file + [cfg {:keys [id features] :as file}] (let [file (if (and (contains? features "fdata/objects-map") (:data file)) (fdata/enable-objects-map file) @@ -493,18 +624,33 @@ (-> file (d/update-when :features into-array) - (d/update-when :data (fn [data] (px/invoke! executor #(blob/encode data))))))) + (d/update-when :data blob/encode)))) (defn- file->params [file] (-> (select-keys file file-attrs) + (assoc :data nil) (dissoc :team-id) (dissoc :migrations))) +(defn- file->file-data-params + [{:keys [id] :as file} & {:as opts}] + (let [created-at (or (:created-at file) (ct/now)) + modified-at (or (:modified-at file) created-at)] + (d/without-nils + {:id id + :type "main" + :file-id id + :data (:data file) + :metadata (:metadata file) + :created-at created-at + :modified-at modified-at}))) + (defn insert-file! "Insert a new file into the database table. Expectes a not-encoded file. Returns nil." [{:keys [::db/conn] :as cfg} file & {:as opts}] + (db/exec-one! conn ["SET CONSTRAINTS ALL DEFERRED"]) (when (:migrations file) (fmigr/upsert-migrations! conn file)) @@ -512,35 +658,43 @@ (let [file (encode-file cfg file)] (db/insert! conn :file (file->params file) - {::db/return-keys false}) + (assoc opts ::db/return-keys false)) + + (->> (file->file-data-params file) + (fdata/upsert! cfg)) + nil)) (defn update-file! "Update an existing file on the database. Expects not encoded file." [{:keys [::db/conn] :as cfg} {:keys [id] :as file} & {:as opts}] - (if (::reset-migrations opts false) + (if (::reset-migrations? opts false) (fmigr/reset-migrations! conn file) (fmigr/upsert-migrations! conn file)) (let [file (encode-file cfg file) - params - (file->params (dissoc file :id))] + file-params + (file->params (dissoc file :id)) - (db/update! conn :file params + file-data-params + (file->file-data-params file)] + + (db/update! conn :file file-params {:id id} {::db/return-keys false}) + (fdata/upsert! cfg file-data-params) nil)) (defn save-file! "Applies all the final validations and perist the file, binfile specific, should not be used outside of binfile domain. - Returns nil" [{:keys [::timestamp] :as cfg} file & {:as opts}] + (assert (ct/inst? timestamp) "expected valid timestamp") (let [file (-> file @@ -565,7 +719,7 @@ (l/error :hint "file schema validation error" :cause result)))) (if (::overwrite cfg) - (update-file! cfg file (assoc opts ::reset-migrations true)) + (update-file! cfg file (assoc opts ::reset-migrations? true)) (insert-file! cfg file opts)))) (def ^:private sql:get-file-libraries @@ -595,7 +749,7 @@ l.version FROM libs AS l INNER JOIN project AS p ON (p.id = l.project_id) - WHERE l.deleted_at IS NULL OR l.deleted_at > now();") + WHERE l.deleted_at IS NULL;") (defn get-file-libraries [conn file-id] @@ -604,7 +758,7 @@ ;; FIXME: :is-indirect set to false to all rows looks ;; completly useless (map #(assoc % :is-indirect false)) - (map decode-row)) + (map decode-row-features)) (db/exec! conn [sql:get-file-libraries file-id]))) (defn get-resolved-file-libraries diff --git a/backend/src/app/binfile/v1.clj b/backend/src/app/binfile/v1.clj index d78b97b3c5..04b390bb99 100644 --- a/backend/src/app/binfile/v1.clj +++ b/backend/src/app/binfile/v1.clj @@ -346,7 +346,7 @@ thumbnails (->> (bfc/get-file-object-thumbnails cfg file-id) (mapv #(dissoc % :file-id))) - file (cond-> (bfc/get-file cfg file-id) + file (cond-> (bfc/get-file cfg file-id :realize? true) detach? (-> (ctf/detach-external-references file-id) (dissoc :libraries)) diff --git a/backend/src/app/binfile/v2.clj b/backend/src/app/binfile/v2.clj index 93cd16c211..c8acf2dc99 100644 --- a/backend/src/app/binfile/v2.clj +++ b/backend/src/app/binfile/v2.clj @@ -153,7 +153,7 @@ (defn- write-file! [cfg file-id] - (let [file (bfc/get-file cfg file-id) + (let [file (bfc/get-file cfg file-id :realize? true) thumbs (bfc/get-file-object-thumbnails cfg file-id) media (bfc/get-file-media cfg file) rels (bfc/get-files-rels cfg #{file-id})] diff --git a/backend/src/app/binfile/v3.clj b/backend/src/app/binfile/v3.clj index cb480d209a..682ddc74de 100644 --- a/backend/src/app/binfile/v3.clj +++ b/backend/src/app/binfile/v3.clj @@ -224,9 +224,11 @@ (throw (IllegalArgumentException. "the `include-libraries` and `embed-assets` are mutally excluding options"))) - (let [detach? (and (not embed-assets) (not include-libraries))] + (let [detach? (and (not embed-assets) (not include-libraries))] (db/tx-run! cfg (fn [cfg] - (cond-> (bfc/get-file cfg file-id {::sql/for-update true}) + (cond-> (bfc/get-file cfg file-id + {:realize? true + :lock-for-update? true}) detach? (-> (ctf/detach-external-references file-id) (dissoc :libraries)) @@ -713,7 +715,7 @@ :plugin-data plugin-data})) (defn- import-file - [{:keys [::bfc/project-id] :as cfg} {file-id :id file-name :name}] + [{:keys [::db/conn ::bfc/project-id] :as cfg} {file-id :id file-name :name}] (let [file-id' (bfc/lookup-index file-id) file (read-file cfg file-id) media (read-file-media cfg file-id) @@ -726,26 +728,48 @@ :version (:version file) ::l/sync? true) - (events/tap :progress {:section :file :name file-name}) + (vswap! bfc/*state* update :index bfc/update-index media :id) - (when media - ;; Update index with media - (l/dbg :hint "update media index" - :file-id (str file-id') - :total (count media) - ::l/sync? true) + (events/tap :progress {:section :media :file-id file-id}) - (vswap! bfc/*state* update :index bfc/update-index (map :id media)) - (vswap! bfc/*state* update :media into media)) + (doseq [item media] + (let [params (-> item + (update :id bfc/lookup-index) + (assoc :file-id file-id') + (d/update-when :media-id bfc/lookup-index) + (d/update-when :thumbnail-id bfc/lookup-index))] - (when thumbnails - (l/dbg :hint "update thumbnails index" - :file-id (str file-id') - :total (count thumbnails) - ::l/sync? true) + (l/dbg :hint "inserting media object" + :file-id (str file-id') + :id (str (:id params)) + :media-id (str (:media-id params)) + :thumbnail-id (str (:thumbnail-id params)) + :old-id (str (:id item)) + ::l/sync? true) - (vswap! bfc/*state* update :index bfc/update-index (map :media-id thumbnails)) - (vswap! bfc/*state* update :thumbnails into thumbnails)) + (db/insert! conn :file-media-object params + ::db/on-conflict-do-nothing? (::bfc/overwrite cfg)))) + + (events/tap :progress {:section :thumbnails :file-id file-id}) + + (doseq [item thumbnails] + (let [media-id (bfc/lookup-index (:media-id item)) + object-id (-> (assoc item :file-id file-id') + (cth/fmt-object-id)) + params {:file-id file-id' + :object-id object-id + :tag (:tag item) + :media-id media-id}] + + (l/dbg :hint "inserting object thumbnail" + :file-id (str file-id') + :media-id (str media-id) + ::l/sync? true) + + (db/insert! conn :file-tagged-object-thumbnail params + ::db/on-conflict-do-nothing? true))) + + (events/tap :progress {:section :file :file-id file-id}) (let [data (-> (read-file-data cfg file-id) (d/without-nils) @@ -794,95 +818,47 @@ entries (keep (match-storage-entry-fn) entries)] (doseq [{:keys [id entry]} entries] - (let [object (->> (read-entry input entry) - (decode-storage-object) - (validate-storage-object))] + (let [object (->> (read-entry input entry) + (decode-storage-object) + (validate-storage-object)) - (when (not= id (:id object)) + ext (cmedia/mtype->extension (:content-type object)) + path (str "objects/" id ext) + content (->> path + (get-zip-entry input) + (zip-entry-storage-content input))] + + (when (not= (:size object) (sto/get-size content)) (ex/raise :type :validation :code :inconsistent-penpot-file - :hint "the penpot file seems corrupt, found unexpected uuid (storage-object-id)" - :expected-id (str id) - :found-id (str (:id object)))) + :hint "found corrupted storage object: size does not match" + :path path + :expected-size (:size object) + :found-size (sto/get-size content))) - (let [ext (cmedia/mtype->extension (:content-type object)) - path (str "objects/" id ext) - content (->> path - (get-zip-entry input) - (zip-entry-storage-content input))] - - (when (not= (:size object) (sto/get-size content)) + (when-let [hash (get object :hash)] + (when (not= hash (sto/get-hash content)) (ex/raise :type :validation :code :inconsistent-penpot-file - :hint "found corrupted storage object: size does not match" + :hint "found corrupted storage object: hash does not match" :path path - :expected-size (:size object) - :found-size (sto/get-size content))) + :expected-hash (:hash object) + :found-hash (sto/get-hash content)))) - (when-let [hash (get object :hash)] - (when (not= hash (sto/get-hash content)) - (ex/raise :type :validation - :code :inconsistent-penpot-file - :hint "found corrupted storage object: hash does not match" - :path path - :expected-hash (:hash object) - :found-hash (sto/get-hash content)))) + (let [params (-> object + (dissoc :id :size) + (assoc ::sto/content content) + (assoc ::sto/deduplicate? true) + (assoc ::sto/touched-at timestamp)) + sobject (sto/put-object! storage params)] - (let [params (-> object - (dissoc :id :size) - (assoc ::sto/content content) - (assoc ::sto/deduplicate? true) - (assoc ::sto/touched-at timestamp)) - sobject (sto/put-object! storage params)] + (l/dbg :hint "persisted storage object" + :id (str (:id sobject)) + :prev-id (str id) + :bucket (:bucket params) + ::l/sync? true) - (l/dbg :hint "persisted storage object" - :id (str (:id sobject)) - :prev-id (str id) - :bucket (:bucket params) - ::l/sync? true) - - (vswap! bfc/*state* update :index assoc id (:id sobject)))))))) - -(defn- import-file-media - [{:keys [::db/conn] :as cfg}] - (events/tap :progress {:section :media}) - - (doseq [item (:media @bfc/*state*)] - (let [params (-> item - (update :id bfc/lookup-index) - (update :file-id bfc/lookup-index) - (d/update-when :media-id bfc/lookup-index) - (d/update-when :thumbnail-id bfc/lookup-index))] - - (l/dbg :hint "inserting file media object" - :old-id (str (:id item)) - :id (str (:id params)) - :file-id (str (:file-id params)) - ::l/sync? true) - - (db/insert! conn :file-media-object params - ::db/on-conflict-do-nothing? (::bfc/overwrite cfg))))) - -(defn- import-file-thumbnails - [{:keys [::db/conn] :as cfg}] - (events/tap :progress {:section :thumbnails}) - (doseq [item (:thumbnails @bfc/*state*)] - (let [file-id (bfc/lookup-index (:file-id item)) - media-id (bfc/lookup-index (:media-id item)) - object-id (-> (assoc item :file-id file-id) - (cth/fmt-object-id)) - params {:file-id file-id - :object-id object-id - :tag (:tag item) - :media-id media-id}] - - (l/dbg :hint "inserting file object thumbnail" - :file-id (str file-id) - :media-id (str media-id) - ::l/sync? true) - - (db/insert! conn :file-tagged-object-thumbnail params - {::db/on-conflict-do-nothing? true})))) + (vswap! bfc/*state* update :index assoc id (:id sobject))))))) (defn- import-files* [{:keys [::manifest] :as cfg}] @@ -890,6 +866,8 @@ (vswap! bfc/*state* update :index bfc/update-index (:files manifest) :id) + (import-storage-objects cfg) + (let [files (get manifest :files) result (reduce (fn [result {:keys [id] :as file}] (let [name' (get file :name) @@ -902,10 +880,6 @@ files)] (import-file-relations cfg) - (import-storage-objects cfg) - (import-file-media cfg) - (import-file-thumbnails cfg) - (bfm/apply-pending-migrations! cfg) result)) @@ -930,9 +904,8 @@ (binding [bfc/*options* cfg bfc/*reference-file* ref-file] - (import-file cfg file) (import-storage-objects cfg) - (import-file-media cfg) + (import-file cfg file) (bfc/invalidate-thumbnails cfg file-id) (bfm/apply-pending-migrations! cfg) diff --git a/backend/src/app/config.clj b/backend/src/app/config.clj index 805608da5f..e5339a25a4 100644 --- a/backend/src/app/config.clj +++ b/backend/src/app/config.clj @@ -52,6 +52,8 @@ :redis-uri "redis://redis/0" + :file-data-backend "legacy-db" + :objects-storage-backend "fs" :objects-storage-fs-directory "assets" @@ -96,7 +98,9 @@ [:http-server-max-body-size {:optional true} ::sm/int] [:http-server-max-multipart-body-size {:optional true} ::sm/int] [:http-server-io-threads {:optional true} ::sm/int] - [:http-server-worker-threads {:optional true} ::sm/int] + [:http-server-max-worker-threads {:optional true} ::sm/int] + + [:management-api-shared-key {:optional true} :string] [:telemetry-uri {:optional true} :string] [:telemetry-with-taiga {:optional true} ::sm/boolean] ;; DELETE @@ -105,7 +109,8 @@ [:auto-file-snapshot-timeout {:optional true} ::ct/duration] [:media-max-file-size {:optional true} ::sm/int] - [:deletion-delay {:optional true} ::ct/duration] ;; REVIEW + [:deletion-delay {:optional true} ::ct/duration] + [:file-clean-delay {:optional true} ::ct/duration] [:telemetry-enabled {:optional true} ::sm/boolean] [:default-blob-version {:optional true} ::sm/int] [:allow-demo-users {:optional true} ::sm/boolean] @@ -146,7 +151,6 @@ [:quotes-team-access-requests-per-team {:optional true} ::sm/int] [:quotes-team-access-requests-per-requester {:optional true} ::sm/int] - [:auth-data-cookie-domain {:optional true} :string] [:auth-token-cookie-name {:optional true} :string] [:auth-token-cookie-max-age {:optional true} ::ct/duration] @@ -210,24 +214,27 @@ [:prepl-host {:optional true} :string] [:prepl-port {:optional true} ::sm/int] + [:file-data-backend {:optional true} [:enum "db" "legacy-db" "storage"]] + [:media-directory {:optional true} :string] ;; REVIEW [:media-uri {:optional true} :string] [:assets-path {:optional true} :string] - ;; Legacy, will be removed in 2.5 + [:netty-io-threads {:optional true} ::sm/int] + [:executor-threads {:optional true} ::sm/int] + + ;; DEPRECATED [:assets-storage-backend {:optional true} :keyword] [:storage-assets-fs-directory {:optional true} :string] [:storage-assets-s3-bucket {:optional true} :string] [:storage-assets-s3-region {:optional true} :keyword] [:storage-assets-s3-endpoint {:optional true} ::sm/uri] - [:storage-assets-s3-io-threads {:optional true} ::sm/int] [:objects-storage-backend {:optional true} :keyword] [:objects-storage-fs-directory {:optional true} :string] [:objects-storage-s3-bucket {:optional true} :string] [:objects-storage-s3-region {:optional true} :keyword] - [:objects-storage-s3-endpoint {:optional true} ::sm/uri] - [:objects-storage-s3-io-threads {:optional true} ::sm/int]])) + [:objects-storage-s3-endpoint {:optional true} ::sm/uri]])) (defn- parse-flags [config] @@ -300,6 +307,11 @@ (or (c/get config :deletion-delay) (ct/duration {:days 7}))) +(defn get-file-clean-delay + [] + (or (c/get config :file-clean-delay) + (ct/duration {:days 2}))) + (defn get "A configuration getter. Helps code be more testable." ([key] diff --git a/backend/src/app/db.clj b/backend/src/app/db.clj index 4bf4c6a91b..4f97f35093 100644 --- a/backend/src/app/db.clj +++ b/backend/src/app/db.clj @@ -298,7 +298,7 @@ (defn insert! "A helper that builds an insert sql statement and executes it. By default returns the inserted row with all the field; you can delimit - the returned columns with the `::columns` option." + the returned columns with the `::sql/columns` option." [ds table params & {:as opts}] (let [conn (get-connectable ds) sql (sql/insert table params opts) @@ -379,9 +379,7 @@ (defn is-row-deleted? [{:keys [deleted-at]}] - (and (ct/inst? deleted-at) - (< (inst-ms deleted-at) - (inst-ms (ct/now))))) + (some? deleted-at)) (defn get* "Retrieve a single row from database that matches a simple filters. Do @@ -406,15 +404,15 @@ :hint "database object not found")) row)) - (defn get-with-sql [ds sql & {:as opts}] - (let [rows (cond->> (exec! ds sql opts) - (::remove-deleted opts true) - (remove is-row-deleted?) + (let [rows + (cond->> (exec! ds sql opts) + (::remove-deleted opts true) + (remove is-row-deleted?) - :always - (not-empty))] + :always + (not-empty))] (when (and (not rows) (::throw-if-not-exists opts true)) (ex/raise :type :not-found @@ -423,7 +421,6 @@ (first rows))) - (def ^:private default-plan-opts (-> default-opts (assoc :fetch-size 1000) @@ -578,10 +575,10 @@ [system f & params] (cond (connection? system) - (run! {::conn system} f) + (apply run! {::conn system} f params) (pool? system) - (run! {::pool system} f) + (apply run! {::pool system} f params) (::conn system) (apply f system params) diff --git a/backend/src/app/features/fdata.clj b/backend/src/app/features/fdata.clj index 50ebb10b57..16afb9fd1a 100644 --- a/backend/src/app/features/fdata.clj +++ b/backend/src/app/features/fdata.clj @@ -9,32 +9,46 @@ (:require [app.common.data :as d] [app.common.exceptions :as ex] - [app.common.files.helpers :as cfh] - [app.common.files.migrations :as fmg] [app.common.logging :as l] + [app.common.schema :as sm] + [app.common.time :as ct] [app.common.types.objects-map :as omap] - [app.common.types.path :as path] + [app.config :as cf] [app.db :as db] [app.db.sql :as-alias sql] [app.storage :as sto] [app.util.blob :as blob] [app.util.objects-map :as omap.legacy] - [app.util.pointer-map :as pmap] - [app.worker :as wrk] - [promesa.exec :as px])) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; OFFLOAD -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defn offloaded? - [file] - (= "objects-storage" (:data-backend file))) + [app.util.pointer-map :as pmap])) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; OBJECTS-MAP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defn process-objects + "Apply a function to all objects-map on the file. Usualy used for convert + the objects-map instances to plain maps" + [fdata update-fn] + (if (contains? fdata :pages-index) + (update fdata :pages-index d/update-vals + (fn [page] + (update page :objects + (fn [objects] + (if (or (omap/objects-map? objects) + (omap.legacy/objects-map? objects)) + (update-fn objects) + objects))))) + fdata)) + + +(defn realize-objects + "Process a file and remove all instances of objects map realizing them + to a plain data. Used in operation where is more efficient have the + whole file loaded in memory or we going to persist it in an + alterantive storage." + [_cfg file] + (update file :data process-objects (partial into {}))) + (defn enable-objects-map [file & _opts] (let [update-page @@ -63,51 +77,194 @@ (update :data update-data) (update :features disj "fdata/objects-map")))) -(defn process-objects - "Apply a function to all objects-map on the file. Usualy used for convert - the objects-map instances to plain maps" - [fdata update-fn] - (if (contains? fdata :pages-index) - (update fdata :pages-index d/update-vals - (fn [page] - (update page :objects - (fn [objects] - (if (or (omap/objects-map? objects) - (omap.legacy/objects-map? objects)) - (update-fn objects) - objects))))) - fdata)) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; STORAGE +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defmulti resolve-file-data + (fn [_cfg file] (get file :backend "legacy-db"))) + +(defmethod resolve-file-data "legacy-db" + [_cfg {:keys [legacy-data] :as file}] + (-> file + (assoc :data legacy-data) + (dissoc :legacy-data))) + +(defmethod resolve-file-data "db" + [_cfg file] + (dissoc file :legacy-data)) + +(defmethod resolve-file-data "storage" + [cfg {:keys [metadata] :as file}] + (let [storage (sto/resolve cfg ::db/reuse-conn true) + ref-id (:storage-ref-id metadata) + data (->> (sto/get-object storage ref-id) + (sto/get-object-bytes storage))] + (-> file + (assoc :data data) + (dissoc :legacy-data)))) + +(defn decode-file-data + [_cfg {:keys [data] :as file}] + (cond-> file + (bytes? data) + (assoc :data (blob/decode data)))) + +(def ^:private sql:insert-file-data + "INSERT INTO file_data (file_id, id, created_at, modified_at, deleted_at, + type, backend, metadata, data) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)") + +(def ^:private sql:upsert-file-data + (str sql:insert-file-data + " ON CONFLICT (file_id, id) + DO UPDATE SET modified_at=?, + deleted_at=?, + backend=?, + metadata=?, + data=?")) + +(defn- upsert-in-database + [cfg {:keys [id file-id created-at modified-at deleted-at type backend data metadata]}] + (let [created-at (or created-at (ct/now)) + metadata (some-> metadata db/json) + modified-at (or modified-at created-at)] + + (db/exec-one! cfg [sql:upsert-file-data + file-id id + created-at + modified-at + deleted-at + type + backend + metadata + data + modified-at + deleted-at + backend + metadata + data]))) + +(defn- handle-persistence + [cfg {:keys [type backend id file-id data] :as params}] + + (cond + (= backend "storage") + (let [storage (sto/resolve cfg) + content (sto/content data) + sobject (sto/put-object! storage + {::sto/content content + ::sto/touch true + :bucket "file-data" + :content-type "application/octet-stream" + :file-id file-id + :id id}) + metadata {:storage-ref-id (:id sobject)} + params (-> params + (assoc :metadata metadata) + (assoc :data nil))] + (upsert-in-database cfg params)) + + (= backend "db") + (->> (dissoc params :metadata) + (upsert-in-database cfg)) + + (= backend "legacy-db") + (cond + (= type "main") + (do + (db/delete! cfg :file-data + {:id id :file-id file-id :type "main"} + {::db/return-keys false}) + (db/update! cfg :file + {:data data} + {:id file-id} + {::db/return-keys false})) + + (= type "snapshot") + (do + (db/delete! cfg :file-data + {:id id :file-id file-id :type "snapshot"} + {::db/return-keys false}) + (db/update! cfg :file-change + {:data data} + {:file-id file-id :id id} + {::db/return-keys false})) + + (= type "fragment") + (upsert-in-database cfg + (-> (dissoc params :metadata) + (assoc :backend "db"))) + + :else + (throw (RuntimeException. "not implemented"))) + + :else + (throw (IllegalArgumentException. + (str "backend '" backend "' not supported"))))) + +(defn process-metadata + [cfg metadata] + (when-let [storage-id (:storage-ref-id metadata)] + (let [storage (sto/resolve cfg ::db/reuse-conn true)] + (sto/touch-object! storage storage-id)))) + +(defn- default-backend + [backend] + (or backend (cf/get :file-data-backend))) + +(def ^:private schema:metadata + [:map {:title "Metadata"} + [:storage-ref-id {:optional true} ::sm/uuid]]) + +(def decode-metadata-with-schema + (sm/decoder schema:metadata sm/json-transformer)) + +(defn decode-metadata + [metadata] + (some-> metadata + (db/decode-json-pgobject) + (decode-metadata-with-schema))) + +(def ^:private schema:update-params + [:map {:closed true} + [:id ::sm/uuid] + [:type [:enum "main" "snapshot" "fragment"]] + [:file-id ::sm/uuid] + [:backend {:optional true} [:enum "db" "legacy-db" "storage"]] + [:metadata {:optional true} [:maybe schema:metadata]] + [:data {:optional true} bytes?] + [:created-at {:optional true} ::ct/inst] + [:modified-at {:optional true} [:maybe ::ct/inst]] + [:deleted-at {:optional true} [:maybe ::ct/inst]]]) + +(def ^:private check-update-params + (sm/check-fn schema:update-params :hint "invalid params received for update")) + +(defn upsert! + "Create or update file data" + [cfg params & {:as opts}] + (let [params (-> (check-update-params params) + (update :backend default-backend))] + + (some->> (:metadata params) + (process-metadata cfg)) + + (-> (handle-persistence cfg params) + (db/get-update-count) + (pos?)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; POINTER-MAP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defn get-file-data - "Get file data given a file instance." - [system file] - (if (offloaded? file) - (let [storage (sto/resolve system ::db/reuse-conn true)] - (->> (sto/get-object storage (:data-ref-id file)) - (sto/get-object-bytes storage))) - (:data file))) - -(defn resolve-file-data - [system file] - (let [data (get-file-data system file)] - (assoc file :data data))) - -(defn decode-file-data - [{:keys [::wrk/executor]} {:keys [data] :as file}] - (cond-> file - (bytes? data) - (assoc :data (px/invoke! executor #(blob/decode data))))) - (defn load-pointer "A database loader pointer helper" - [system file-id id] - (let [fragment (db/get* system :file-data-fragment - {:id id :file-id file-id} - {::sql/columns [:data :data-backend :data-ref-id :id]})] + [cfg file-id id] + (let [fragment (some-> (db/get* cfg :file-data + {:id id :file-id file-id :type "fragment"} + {::sql/columns [:data :backend :id :metadata]}) + (update :metadata decode-metadata))] (l/trc :hint "load pointer" :file-id (str file-id) @@ -121,22 +278,21 @@ :file-id file-id :fragment-id id)) - (let [data (get-file-data system fragment)] - ;; FIXME: conditional thread scheduling for decoding big objects - (blob/decode data)))) + (-> (resolve-file-data cfg fragment) + (get :data) + (blob/decode)))) (defn persist-pointers! "Persist all currently tracked pointer objects" - [system file-id] - (let [conn (db/get-connection system)] - (doseq [[id item] @pmap/*tracked*] - (when (pmap/modified? item) - (l/trc :hint "persist pointer" :file-id (str file-id) :id (str id)) - (let [content (-> item deref blob/encode)] - (db/insert! conn :file-data-fragment - {:id id - :file-id file-id - :data content})))))) + [cfg file-id] + (doseq [[id item] @pmap/*tracked*] + (when (pmap/modified? item) + (l/trc :hint "persist pointer" :file-id (str file-id) :id (str id)) + (let [content (-> item deref blob/encode)] + (upsert! cfg {:id id + :file-id file-id + :type "fragment" + :data content}))))) (defn process-pointers "Apply a function to all pointers on the file. Usuly used for @@ -150,6 +306,14 @@ (d/update-vals update-fn') (update :pages-index d/update-vals update-fn')))) +(defn realize-pointers + "Process a file and remove all instances of pointers realizing them to + a plain data. Used in operation where is more efficient have the + whole file loaded in memory." + [cfg {:keys [id] :as file}] + (binding [pmap/*load-fn* (partial load-pointer cfg id)] + (update file :data process-pointers deref))) + (defn get-used-pointer-ids "Given a file, return all pointer ids used in the data." [fdata] @@ -169,47 +333,12 @@ (update :features conj "fdata/pointer-map"))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; PATH-DATA +;; GENERAL PURPOSE HELPERS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defn enable-path-data - "Enable the fdata/path-data feature on the file." - [file & _opts] - (letfn [(update-object [object] - (if (or (cfh/path-shape? object) - (cfh/bool-shape? object)) - (update object :content path/content) - object)) - - (update-container [container] - (d/update-when container :objects d/update-vals update-object))] - - (-> file - (update :data (fn [data] - (-> data - (update :pages-index d/update-vals update-container) - (d/update-when :components d/update-vals update-container)))) - (update :features conj "fdata/path-data")))) - -(defn disable-path-data - [file & _opts] - (letfn [(update-object [object] - (if (or (cfh/path-shape? object) - (cfh/bool-shape? object)) - (update object :content vec) - object)) - - (update-container [container] - (d/update-when container :objects d/update-vals update-object))] - - (when-let [conn db/*conn*] - (db/delete! conn :file-migration {:file-id (:id file) - :name "0003-convert-path-content"})) - (-> file - (update :data (fn [data] - (-> data - (update :pages-index d/update-vals update-container) - (d/update-when :components d/update-vals update-container)))) - (update :features disj "fdata/path-data") - (update :migrations disj "0003-convert-path-content") - (vary-meta update ::fmg/migrated disj "0003-convert-path-content")))) +(defn realize + "A helper that combines realize-pointers and realize-objects" + [cfg file] + (->> file + (realize-pointers cfg) + (realize-objects cfg))) diff --git a/backend/src/app/features/file_snapshots.clj b/backend/src/app/features/file_snapshots.clj new file mode 100644 index 0000000000..cf40a08a79 --- /dev/null +++ b/backend/src/app/features/file_snapshots.clj @@ -0,0 +1,446 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.features.file-snapshots + (:require + [app.binfile.common :as bfc] + [app.common.data :as d] + [app.common.exceptions :as ex] + [app.common.features :as-alias cfeat] + [app.common.files.migrations :as fmg] + [app.common.logging :as l] + [app.common.schema :as sm] + [app.common.time :as ct] + [app.common.uuid :as uuid] + [app.config :as cf] + [app.db :as db] + [app.db.sql :as-alias sql] + [app.features.fdata :as fdata] + [app.storage :as sto] + [app.util.blob :as blob] + [app.worker :as wrk] + [cuerdas.core :as str])) + +(def sql:snapshots + "SELECT c.id, + c.label, + c.created_at, + c.updated_at AS modified_at, + c.deleted_at, + c.profile_id, + c.created_by, + c.locked_by, + c.revn, + c.features, + c.migrations, + c.version, + c.file_id, + c.data AS legacy_data, + fd.data AS data, + coalesce(fd.backend, 'legacy-db') AS backend, + fd.metadata AS metadata + FROM file_change AS c + LEFT JOIN file_data AS fd ON (fd.file_id = c.file_id + AND fd.id = c.id + AND fd.type = 'snapshot') + WHERE c.label IS NOT NULL") + +(defn- decode-snapshot + [snapshot] + (some-> snapshot + (-> (d/update-when :metadata fdata/decode-metadata) + (d/update-when :migrations db/decode-pgarray []) + (d/update-when :features db/decode-pgarray #{})))) + +(def ^:private sql:get-minimal-file + "SELECT f.id, + f.revn, + f.modified_at, + f.deleted_at, + fd.backend AS backend, + fd.metadata AS metadata + FROM file AS f + LEFT JOIN file_data AS fd ON (fd.file_id = f.id AND fd.id = f.id) + WHERE f.id = ?") + +(defn- get-minimal-file + [cfg id & {:as opts}] + (-> (db/get-with-sql cfg [sql:get-minimal-file id] opts) + (d/update-when :metadata fdata/decode-metadata))) + +(def ^:private sql:get-snapshot-without-data + (str "WITH snapshots AS (" sql:snapshots ")" + "SELECT c.id, + c.label, + c.revn, + c.created_at, + c.modified_at, + c.deleted_at, + c.profile_id, + c.created_by, + c.locked_by, + c.features, + c.metadata, + c.migrations, + c.version, + c.file_id + FROM snapshots AS c + WHERE c.id = ? + AND CASE WHEN c.created_by = 'user' + THEN c.deleted_at IS NULL + WHEN c.created_by = 'system' + THEN c.deleted_at IS NULL OR c.deleted_at >= ?::timestamptz + END")) + +(defn get-minimal-snapshot + [cfg snapshot-id] + (let [now (ct/now)] + (-> (db/get-with-sql cfg [sql:get-snapshot-without-data snapshot-id now] + {::db/remove-deleted false}) + (decode-snapshot)))) + +(def ^:private sql:get-snapshot + (str sql:snapshots + " AND c.file_id = ? + AND c.id = ? + AND CASE WHEN c.created_by = 'user' + THEN (c.deleted_at IS NULL) + WHEN c.created_by = 'system' + THEN (c.deleted_at IS NULL OR c.deleted_at >= ?::timestamptz) + END")) + +(defn- get-snapshot + "Get snapshot with decoded data" + [cfg file-id snapshot-id] + (let [now (ct/now)] + (->> (db/get-with-sql cfg [sql:get-snapshot file-id snapshot-id now] + {::db/remove-deleted false}) + (decode-snapshot) + (fdata/resolve-file-data cfg) + (fdata/decode-file-data cfg)))) + +(def ^:private sql:get-visible-snapshots + (str "WITH " + "snapshots1 AS ( " sql:snapshots ")," + "snapshots2 AS ( + SELECT c.id, + c.label, + c.revn, + c.version, + c.created_at, + c.modified_at, + c.created_by, + c.locked_by, + c.profile_id, + c.deleted_at + FROM snapshots1 AS c + WHERE c.file_id = ? + ), snapshots3 AS ( + (SELECT * FROM snapshots2 + WHERE created_by = 'system' + AND (deleted_at IS NULL OR + deleted_at >= ?::timestamptz) + LIMIT 500) + UNION ALL + (SELECT * FROM snapshots2 + WHERE created_by = 'user' + AND deleted_at IS NULL + LIMIT 500) + ) + SELECT * FROM snapshots3 + ORDER BY created_at DESC")) + +(defn get-visible-snapshots + "Return a list of snapshots fecheable from the API, it has a limited + set of fields and applies big but safe limits over all available + snapshots. It return a ordered vector by the snapshot date of + creation." + [cfg file-id] + (let [now (ct/now)] + (->> (db/exec! cfg [sql:get-visible-snapshots file-id now]) + (mapv decode-snapshot)))) + +(def ^:private schema:decoded-file + [:map {:title "DecodedFile"} + [:id ::sm/uuid] + [:revn :int] + [:vern :int] + [:data :map] + [:version :int] + [:features ::cfeat/features] + [:migrations [::sm/set :string]]]) + +(def ^:private schema:snapshot + [:map {:title "Snapshot"} + [:id ::sm/uuid] + [:revn [::sm/int {:min 0}]] + [:version [::sm/int {:min 0}]] + [:features ::cfeat/features] + [:migrations [::sm/set ::sm/text]] + [:profile-id {:optional true} ::sm/uuid] + [:label ::sm/text] + [:file-id ::sm/uuid] + [:created-by [:enum "system" "user" "admin"]] + [:deleted-at {:optional true} ::ct/inst] + [:modified-at ::ct/inst] + [:created-at ::ct/inst]]) + +(def ^:private check-snapshot + (sm/check-fn schema:snapshot)) + +(def ^:private check-decoded-file + (sm/check-fn schema:decoded-file)) + +(defn- generate-snapshot-label + [] + (let [ts (-> (ct/now) + (ct/format-inst) + (str/replace #"[T:\.]" "-") + (str/rtrim "Z"))] + (str "snapshot-" ts))) + +(def ^:private schema:create-params + [:map {:title "SnapshotCreateParams"} + [:profile-id ::sm/uuid] + [:created-by {:optional true} [:enum "user" "system"]] + [:label {:optional true} ::sm/text] + [:session-id {:optional true} ::sm/uuid] + [:modified-at {:optional true} ::ct/inst] + [:deleted-at {:optional true} ::ct/inst]]) + +(def ^:private check-create-params + (sm/check-fn schema:create-params)) + +(defn create! + "Create a file snapshot; expects a non-encoded file" + [cfg file & {:as params}] + (let [{:keys [label created-by deleted-at profile-id session-id]} + (check-create-params params) + + file + (check-decoded-file file) + + created-by + (or created-by "system") + + snapshot-id + (uuid/next) + + created-at + (ct/now) + + deleted-at + (or deleted-at + (if (= created-by "system") + (ct/in-future (cf/get-deletion-delay)) + nil)) + + label + (or label (generate-snapshot-label)) + + snapshot + (cond-> {:id snapshot-id + :revn (:revn file) + :version (:version file) + :file-id (:id file) + :features (:features file) + :migrations (:migrations file) + :label label + :created-at created-at + :modified-at created-at + :created-by created-by} + + deleted-at + (assoc :deleted-at deleted-at) + + :always + (check-snapshot))] + + (db/insert! cfg :file-change + (-> snapshot + (update :features into-array) + (update :migrations into-array) + (assoc :updated-at created-at) + (assoc :profile-id profile-id) + (assoc :session-id session-id) + (dissoc :modified-at)) + {::db/return-keys false}) + + (fdata/upsert! cfg + {:id snapshot-id + :file-id (:id file) + :type "snapshot" + :data (blob/encode (:data file)) + :created-at created-at + :deleted-at deleted-at}) + + snapshot)) + +(def ^:private schema:update-params + [:map {:title "SnapshotUpdateParams"} + [:id ::sm/uuid] + [:file-id ::sm/uuid] + [:label ::sm/text] + [:modified-at {:optional true} ::ct/inst]]) + +(def ^:private check-update-params + (sm/check-fn schema:update-params)) + +(defn update! + [cfg params] + + (let [{:keys [id file-id label modified-at]} + (check-update-params params) + + modified-at + (or modified-at (ct/now))] + + (db/update! cfg :file-data + {:deleted-at nil + :modified-at modified-at} + {:file-id file-id + :id id + :type "snapshot"} + {::db/return-keys false}) + + (-> (db/update! cfg :file-change + {:label label + :created-by "user" + :updated-at modified-at + :deleted-at nil} + {:file-id file-id + :id id} + {::db/return-keys false}) + (db/get-update-count) + (pos?)))) + +(defn restore! + [{:keys [::db/conn] :as cfg} file-id snapshot-id] + (let [file (get-minimal-file conn file-id {::db/for-update true}) + vern (rand-int Integer/MAX_VALUE) + + storage + (sto/resolve cfg {::db/reuse-conn true}) + + snapshot + (get-snapshot cfg file-id snapshot-id)] + + (when-not snapshot + (ex/raise :type :not-found + :code :snapshot-not-found + :hint "unable to find snapshot with the provided label" + :snapshot-id snapshot-id + :file-id file-id)) + + (when-not (:data snapshot) + (ex/raise :type :internal + :code :snapshot-without-data + :hint "snapshot has no data" + :label (:label snapshot) + :file-id file-id)) + + (let [;; If the snapshot has applied migrations stored, we reuse + ;; them, if not, we take a safest set of migrations as + ;; starting point. This is because, at the time of + ;; implementing snapshots, migrations were not taken into + ;; account so we need to make this backward compatible in + ;; some way. + migrations + (or (:migrations snapshot) + (fmg/generate-migrations-from-version 67)) + + file + (-> file + (update :revn inc) + (assoc :migrations migrations) + (assoc :data (:data snapshot)) + (assoc :vern vern) + (assoc :version (:version snapshot)) + (assoc :has-media-trimmed false) + (assoc :modified-at (:modified-at snapshot)) + (assoc :features (:features snapshot)))] + + (l/dbg :hint "restoring snapshot" + :file-id (str file-id) + :label (:label snapshot) + :snapshot-id (str (:id snapshot))) + + ;; In the same way, on reseting the file data, we need to restore + ;; the applied migrations on the moment of taking the snapshot + (bfc/update-file! cfg file ::bfc/reset-migrations? true) + + ;; FIXME: this should be separated functions, we should not have + ;; inline sql here. + + ;; clean object thumbnails + (let [sql (str "update file_tagged_object_thumbnail " + " set deleted_at = now() " + " where file_id=? returning media_id") + res (db/exec! conn [sql file-id])] + (doseq [media-id (into #{} (keep :media-id) res)] + (sto/touch-object! storage media-id))) + + ;; clean file thumbnails + (let [sql (str "update file_thumbnail " + " set deleted_at = now() " + " where file_id=? returning media_id") + res (db/exec! conn [sql file-id])] + (doseq [media-id (into #{} (keep :media-id) res)] + (sto/touch-object! storage media-id))) + + vern))) + +(defn delete! + [cfg & {:keys [id file-id deleted-at]}] + (assert (uuid? id) "missing id") + (assert (uuid? file-id) "missing file-id") + (assert (ct/inst? deleted-at) "missing deleted-at") + + (wrk/submit! {::db/conn (db/get-connection cfg) + ::wrk/task :delete-object + ::wrk/params {:object :snapshot + :deleted-at deleted-at + :file-id file-id + :id id}}) + (db/update! cfg :file-change + {:deleted-at deleted-at} + {:id id :file-id file-id} + {::db/return-keys false}) + true) + +(def ^:private sql:get-snapshots + (str sql:snapshots " AND c.file_id = ?")) + +(defn lock-by! + [conn id profile-id] + (-> (db/update! conn :file-change + {:locked-by profile-id} + {:id id} + {::db/return-keys false}) + (db/get-update-count) + (pos?))) + +(defn unlock! + [conn id] + (-> (db/update! conn :file-change + {:locked-by nil} + {:id id} + {::db/return-keys false}) + (db/get-update-count) + (pos?))) + +(defn reduce-snapshots + "Process the file snapshots using efficient reduction; the file + reduction comes with all snapshots, including maked as deleted" + [cfg file-id xform f init] + (let [conn (db/get-connection cfg) + xform (comp + (map (partial fdata/resolve-file-data cfg)) + (map (partial fdata/decode-file-data cfg)) + xform)] + + (->> (db/plan conn [sql:get-snapshots file-id] {:fetch-size 1}) + (transduce xform f init)))) diff --git a/backend/src/app/http.clj b/backend/src/app/http.clj index 275f081fd0..633697985d 100644 --- a/backend/src/app/http.clj +++ b/backend/src/app/http.clj @@ -19,6 +19,7 @@ [app.http.errors :as errors] [app.http.management :as mgmt] [app.http.middleware :as mw] + [app.http.security :as sec] [app.http.session :as session] [app.http.websocket :as-alias ws] [app.main :as-alias main] @@ -26,9 +27,7 @@ [app.rpc :as-alias rpc] [app.rpc.doc :as-alias rpc.doc] [app.setup :as-alias setup] - [app.worker :as wrk] [integrant.core :as ig] - [promesa.exec :as px] [reitit.core :as r] [reitit.middleware :as rr] [yetti.adapter :as yt] @@ -55,6 +54,8 @@ [:map [::port ::sm/int] [::host ::sm/text] + [::io-threads {:optional true} ::sm/int] + [::max-worker-threads {:optional true} ::sm/int] [::max-body-size {:optional true} ::sm/int] [::max-multipart-body-size {:optional true} ::sm/int] [::router {:optional true} [:fn r/router?]] @@ -65,31 +66,41 @@ (assert (sm/check schema:server-params params))) (defmethod ig/init-key ::server - [_ {:keys [::handler ::router ::host ::port ::wrk/executor] :as cfg}] + [_ {:keys [::handler ::router ::host ::port ::mtx/metrics] :as cfg}] (l/info :hint "starting http server" :port port :host host) - (let [options {:http/port port - :http/host host - :http/max-body-size (::max-body-size cfg) - :http/max-multipart-body-size (::max-multipart-body-size cfg) - :xnio/direct-buffers false - :xnio/io-threads (or (::io-threads cfg) - (max 3 (px/get-available-processors))) - :xnio/dispatch executor - :ring/compat :ring2 - :socket/backlog 4069} + (let [on-dispatch + (fn [_ start-at-ns] + (let [timing (- (System/nanoTime) start-at-ns) + timing (int (/ timing 1000000))] + (mtx/run! metrics + :id :http-server-dispatch-timing + :val timing))) - handler (cond - (some? router) - (router-handler router) + options + {:http/port port + :http/host host + :http/max-body-size (::max-body-size cfg) + :http/max-multipart-body-size (::max-multipart-body-size cfg) + :xnio/direct-buffers false + :xnio/io-threads (::io-threads cfg) + :xnio/max-worker-threads (::max-worker-threads cfg) + :ring/compat :ring2 + :events/on-dispatch on-dispatch + :socket/backlog 4069} - (some? handler) - handler + handler + (cond + (some? router) + (router-handler router) - :else - (throw (UnsupportedOperationException. "handler or router are required"))) + (some? handler) + handler - options (d/without-nils options) - server (yt/server handler options)] + :else + (throw (UnsupportedOperationException. "handler or router are required"))) + + server + (yt/server handler (d/without-nils options))] (assoc cfg ::server (yt/start! server)))) @@ -157,6 +168,7 @@ [_ cfg] (rr/router [["" {:middleware [[mw/server-timing] + [sec/sec-fetch-metadata] [mw/params] [mw/format-response] [session/soft-auth cfg] @@ -177,7 +189,8 @@ (::ws/routes cfg) - ["/api" {:middleware [[mw/cors]]} + ["/api" {:middleware [[mw/cors] + [sec/client-header-check]]} (::oidc/routes cfg) (::rpc.doc/routes cfg) (::rpc/routes cfg)]]])) diff --git a/backend/src/app/http/access_token.clj b/backend/src/app/http/access_token.clj index d498005642..ae8b61122e 100644 --- a/backend/src/app/http/access_token.clj +++ b/backend/src/app/http/access_token.clj @@ -14,18 +14,18 @@ [app.tokens :as tokens] [yetti.request :as yreq])) -(def header-re #"^Token\s+(.*)") +(def header-re #"(?i)^Token\s+(.*)") -(defn- get-token +(defn get-token [request] (some->> (yreq/get-header request "authorization") (re-matches header-re) (second))) (defn- decode-token - [props token] + [cfg token] (when token - (tokens/verify props {:token token :iss "access-token"}))) + (tokens/verify cfg {:token token :iss "access-token"}))) (def sql:get-token-data "SELECT perms, profile_id, expires_at @@ -43,11 +43,11 @@ (defn- wrap-soft-auth "Soft Authentication, will be executed synchronously on the undertow worker thread." - [handler {:keys [::setup/props]}] + [handler cfg] (letfn [(handle-request [request] (try (let [token (get-token request) - claims (decode-token props token)] + claims (decode-token cfg token)] (cond-> request (map? claims) (assoc ::id (:tid claims)))) diff --git a/backend/src/app/http/awsns.clj b/backend/src/app/http/awsns.clj index 1a937e4444..051a2ecf8b 100644 --- a/backend/src/app/http/awsns.clj +++ b/backend/src/app/http/awsns.clj @@ -17,11 +17,9 @@ [app.main :as-alias main] [app.setup :as-alias setup] [app.tokens :as tokens] - [app.worker :as-alias wrk] [clojure.data.json :as j] [cuerdas.core :as str] [integrant.core :as ig] - [promesa.exec :as px] [yetti.request :as yreq] [yetti.response :as-alias yres])) @@ -40,8 +38,8 @@ [_ cfg] (letfn [(handler [request] (let [data (-> request yreq/body slurp)] - (px/run! :vthread (partial handle-request cfg data))) - {::yres/status 200})] + (handle-request cfg data) + {::yres/status 200}))] ["/sns" {:handler handler :allowed-methods #{:post}}])) @@ -109,7 +107,7 @@ [cfg headers] (let [tdata (get headers "x-penpot-data")] (when-not (str/empty? tdata) - (let [result (tokens/verify (::setup/props cfg) {:token tdata :iss :profile-identity})] + (let [result (tokens/verify cfg {:token tdata :iss :profile-identity})] (:profile-id result))))) (defn- parse-notification diff --git a/backend/src/app/http/debug.clj b/backend/src/app/http/debug.clj index 76d7661bdf..6df4398116 100644 --- a/backend/src/app/http/debug.clj +++ b/backend/src/app/http/debug.clj @@ -27,6 +27,7 @@ [app.rpc.commands.profile :as profile] [app.rpc.commands.teams :as teams] [app.setup :as-alias setup] + [app.setup.clock :as clock] [app.srepl.main :as srepl] [app.storage :as-alias sto] [app.storage.tmp :as tmp] @@ -49,11 +50,17 @@ (defn index-handler [_cfg _request] - {::yres/status 200 - ::yres/headers {"content-type" "text/html"} - ::yres/body (-> (io/resource "app/templates/debug.tmpl") - (tmpl/render {:version (:full cf/version) - :supported-features cfeat/supported-features}))}) + (let [{:keys [clock offset]} @clock/current] + {::yres/status 200 + ::yres/headers {"content-type" "text/html"} + ::yres/body (-> (io/resource "app/templates/debug.tmpl") + (tmpl/render {:version (:full cf/version) + :current-clock (str clock) + :current-offset (if offset + (ct/format-duration offset) + "NO OFFSET") + :current-time (ct/format-inst (ct/now) :http) + :supported-features cfeat/supported-features}))})) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; FILE CHANGES @@ -390,34 +397,6 @@ ::yres/headers {"content-type" "text/plain"} ::yres/body (str/ffmt "PROFILE '%' ACTIVATED" (:email profile))})))))) - -(defn- reset-file-version - [cfg {:keys [params] :as request}] - (let [file-id (some-> params :file-id d/parse-uuid) - version (some-> params :version d/parse-integer)] - - (when-not (contains? params :force) - (ex/raise :type :validation - :code :missing-force - :hint "missing force checkbox")) - - (when (nil? file-id) - (ex/raise :type :validation - :code :invalid-file-id - :hint "provided invalid file id")) - - (when (nil? version) - (ex/raise :type :validation - :code :invalid-version - :hint "provided invalid version")) - - (db/tx-run! cfg srepl/process-file! file-id #(assoc % :version version)) - - {::yres/status 200 - ::yres/headers {"content-type" "text/plain"} - ::yres/body "OK"})) - - (defn- handle-team-features [cfg {:keys [params] :as request}] (let [team-id (some-> params :team-id d/parse-uuid) @@ -462,6 +441,24 @@ ::yres/headers {"content-type" "text/plain"} ::yres/body "OK"})))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; VIRTUAL CLOCK +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defn- set-virtual-clock + [_ {:keys [params] :as request}] + (let [offset (some-> params :offset str/trim not-empty ct/duration) + reset? (contains? params :reset)] + (if (= "production" (cf/get :tenant)) + {::yres/status 501 + ::yres/body "OPERATION NOT ALLOWED"} + (do + (if (or reset? (zero? (inst-ms offset))) + (clock/set-offset! nil) + (clock/set-offset! offset)) + {::yres/status 302 + ::yres/headers {"location" "/dbg"}})))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; OTHER SMALL VIEWS/HANDLERS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -548,10 +545,10 @@ ["/error/:id" {:handler (partial error-handler cfg)}] ["/error" {:handler (partial error-list-handler cfg)}] ["/actions" {:middleware [[errors]]} + ["/set-virtual-clock" + {:handler (partial set-virtual-clock cfg)}] ["/resend-email-verification" {:handler (partial resend-email-notification cfg)}] - ["/reset-file-version" - {:handler (partial reset-file-version cfg)}] ["/handle-team-features" {:handler (partial handle-team-features cfg)}] ["/file-export" {:handler (partial export-handler cfg)}] diff --git a/backend/src/app/http/management.clj b/backend/src/app/http/management.clj index 929cda32fd..cf91503f67 100644 --- a/backend/src/app/http/management.clj +++ b/backend/src/app/http/management.clj @@ -11,7 +11,9 @@ [app.common.schema :as sm] [app.common.schema.generators :as sg] [app.common.time :as ct] + [app.config :as cf] [app.db :as db] + [app.http.access-token :refer [get-token]] [app.main :as-alias main] [app.rpc.commands.profile :as cmd.profile] [app.setup :as-alias setup] @@ -30,6 +32,20 @@ [_ params] (assert (db/pool? (::db/pool params)) "expect valid database pool")) +(def ^:private auth + {:name ::auth + :compile + (fn [_ _] + (fn [handler shared-key] + (if shared-key + (fn [request] + (let [token (get-token request)] + (if (= token shared-key) + (handler request) + {::yres/status 403}))) + (fn [_ _] + {::yres/status 403}))))}) + (def ^:private default-system {:name ::default-system :compile @@ -49,7 +65,8 @@ (defmethod ig/init-key ::routes [_ cfg] - ["" {:middleware [[default-system cfg] + ["" {:middleware [[auth (cf/get :management-api-shared-key)] + [default-system cfg] [transaction]]} ["/authenticate" {:handler authenticate @@ -79,8 +96,7 @@ (defn- authenticate [cfg request] (let [token (-> request :params :token) - props (get cfg ::setup/props) - result (tokens/verify props {:token token :iss "authentication"})] + result (tokens/verify cfg {:token token :iss "authentication"})] {::yres/status 200 ::yres/body result})) diff --git a/backend/src/app/http/security.clj b/backend/src/app/http/security.clj new file mode 100644 index 0000000000..a1c7262c79 --- /dev/null +++ b/backend/src/app/http/security.clj @@ -0,0 +1,55 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.http.security + "Additional security layer middlewares" + (:require + [app.config :as cf] + [yetti.request :as yreq] + [yetti.response :as yres])) + +(def ^:private safe-methods + #{:get :head :options}) + +(defn- wrap-sec-fetch-metadata + "Sec-Fetch metadata security layer middleware" + [handler] + (fn [request] + (let [site (yreq/get-header request "sec-fetch-site")] + (cond + (= site "same-origin") + (handler request) + + (or (= site "same-site") + (= site "cross-site")) + (if (contains? safe-methods (yreq/method request)) + (handler request) + {::yres/status 403}) + + :else + (handler request))))) + +(def sec-fetch-metadata + {:name ::sec-fetch-metadata + :compile (fn [_ _] + (when (contains? cf/flags :sec-fetch-metadata-middleware) + wrap-sec-fetch-metadata))}) + +(defn- wrap-client-header-check + "Check for a penpot custom header to be present as additional CSRF + protection" + [handler] + (fn [request] + (let [client (yreq/get-header request "x-client")] + (if (some? client) + (handler request) + {::yres/status 403})))) + +(def client-header-check + {:name ::client-header-check + :compile (fn [_ _] + (when (contains? cf/flags :client-header-check-middleware) + wrap-client-header-check))}) diff --git a/backend/src/app/http/session.clj b/backend/src/app/http/session.clj index d3bc0bd2bd..ab6d03ebda 100644 --- a/backend/src/app/http/session.clj +++ b/backend/src/app/http/session.clj @@ -11,7 +11,6 @@ [app.common.logging :as l] [app.common.schema :as sm] [app.common.time :as ct] - [app.common.uri :as u] [app.config :as cf] [app.db :as db] [app.db.sql :as sql] @@ -72,7 +71,7 @@ (sm/validator schema:params)) (defn- prepare-session-params - [key params] + [params key] (assert (string? key) "expected key to be a string") (assert (not (str/blank? key)) "expected key to be not empty") (assert (valid-params? params) "expected valid params") @@ -90,7 +89,9 @@ (db/exec-one! pool (sql/select :http-session {:id token}))) (write! [_ key params] - (let [params (prepare-session-params key params)] + (let [params (-> params + (assoc :created-at (ct/now)) + (prepare-session-params key))] (db/insert! pool :http-session params) params)) @@ -113,7 +114,9 @@ (get @cache token)) (write! [_ key params] - (let [params (prepare-session-params key params)] + (let [params (-> params + (assoc :created-at (ct/now)) + (prepare-session-params key))] (swap! cache assoc key params) params)) @@ -144,27 +147,23 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (declare ^:private assign-auth-token-cookie) -(declare ^:private assign-auth-data-cookie) (declare ^:private clear-auth-token-cookie) -(declare ^:private clear-auth-data-cookie) (declare ^:private gen-token) (defn create-fn - [{:keys [::manager ::setup/props]} profile-id] + [{:keys [::manager] :as cfg} profile-id] (assert (manager? manager) "expected valid session manager") (assert (uuid? profile-id) "expected valid uuid for profile-id") (fn [request response] (let [uagent (yreq/get-header request "user-agent") params {:profile-id profile-id - :user-agent uagent - :created-at (ct/now)} - token (gen-token props params) + :user-agent uagent} + token (gen-token cfg params) session (write! manager token params)] - (l/trace :hint "create" :profile-id (str profile-id)) + (l/trc :hint "create" :profile-id (str profile-id)) (-> response - (assign-auth-token-cookie session) - (assign-auth-data-cookie session))))) + (assign-auth-token-cookie session))))) (defn delete-fn [{:keys [::manager]}] @@ -172,23 +171,22 @@ (fn [request response] (let [cname (cf/get :auth-token-cookie-name default-auth-token-cookie-name) cookie (yreq/get-cookie request cname)] - (l/trace :hint "delete" :profile-id (:profile-id request)) + (l/trc :hint "delete" :profile-id (:profile-id request)) (some->> (:value cookie) (delete! manager)) (-> response (assoc :status 204) (assoc :body nil) - (clear-auth-token-cookie) - (clear-auth-data-cookie))))) + (clear-auth-token-cookie))))) (defn- gen-token - [props {:keys [profile-id created-at]}] - (tokens/generate props {:iss "authentication" - :iat created-at - :uid profile-id})) + [cfg {:keys [profile-id created-at]}] + (tokens/generate cfg {:iss "authentication" + :iat created-at + :uid profile-id})) (defn- decode-token - [props token] + [cfg token] (when token - (tokens/verify props {:token token :iss "authentication"}))) + (tokens/verify cfg {:token token :iss "authentication"}))) (defn- get-token [request] @@ -208,18 +206,18 @@ (neg? (compare default-renewal-max-age elapsed))))) (defn- wrap-soft-auth - [handler {:keys [::manager ::setup/props]}] + [handler {:keys [::manager] :as cfg}] (assert (manager? manager) "expected valid session manager") (letfn [(handle-request [request] (try (let [token (get-token request) - claims (decode-token props token)] + claims (decode-token cfg token)] (cond-> request (map? claims) (-> (assoc ::token-claims claims) (assoc ::token token)))) (catch Throwable cause - (l/trace :hint "exception on decoding malformed token" :cause cause) + (l/trc :hint "exception on decoding malformed token" :cause cause) request)))] (fn [request] @@ -239,8 +237,7 @@ (if (renew-session? session) (let [session (update! manager session)] (-> response - (assign-auth-token-cookie session) - (assign-auth-data-cookie session))) + (assign-auth-token-cookie session))) response)))) (def soft-auth @@ -256,7 +253,7 @@ (defn- assign-auth-token-cookie [response {token :id updated-at :updated-at}] (let [max-age (cf/get :auth-token-cookie-max-age default-cookie-max-age) - created-at (or updated-at (ct/now)) + created-at updated-at renewal (ct/plus created-at default-renewal-max-age) expires (ct/plus created-at max-age) secure? (contains? cf/flags :secure-session-cookies) @@ -273,53 +270,15 @@ :secure secure?}] (update response :cookies assoc name cookie))) -(defn- assign-auth-data-cookie - [response {profile-id :profile-id updated-at :updated-at}] - (let [max-age (cf/get :auth-token-cookie-max-age default-cookie-max-age) - domain (cf/get :auth-data-cookie-domain) - cname default-auth-data-cookie-name - - created-at (or updated-at (ct/now)) - renewal (ct/plus created-at default-renewal-max-age) - expires (ct/plus created-at max-age) - - comment (str "Renewal at: " (ct/format-inst renewal :rfc1123)) - secure? (contains? cf/flags :secure-session-cookies) - strict? (contains? cf/flags :strict-session-cookies) - cors? (contains? cf/flags :cors) - - cookie {:domain domain - :expires expires - :path "/" - :comment comment - :value (u/map->query-string {:profile-id profile-id}) - :same-site (if cors? :none (if strict? :strict :lax)) - :secure secure?}] - - (cond-> response - (string? domain) - (update :cookies assoc cname cookie)))) - (defn- clear-auth-token-cookie [response] (let [cname (cf/get :auth-token-cookie-name default-auth-token-cookie-name)] (update response :cookies assoc cname {:path "/" :value "" :max-age 0}))) -(defn- clear-auth-data-cookie - [response] - (let [cname default-auth-data-cookie-name - domain (cf/get :auth-data-cookie-domain)] - (cond-> response - (string? domain) - (update :cookies assoc cname {:domain domain :path "/" :value "" :max-age 0})))) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; TASK: SESSION GC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; FIXME: MOVE - (defmethod ig/assert-key ::tasks/gc [_ params] (assert (db/pool? (::db/pool params)) "expected valid database pool") @@ -332,22 +291,23 @@ (def ^:private sql:delete-expired - "delete from http_session - where updated_at < now() - ?::interval + "DELETE FROM http_session + WHERE updated_at < ?::timestamptz or (updated_at is null and - created_at < now() - ?::interval)") + created_at < ?::timestamptz)") (defn- collect-expired-tasks [{:keys [::db/conn ::tasks/max-age]}] - (let [interval (db/interval max-age) - result (db/exec-one! conn [sql:delete-expired interval interval]) - result (:next.jdbc/update-count result)] - (l/debug :task "gc" - :hint "clean http sessions" - :deleted result) + (let [threshold (ct/minus (ct/now) max-age) + result (-> (db/exec-one! conn [sql:delete-expired threshold threshold]) + (db/get-update-count))] + (l/dbg :task "gc" + :hint "clean http sessions" + :deleted result) result)) (defmethod ig/init-key ::tasks/gc [_ {:keys [::tasks/max-age] :as cfg}] - (l/debug :hint "initializing session gc task" :max-age max-age) - (fn [_] (db/tx-run! cfg collect-expired-tasks))) + (l/dbg :hint "initializing session gc task" :max-age max-age) + (fn [_] + (db/tx-run! cfg collect-expired-tasks))) diff --git a/backend/src/app/http/sse.clj b/backend/src/app/http/sse.clj index 00defbd80e..747452a7f7 100644 --- a/backend/src/app/http/sse.clj +++ b/backend/src/app/http/sse.clj @@ -55,7 +55,7 @@ ::yres/body (yres/stream-body (fn [_ output] (let [channel (sp/chan :buf buf :xf (keep encode)) - listener (events/start-listener + listener (events/spawn-listener channel (partial write! output) (partial pu/close! output))] diff --git a/backend/src/app/loggers/audit/archive_task.clj b/backend/src/app/loggers/audit/archive_task.clj index 257f55a94e..c8aa0e0de9 100644 --- a/backend/src/app/loggers/audit/archive_task.clj +++ b/backend/src/app/loggers/audit/archive_task.clj @@ -9,7 +9,6 @@ [app.common.exceptions :as ex] [app.common.logging :as l] [app.common.schema :as sm] - [app.common.time :as ct] [app.common.transit :as t] [app.common.uuid :as uuid] [app.config :as cf] @@ -53,9 +52,8 @@ (defn- send! [{:keys [::uri] :as cfg} events] - (let [token (tokens/generate (::setup/props cfg) + (let [token (tokens/generate cfg {:iss "authentication" - :iat (ct/now) :uid uuid/zero}) body (t/encode {:events events}) headers {"content-type" "application/transit+json" diff --git a/backend/src/app/main.clj b/backend/src/app/main.clj index 706e273bd6..57aebd30df 100644 --- a/backend/src/app/main.clj +++ b/backend/src/app/main.clj @@ -42,6 +42,7 @@ [app.svgo :as-alias svgo] [app.util.cron] [app.worker :as-alias wrk] + [app.worker.executor] [clojure.test :as test] [clojure.tools.namespace.repl :as repl] [cuerdas.core :as str] @@ -148,23 +149,11 @@ ::mdef/labels [] ::mdef/type :histogram} - :executors-active-threads - {::mdef/name "penpot_executors_active_threads" - ::mdef/help "Current number of threads available in the executor service." - ::mdef/labels ["name"] - ::mdef/type :gauge} - - :executors-completed-tasks - {::mdef/name "penpot_executors_completed_tasks_total" - ::mdef/help "Approximate number of completed tasks by the executor." - ::mdef/labels ["name"] - ::mdef/type :counter} - - :executors-running-threads - {::mdef/name "penpot_executors_running_threads" - ::mdef/help "Current number of threads with state RUNNING." - ::mdef/labels ["name"] - ::mdef/type :gauge}}) + :http-server-dispatch-timing + {::mdef/name "penpot_http_server_dispatch_timing" + ::mdef/help "Histogram of dispatch handler" + ::mdef/labels [] + ::mdef/type :histogram}}) (def system-config {::db/pool @@ -176,14 +165,12 @@ ::db/max-size (cf/get :database-max-pool-size 60) ::mtx/metrics (ig/ref ::mtx/metrics)} - ;; Default thread pool for IO operations - ::wrk/executor - {} + ;; Default netty IO pool (shared between several services) + ::wrk/netty-io-executor + {:threads (cf/get :netty-io-threads)} - ::wrk/monitor - {::mtx/metrics (ig/ref ::mtx/metrics) - ::wrk/executor (ig/ref ::wrk/executor) - ::wrk/name "default"} + ::wrk/netty-executor + {:threads (cf/get :executor-threads)} :app.migrations/migrations {::db/pool (ig/ref ::db/pool)} @@ -194,17 +181,27 @@ ::mtx/routes {::mtx/metrics (ig/ref ::mtx/metrics)} - ::rds/redis - {::rds/uri (cf/get :redis-uri) - ::mtx/metrics (ig/ref ::mtx/metrics) - ::wrk/executor (ig/ref ::wrk/executor)} + ::rds/client + {::rds/uri + (cf/get :redis-uri) + + ::wrk/netty-executor + (ig/ref ::wrk/netty-executor) + + ::wrk/netty-io-executor + (ig/ref ::wrk/netty-io-executor)} + + ::rds/pool + {::rds/client (ig/ref ::rds/client) + ::mtx/metrics (ig/ref ::mtx/metrics)} ::mbus/msgbus - {::wrk/executor (ig/ref ::wrk/executor) - ::rds/redis (ig/ref ::rds/redis)} + {::wrk/executor (ig/ref ::wrk/netty-executor) + ::rds/client (ig/ref ::rds/client) + ::mtx/metrics (ig/ref ::mtx/metrics)} :app.storage.tmp/cleaner - {::wrk/executor (ig/ref ::wrk/executor)} + {::wrk/executor (ig/ref ::wrk/netty-executor)} ::sto.gc-deleted/handler {::db/pool (ig/ref ::db/pool) @@ -232,9 +229,10 @@ ::http/host (cf/get :http-server-host) ::http/router (ig/ref ::http/router) ::http/io-threads (cf/get :http-server-io-threads) + ::http/max-worker-threads (cf/get :http-server-max-worker-threads) ::http/max-body-size (cf/get :http-server-max-body-size) ::http/max-multipart-body-size (cf/get :http-server-max-multipart-body-size) - ::wrk/executor (ig/ref ::wrk/executor)} + ::mtx/metrics (ig/ref ::mtx/metrics)} ::ldap/provider {:host (cf/get :ldap-host) @@ -312,23 +310,24 @@ ::rpc/climit {::mtx/metrics (ig/ref ::mtx/metrics) - ::wrk/executor (ig/ref ::wrk/executor) + ::wrk/executor (ig/ref ::wrk/netty-executor) ::climit/config (cf/get :rpc-climit-config) ::climit/enabled (contains? cf/flags :rpc-climit)} :app.rpc/rlimit - {::wrk/executor (ig/ref ::wrk/executor)} + {::wrk/executor (ig/ref ::wrk/netty-executor)} :app.rpc/methods {::http.client/client (ig/ref ::http.client/client) ::db/pool (ig/ref ::db/pool) - ::wrk/executor (ig/ref ::wrk/executor) + ::rds/pool (ig/ref ::rds/pool) + ::wrk/executor (ig/ref ::wrk/netty-executor) ::session/manager (ig/ref ::session/manager) ::ldap/provider (ig/ref ::ldap/provider) ::sto/storage (ig/ref ::sto/storage) ::mtx/metrics (ig/ref ::mtx/metrics) ::mbus/msgbus (ig/ref ::mbus/msgbus) - ::rds/redis (ig/ref ::rds/redis) + ::rds/client (ig/ref ::rds/client) ::rpc/climit (ig/ref ::rpc/climit) ::rpc/rlimit (ig/ref ::rpc/rlimit) @@ -341,7 +340,7 @@ :app.rpc.doc/routes {:app.rpc/methods (ig/ref :app.rpc/methods)} - :app.rpc/routes + ::rpc/routes {::rpc/methods (ig/ref :app.rpc/methods) ::db/pool (ig/ref ::db/pool) ::session/manager (ig/ref ::session/manager) @@ -433,6 +432,9 @@ ;; module requires the migrations to run before initialize. ::migrations (ig/ref :app.migrations/migrations)} + ::setup/clock + {} + :app.loggers.audit.archive-task/handler {::setup/props (ig/ref ::setup/props) ::db/pool (ig/ref ::db/pool) @@ -476,13 +478,14 @@ (cf/get :objects-storage-s3-bucket)) ::sto.s3/io-threads (or (cf/get :storage-assets-s3-io-threads) (cf/get :objects-storage-s3-io-threads)) - ::wrk/executor (ig/ref ::wrk/executor)} + + ::wrk/netty-io-executor + (ig/ref ::wrk/netty-io-executor)} :app.storage.fs/backend {::sto.fs/directory (or (cf/get :storage-assets-fs-directory) (cf/get :objects-storage-fs-directory))}}) - (def worker-config {::wrk/cron {::wrk/registry (ig/ref ::wrk/registry) @@ -518,7 +521,7 @@ :task :audit-log-gc})]} ::wrk/dispatcher - {::rds/redis (ig/ref ::rds/redis) + {::rds/client (ig/ref ::rds/client) ::mtx/metrics (ig/ref ::mtx/metrics) ::db/pool (ig/ref ::db/pool) ::wrk/tenant (cf/get :tenant)} @@ -527,7 +530,7 @@ {::wrk/parallelism (cf/get ::worker-default-parallelism 1) ::wrk/queue :default ::wrk/tenant (cf/get :tenant) - ::rds/redis (ig/ref ::rds/redis) + ::rds/client (ig/ref ::rds/client) ::wrk/registry (ig/ref ::wrk/registry) ::mtx/metrics (ig/ref ::mtx/metrics) ::db/pool (ig/ref ::db/pool)} @@ -536,7 +539,7 @@ {::wrk/parallelism (cf/get ::worker-webhook-parallelism 1) ::wrk/queue :webhooks ::wrk/tenant (cf/get :tenant) - ::rds/redis (ig/ref ::rds/redis) + ::rds/client (ig/ref ::rds/client) ::wrk/registry (ig/ref ::wrk/registry) ::mtx/metrics (ig/ref ::mtx/metrics) ::db/pool (ig/ref ::db/pool)}}) diff --git a/backend/src/app/migrations.clj b/backend/src/app/migrations.clj index 4d2eb64172..d9b3be6824 100644 --- a/backend/src/app/migrations.clj +++ b/backend/src/app/migrations.clj @@ -447,7 +447,10 @@ :fn (mg/resource "app/migrations/sql/0140-add-locked-by-column-to-file-change-table.sql")} {:name "0141-add-idx-to-file-library-rel" - :fn (mg/resource "app/migrations/sql/0141-add-idx-to-file-library-rel.sql")}]) + :fn (mg/resource "app/migrations/sql/0141-add-idx-to-file-library-rel.sql")} + + {:name "0141-add-file-data-table.sql" + :fn (mg/resource "app/migrations/sql/0141-add-file-data-table.sql")}]) (defn apply-migrations! [pool name migrations] diff --git a/backend/src/app/migrations/media_refs.clj b/backend/src/app/migrations/media_refs.clj index 67cad944e1..af08706819 100644 --- a/backend/src/app/migrations/media_refs.clj +++ b/backend/src/app/migrations/media_refs.clj @@ -10,8 +10,8 @@ [app.common.exceptions :as ex] [app.common.logging :as l] [app.common.pprint] - [app.srepl.fixes.media-refs :refer [process-file]] [app.srepl.main :as srepl] + [app.srepl.procs.media-refs] [clojure.edn :as edn])) (def ^:private required-services @@ -20,7 +20,10 @@ :app.storage/storage :app.metrics/metrics :app.db/pool - :app.worker/executor]) + :app.worker/netty-io-executor]) + +(def default-options + {:rollback? false}) (defn -main [& [options]] @@ -28,22 +31,20 @@ (let [config-var (requiring-resolve 'app.main/system-config) start-var (requiring-resolve 'app.main/start-custom) stop-var (requiring-resolve 'app.main/stop) - config (select-keys @config-var required-services)] + + config (select-keys @config-var required-services) + options (if (string? options) + (ex/ignoring (edn/read-string options)) + {}) + options (-> (merge default-options options) + (assoc :proc-fn #'app.srepl.procs.media-refs/fix-media-refs))] (start-var config) - - (let [options (if (string? options) - (ex/ignoring (edn/read-string options)) - {})] - - (l/inf :hint "executing media-refs migration" :options options) - (srepl/process-files! process-file options)) - + (l/inf :hint "executing media-refs migration" :options options) + (srepl/process! options) (stop-var) (System/exit 0)) (catch Throwable cause (ex/print-throwable cause) (flush) (System/exit -1)))) - - diff --git a/backend/src/app/migrations/sql/0141-add-file-data-table.sql b/backend/src/app/migrations/sql/0141-add-file-data-table.sql new file mode 100644 index 0000000000..6cde799de7 --- /dev/null +++ b/backend/src/app/migrations/sql/0141-add-file-data-table.sql @@ -0,0 +1,38 @@ +CREATE TABLE file_data ( + file_id uuid NOT NULL REFERENCES file(id) DEFERRABLE, + id uuid NOT NULL, + + created_at timestamptz NOT NULL DEFAULT now(), + modified_at timestamptz NOT NULL DEFAULT now(), + deleted_at timestamptz NULL, + + type text NOT NULL, + backend text NULL, + + metadata jsonb NULL, + data bytea NULL, + + PRIMARY KEY (file_id, id) + +) PARTITION BY HASH (file_id); + +CREATE TABLE file_data_00 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 0); +CREATE TABLE file_data_01 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 1); +CREATE TABLE file_data_02 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 2); +CREATE TABLE file_data_03 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 3); +CREATE TABLE file_data_04 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 4); +CREATE TABLE file_data_05 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 5); +CREATE TABLE file_data_06 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 6); +CREATE TABLE file_data_07 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 7); +CREATE TABLE file_data_08 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 8); +CREATE TABLE file_data_09 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 9); +CREATE TABLE file_data_10 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 10); +CREATE TABLE file_data_11 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 11); +CREATE TABLE file_data_12 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 12); +CREATE TABLE file_data_13 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 13); +CREATE TABLE file_data_14 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 14); +CREATE TABLE file_data_15 PARTITION OF file_data FOR VALUES WITH (MODULUS 16, REMAINDER 15); + +CREATE INDEX file_data__deleted_at__idx + ON file_data (deleted_at, file_id, id) + WHERE deleted_at IS NOT NULL; diff --git a/backend/src/app/msgbus.clj b/backend/src/app/msgbus.clj index b58a51103b..eda7431e2e 100644 --- a/backend/src/app/msgbus.clj +++ b/backend/src/app/msgbus.clj @@ -16,7 +16,6 @@ [app.redis :as rds] [app.worker :as wrk] [integrant.core :as ig] - [promesa.core :as p] [promesa.exec :as px] [promesa.exec.csp :as sp])) @@ -59,14 +58,16 @@ (assoc ::timeout (ct/duration {:seconds 30})))}) (def ^:private schema:params - [:map ::rds/redis ::wrk/executor]) + [:map + ::rds/client + ::wrk/executor]) (defmethod ig/assert-key ::msgbus [_ params] (assert (sm/check schema:params params))) (defmethod ig/init-key ::msgbus - [_ {:keys [::buffer-size ::wrk/executor ::timeout ::rds/redis] :as cfg}] + [_ {:keys [::buffer-size ::wrk/executor ::timeout] :as cfg}] (l/info :hint "initialize msgbus" :buffer-size buffer-size) (let [cmd-ch (sp/chan :buf buffer-size) rcv-ch (sp/chan :buf (sp/dropping-buffer buffer-size)) @@ -74,8 +75,9 @@ :xf xform-prefix-topic) state (agent {}) - pconn (rds/connect redis :type :default :timeout timeout) - sconn (rds/connect redis :type :pubsub :timeout timeout) + ;; Open persistent connections to redis + pconn (rds/connect cfg :timeout timeout) + sconn (rds/connect-pubsub cfg :timeout timeout) _ (set-error-handler! state #(l/error :cause % :hint "unexpected error on agent" ::l/sync? true)) _ (set-error-mode! state :continue) @@ -189,14 +191,13 @@ (defn- create-listener [rcv-ch] - (rds/pubsub-listener - :on-message (fn [_ topic message] + {:on-message (fn [_ topic message] ;; There are no back pressure, so we use a slidding ;; buffer for cases when the pubsub broker sends ;; more messages that we can process. - (let [val {:topic topic :message (t/decode message)}] + (let [val {:topic topic :message (t/decode-str message)}] (when-not (sp/offer! rcv-ch val) - (l/warn :msg "dropping message on subscription loop")))))) + (l/warn :msg "dropping message on subscription loop"))))}) (defn- process-input [{:keys [::state ::wrk/executor] :as cfg} topic message] @@ -216,8 +217,7 @@ (rds/add-listener sconn (create-listener rcv-ch)) (px/thread - {:name "penpot/msgbus/io-loop" - :virtual true} + {:name "penpot/msgbus"} (try (loop [] (let [timeout-ch (sp/timeout-chan 1000) @@ -263,7 +263,7 @@ intended to be used in core.async go blocks." [{:keys [::pconn] :as cfg} {:keys [topic message]}] (try - (p/await! (rds/publish pconn topic (t/encode message))) + (rds/publish pconn topic (t/encode-str message)) (catch InterruptedException cause (throw cause)) (catch Throwable cause diff --git a/backend/src/app/redis.clj b/backend/src/app/redis.clj index 510069e47c..96e6b07be5 100644 --- a/backend/src/app/redis.clj +++ b/backend/src/app/redis.clj @@ -6,23 +6,22 @@ (ns app.redis "The msgbus abstraction implemented using redis as underlying backend." - (:refer-clojure :exclude [eval]) + (:refer-clojure :exclude [eval get set run!]) (:require [app.common.data :as d] [app.common.exceptions :as ex] + [app.common.generic-pool :as gpool] [app.common.logging :as l] [app.common.schema :as sm] [app.common.time :as ct] [app.metrics :as mtx] [app.redis.script :as-alias rscript] - [app.util.cache :as cache] - [app.worker :as-alias wrk] + [app.worker :as wrk] + [app.worker.executor] [clojure.core :as c] [clojure.java.io :as io] [cuerdas.core :as str] - [integrant.core :as ig] - [promesa.core :as p] - [promesa.exec :as px]) + [integrant.core :as ig]) (:import clojure.lang.MapEntry io.lettuce.core.KeyValue @@ -32,12 +31,10 @@ io.lettuce.core.RedisException io.lettuce.core.RedisURI io.lettuce.core.ScriptOutputType - io.lettuce.core.api.StatefulConnection + io.lettuce.core.SetArgs io.lettuce.core.api.StatefulRedisConnection - io.lettuce.core.api.async.RedisAsyncCommands - io.lettuce.core.api.async.RedisScriptingAsyncCommands io.lettuce.core.api.sync.RedisCommands - io.lettuce.core.codec.ByteArrayCodec + io.lettuce.core.api.sync.RedisScriptingCommands io.lettuce.core.codec.RedisCodec io.lettuce.core.codec.StringCodec io.lettuce.core.pubsub.RedisPubSubListener @@ -45,244 +42,238 @@ io.lettuce.core.pubsub.api.sync.RedisPubSubCommands io.lettuce.core.resource.ClientResources io.lettuce.core.resource.DefaultClientResources + io.netty.channel.nio.NioEventLoopGroup io.netty.util.HashedWheelTimer io.netty.util.Timer + io.netty.util.concurrent.EventExecutorGroup java.lang.AutoCloseable java.time.Duration)) (set! *warn-on-reflection* true) -(declare ^:private initialize-resources) -(declare ^:private shutdown-resources) -(declare ^:private impl-eval) +(def ^:const MAX-EVAL-RETRIES 18) -(defprotocol IRedis - (-connect [_ options]) - (-get-or-connect [_ key options])) +(def default-timeout + (ct/duration "10s")) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; IMPL & PRIVATE API +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defprotocol IConnection - (publish [_ topic message]) - (rpush [_ key payload]) - (blpop [_ timeout keys]) - (eval [_ script])) + (-set-timeout [_ timeout] "set connection timeout") + (-get-timeout [_] "get current timeout") + (-reset-timeout [_] "reset to default timeout")) + +(defprotocol IDefaultConnection + "Public API of default redis connection" + (-publish [_ topic message]) + (-rpush [_ key payload]) + (-blpop [_ timeout keys]) + (-eval [_ script]) + (-get [_ key]) + (-set [_ key val args]) + (-del [_ key-or-keys]) + (-ping [_])) (defprotocol IPubSubConnection - (add-listener [_ listener]) - (subscribe [_ topics]) - (unsubscribe [_ topics])) + (-add-listener [_ listener]) + (-subscribe [_ topics]) + (-unsubscribe [_ topics])) -(def default-codec - (RedisCodec/of StringCodec/UTF8 ByteArrayCodec/INSTANCE)) - -(def string-codec +(def ^:private default-codec (RedisCodec/of StringCodec/UTF8 StringCodec/UTF8)) -(sm/register! - {:type ::connection - :pred #(satisfies? IConnection %) - :type-properties - {:title "connection" - :description "redis connection instance"}}) +(defn- impl-eval + [cmd cache metrics script] + (let [keys (into-array String (map str (::rscript/keys script))) + vals (into-array String (map str (::rscript/vals script))) + sname (::rscript/name script) -(sm/register! - {:type ::pubsub-connection - :pred #(satisfies? IPubSubConnection %) - :type-properties - {:title "connection" - :description "redis connection instance"}}) + read-script + (fn [] + (-> script ::rscript/path io/resource slurp)) -(defn redis? - [o] - (satisfies? IRedis o)) + load-script + (fn [] + (let [id (.scriptLoad ^RedisScriptingCommands cmd + ^String (read-script))] + (swap! cache assoc sname id) + (l/trc :hint "load script" :name sname :id id) -(sm/register! - {:type ::redis - :pred redis?}) + id)) -(def ^:private schema:script - [:map {:title "script"} - [::rscript/name qualified-keyword?] - [::rscript/path ::sm/text] - [::rscript/keys {:optional true} [:vector :any]] - [::rscript/vals {:optional true} [:vector :any]]]) + eval-script + (fn [id] + (try + (let [tpoint (ct/tpoint) + result (.evalsha ^RedisScriptingCommands cmd + ^String id + ^ScriptOutputType ScriptOutputType/MULTI + ^"[Ljava.lang.String;" keys + ^"[Ljava.lang.String;" vals) + elapsed (tpoint)] -(def valid-script? - (sm/lazy-validator schema:script)) + (mtx/run! metrics {:id :redis-eval-timing + :labels [(name sname)] + :val (inst-ms elapsed)}) -(defmethod ig/expand-key ::redis - [k v] - (let [cpus (px/get-available-processors) - threads (max 1 (int (* cpus 0.2)))] - {k (-> (d/without-nils v) - (assoc ::timeout (ct/duration "10s")) - (assoc ::io-threads (max 3 threads)) - (assoc ::worker-threads (max 3 threads)))})) + (l/trc :hint "eval script" + :name (name sname) + :id id + :params (str/join "," (::rscript/vals script)) + :elapsed (ct/format-duration elapsed)) -(def ^:private schema:redis-params - [:map {:title "redis-params"} - ::wrk/executor - ::mtx/metrics - [::uri ::sm/uri] - [::worker-threads ::sm/int] - [::io-threads ::sm/int] - [::timeout ::ct/duration]]) + result) -(defmethod ig/assert-key ::redis - [_ params] - (assert (sm/check schema:redis-params params))) + (catch io.lettuce.core.RedisNoScriptException _cause + ::load) -(defmethod ig/init-key ::redis - [_ params] - (initialize-resources params)) + (catch Throwable cause + (when-let [on-error (::rscript/on-error script)] + (on-error cause)) + (throw cause)))) -(defmethod ig/halt-key! ::redis - [_ instance] - (d/close! instance)) + eval-script' + (fn [id] + (loop [id id + retries 0] + (if (> retries MAX-EVAL-RETRIES) + (ex/raise :type :internal + :code ::max-eval-retries-reached + :hint (str "unable to eval redis script " sname)) + (let [result (eval-script id)] + (if (= result ::load) + (recur (load-script) + (inc retries)) + result)))))] -(defn- initialize-resources - "Initialize redis connection resources" - [{:keys [::uri ::io-threads ::worker-threads ::wrk/executor ::mtx/metrics] :as params}] + (if-let [id (c/get @cache sname)] + (eval-script' id) + (-> (load-script) + (eval-script'))))) - (l/inf :hint "initialize redis resources" - :uri (str uri) - :io-threads io-threads - :worker-threads worker-threads) +(deftype Connection [^StatefulRedisConnection conn + ^RedisCommands cmd + ^Duration timeout + cache metrics] + AutoCloseable + (close [_] + (ex/ignoring (.close conn))) - (let [timer (HashedWheelTimer.) - resources (.. (DefaultClientResources/builder) - (ioThreadPoolSize ^long io-threads) - (computationThreadPoolSize ^long worker-threads) - (timer ^Timer timer) - (build)) + IConnection + (-set-timeout [_ timeout] + (.setTimeout conn ^Duration timeout)) - redis-uri (RedisURI/create ^String (str uri)) + (-reset-timeout [_] + (.setTimeout conn timeout)) - shutdown (fn [client conn] - (ex/ignoring (.close ^StatefulConnection conn)) - (ex/ignoring (.close ^RedisClient client)) - (l/trc :hint "disconnect" :hid (hash client))) + (-get-timeout [_] + (.getTimeout conn)) - on-remove (fn [key val cause] - (l/trace :hint "evict connection (cache)" :key key :reason cause) - (some-> val d/close!)) + IDefaultConnection + (-publish [_ topic message] + (.publish cmd ^String topic ^String message)) - cache (cache/create :executor executor - :on-remove on-remove - :keepalive "5m")] - (reify - java.lang.AutoCloseable - (close [_] - (ex/ignoring (cache/invalidate! cache)) - (ex/ignoring (.shutdown ^ClientResources resources)) - (ex/ignoring (.stop ^Timer timer))) + (-rpush [_ key elements] + (try + (let [vals (make-array String (count elements))] + (loop [i 0 xs (seq elements)] + (when xs + (aset ^"[[Ljava.lang.String;" vals i ^String (first xs)) + (recur (inc i) (next xs)))) - IRedis - (-get-or-connect [this key options] - (let [create (fn [_] (-connect this options))] - (cache/get cache key create))) + (.rpush cmd + ^String key + ^"[[Ljava.lang.String;" vals)) - (-connect [_ options] - (let [timeout (or (:timeout options) (::timeout params)) - codec (get options :codec default-codec) - type (get options :type :default) - client (RedisClient/create ^ClientResources resources - ^RedisURI redis-uri)] + (catch RedisCommandInterruptedException cause + (throw (InterruptedException. (ex-message cause)))))) - (l/trc :hint "connect" :hid (hash client)) - (if (= type :pubsub) - (let [conn (.connectPubSub ^RedisClient client - ^RedisCodec codec)] - (.setTimeout ^StatefulConnection conn - ^Duration timeout) - (reify - IPubSubConnection - (add-listener [_ listener] - (assert (instance? RedisPubSubListener listener) "expected listener instance") - (.addListener ^StatefulRedisPubSubConnection conn - ^RedisPubSubListener listener)) + (-blpop [_ keys timeout] + (try + (let [keys (into-array String keys)] + (when-let [res (.blpop cmd + ^double timeout + ^"[Ljava.lang.String;" keys)] + (MapEntry/create + (.getKey ^KeyValue res) + (.getValue ^KeyValue res)))) + (catch RedisCommandInterruptedException cause + (throw (InterruptedException. (ex-message cause)))))) - (subscribe [_ topics] - (try - (let [topics (into-array String (map str topics)) - cmd (.sync ^StatefulRedisPubSubConnection conn)] - (.subscribe ^RedisPubSubCommands cmd topics)) - (catch RedisCommandInterruptedException cause - (throw (InterruptedException. (ex-message cause)))))) + (-get [_ key] + (assert (string? key) "key expected to be string") + (.get cmd ^String key)) - (unsubscribe [_ topics] - (try - (let [topics (into-array String (map str topics)) - cmd (.sync ^StatefulRedisPubSubConnection conn)] - (.unsubscribe ^RedisPubSubCommands cmd topics)) - (catch RedisCommandInterruptedException cause - (throw (InterruptedException. (ex-message cause)))))) + (-set [_ key val args] + (.set cmd + ^String key + ^bytes val + ^SetArgs args)) + + (-del [_ keys] + (let [keys (into-array String keys)] + (.del cmd ^String/1 keys))) + + (-ping [_] + (.ping cmd)) + + (-eval [_ script] + (impl-eval cmd cache metrics script))) - AutoCloseable - (close [_] (shutdown client conn)))) +(deftype SubscriptionConnection [^StatefulRedisPubSubConnection conn + ^RedisPubSubCommands cmd + ^Duration timeout] + AutoCloseable + (close [_] + (ex/ignoring (.close conn))) - (let [conn (.connect ^RedisClient client ^RedisCodec codec)] - (.setTimeout ^StatefulConnection conn ^Duration timeout) - (reify - IConnection - (publish [_ topic message] - (assert (string? topic) "expected topic to be string") - (assert (bytes? message) "expected message to be a byte array") + IConnection + (-set-timeout [_ timeout] + (.setTimeout conn ^Duration timeout)) - (let [pcomm (.async ^StatefulRedisConnection conn)] - (.publish ^RedisAsyncCommands pcomm ^String topic ^bytes message))) + (-reset-timeout [_] + (.setTimeout conn timeout)) - (rpush [_ key payload] - (assert (or (and (vector? payload) - (every? bytes? payload)) - (bytes? payload))) - (try - (let [cmd (.sync ^StatefulRedisConnection conn) - data (if (vector? payload) payload [payload]) - vals (make-array (. Class (forName "[B")) (count data))] + (-get-timeout [_] + (.getTimeout conn)) - (loop [i 0 xs (seq data)] - (when xs - (aset ^"[[B" vals i ^bytes (first xs)) - (recur (inc i) (next xs)))) + IPubSubConnection + (-add-listener [_ listener] + (.addListener conn ^RedisPubSubListener listener)) - (.rpush ^RedisCommands cmd - ^String key - ^"[[B" vals)) + (-subscribe [_ topics] + (try + (let [topics (into-array String topics)] + (.subscribe cmd topics)) + (catch RedisCommandInterruptedException cause + (throw (InterruptedException. (ex-message cause)))))) - (catch RedisCommandInterruptedException cause - (throw (InterruptedException. (ex-message cause)))))) + (-unsubscribe [_ topics] + (try + (let [topics (into-array String topics)] + (.unsubscribe cmd topics)) + (catch RedisCommandInterruptedException cause + (throw (InterruptedException. (ex-message cause))))))) - (blpop [_ timeout keys] - (try - (let [keys (into-array Object (map str keys)) - cmd (.sync ^StatefulRedisConnection conn) - timeout (/ (double (inst-ms timeout)) 1000.0)] - (when-let [res (.blpop ^RedisCommands cmd - ^double timeout - ^"[Ljava.lang.String;" keys)] - (MapEntry/create - (.getKey ^KeyValue res) - (.getValue ^KeyValue res)))) - (catch RedisCommandInterruptedException cause - (throw (InterruptedException. (ex-message cause)))))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; PUBLIC API +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (eval [_ script] - (assert (valid-script? script) "expected valid script") - (impl-eval conn metrics script)) - - AutoCloseable - (close [_] (shutdown client conn)))))))))) - -(defn connect - [instance & {:as opts}] - (assert (satisfies? IRedis instance) "expected valid redis instance") - (-connect instance opts)) - -(defn get-or-connect - [instance key & {:as opts}] - (assert (satisfies? IRedis instance) "expected valid redis instance") - (-get-or-connect instance key opts)) +(defn build-set-args + [options] + (reduce-kv (fn [^SetArgs args k v] + (case k + :ex (if (instance? Duration v) + (.ex args ^Duration v) + (.ex args (long v))) + :px (.px args (long v)) + :nx (if v (.nx args) args) + :keep-ttl (if v (.keepttl args) args))) + (SetArgs.) + options)) (defn pubsub-listener [& {:keys [on-message on-subscribe on-unsubscribe]}] @@ -311,61 +302,172 @@ (when on-unsubscribe (on-unsubscribe nil topic count))))) -(def ^:private scripts-cache (atom {})) +(defn connect + [cfg & {:as options}] + (assert (contains? cfg ::mtx/metrics) "missing ::mtx/metrics on provided system") + (assert (contains? cfg ::client) "missing ::rds/client on provided system") -(defn- impl-eval - [^StatefulRedisConnection connection metrics script] - (let [cmd (.async ^StatefulRedisConnection connection) - keys (into-array String (map str (::rscript/keys script))) - vals (into-array String (map str (::rscript/vals script))) - sname (::rscript/name script)] + (let [state (::client cfg) - (letfn [(on-error [cause] - (if (instance? io.lettuce.core.RedisNoScriptException cause) - (do - (l/error :hint "no script found" :name sname :cause cause) - (->> (load-script) - (p/mcat eval-script))) - (if-let [on-error (::rscript/on-error script)] - (on-error cause) - (p/rejected cause)))) + cache (::cache state) + client (::client state) + timeout (or (some-> (:timeout options) ct/duration) + (::timeout state)) - (eval-script [sha] - (let [tpoint (ct/tpoint)] - (->> (.evalsha ^RedisScriptingAsyncCommands cmd - ^String sha - ^ScriptOutputType ScriptOutputType/MULTI - ^"[Ljava.lang.String;" keys - ^"[Ljava.lang.String;" vals) - (p/fmap (fn [result] - (let [elapsed (tpoint)] - (mtx/run! metrics {:id :redis-eval-timing - :labels [(name sname)] - :val (inst-ms elapsed)}) - (l/trace :hint "eval script" - :name (name sname) - :sha sha - :params (str/join "," (::rscript/vals script)) - :elapsed (ct/format-duration elapsed)) - result))) - (p/merr on-error)))) + conn (.connect ^RedisClient client + ^RedisCodec default-codec) + cmd (.sync ^StatefulRedisConnection conn)] - (read-script [] - (-> script ::rscript/path io/resource slurp)) + (.setTimeout ^StatefulRedisConnection conn ^Duration timeout) + (->Connection conn cmd timeout cache (::mtx/metrics cfg)))) - (load-script [] - (l/trace :hint "load script" :name sname) - (->> (.scriptLoad ^RedisScriptingAsyncCommands cmd - ^String (read-script)) - (p/fmap (fn [sha] - (swap! scripts-cache assoc sname sha) - sha))))] +(defn connect-pubsub + [cfg & {:as options}] + (let [state (::client cfg) + client (::client state) - (p/await! - (if-let [sha (get @scripts-cache sname)] - (eval-script sha) - (->> (load-script) - (p/mapcat eval-script))))))) + timeout (or (some-> (:timeout options) ct/duration) + (::timeout state)) + conn (.connectPubSub ^RedisClient client + ^RedisCodec default-codec) + cmd (.sync ^StatefulRedisPubSubConnection conn)] + + + (.setTimeout ^StatefulRedisPubSubConnection conn + ^Duration timeout) + (->SubscriptionConnection conn cmd timeout))) + +(defn get + [conn key] + (assert (string? key) "key must be string instance") + (try + (-get conn key) + (catch RedisCommandTimeoutException cause + (l/err :hint "timeout on get redis key" :key key :cause cause) + nil))) + +(defn set + ([conn key val] + (set conn key val nil)) + ([conn key val args] + (assert (string? key) "key must be string instance") + (assert (string? val) "val must be string instance") + (let [args (cond + (or (instance? SetArgs args) + (nil? args)) + args + + (map? args) + (build-set-args args) + + :else + (throw (IllegalArgumentException. "invalid args")))] + + (try + (-set conn key val args) + (catch RedisCommandTimeoutException cause + (l/err :hint "timeout on set redis key" :key key :cause cause) + nil))))) + +(defn del + [conn key-or-keys] + (let [keys (if (vector? key-or-keys) key-or-keys [key-or-keys])] + (assert (every? string? keys) "only string keys allowed") + (try + (-del conn keys) + (catch RedisCommandTimeoutException cause + (l/err :hint "timeout on del redis key" :key key :cause cause) + nil)))) + +(defn ping + [conn] + (-ping conn)) + +(defn blpop + [conn key-or-keys timeout] + (let [keys (if (vector? key-or-keys) key-or-keys [key-or-keys]) + timeout (cond + (ct/duration? timeout) + (/ (double (inst-ms timeout)) 1000.0) + + (double? timeout) + timeout + + (int? timeout) + (/ (double timeout) 1000.0) + + :else + 0)] + + (assert (every? string? keys) "only string keys allowed") + (-blpop conn keys timeout))) + +(defn rpush + [conn key elements] + (assert (string? key) "key must be string instance") + (assert (every? string? elements) "elements should be all strings") + (let [elements (vec elements)] + (-rpush conn key elements))) + +(defn publish + [conn topic payload] + (assert (string? topic) "expected topic to be string") + (assert (string? payload) "expected message to be a byte array") + (-publish conn topic payload)) + +(def ^:private schema:script + [:map {:title "script"} + [::rscript/name qualified-keyword?] + [::rscript/path ::sm/text] + [::rscript/keys {:optional true} [:vector :any]] + [::rscript/vals {:optional true} [:vector :any]]]) + +(def ^:private valid-script? + (sm/lazy-validator schema:script)) + +(defn eval + [conn script] + (assert (valid-script? script) "expected valid script") + (-eval conn script)) + +(defn add-listener + [conn listener] + (let [listener (cond + (map? listener) + (pubsub-listener listener) + + (instance? RedisPubSubListener listener) + listener + + :else + (throw (IllegalArgumentException. "invalid listener provided")))] + + (-add-listener conn listener))) + +(defn subscribe + [conn topic-or-topics] + (let [topics (if (vector? topic-or-topics) topic-or-topics [topic-or-topics])] + (assert (every? string? topics)) + (-subscribe conn topics))) + +(defn unsubscribe + [conn topic-or-topics] + (let [topics (if (vector? topic-or-topics) topic-or-topics [topic-or-topics])] + (assert (every? string? topics)) + (-unsubscribe conn topics))) + +(defn set-timeout + [conn timeout] + (let [timeout (ct/duration timeout)] + (-set-timeout conn timeout))) + +(defn get-timeout + [conn] + (-get-timeout conn)) + +(defn reset-timeout + [conn] + (-reset-timeout conn)) (defn timeout-exception? [cause] @@ -374,3 +476,121 @@ (defn exception? [cause] (instance? RedisException cause)) + +(defn get-pooled + [cfg] + (let [pool (::pool cfg)] + (gpool/get pool))) + +(defn close + [o] + (.close ^AutoCloseable o)) + +(defn pool + [cfg & {:as options}] + (gpool/create :create-fn (partial connect cfg options) + :destroy-fn close + :dispose-fn -reset-timeout)) + +(defn run! + [cfg f & args] + (if (gpool/pool? cfg) + (apply f {::pool cfg} f args) + (let [pool (::pool cfg)] + (with-open [^AutoCloseable conn (gpool/get pool)] + (apply f (assoc cfg ::conn @conn) args))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; INITIALIZATION +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defmethod ig/expand-key ::client + [k v] + {k (-> (d/without-nils v) + (assoc ::timeout (ct/duration "10s")))}) + +(def ^:private schema:client + [:map {:title "RedisClient"} + [::timer [:fn #(instance? HashedWheelTimer %)]] + [::cache ::sm/atom] + [::timeout ::ct/duration] + [::resources [:fn #(instance? DefaultClientResources %)]]]) + +(def check-client + (sm/check-fn schema:client)) + +(sm/register! ::client schema:client) +(sm/register! + {:type ::pool + :pred gpool/pool?}) + +(def ^:private schema:client-params + [:map {:title "redis-params"} + ::wrk/netty-io-executor + ::wrk/netty-executor + [::uri ::sm/uri] + [::timeout ::ct/duration]]) + +(def ^:private check-client-params + (sm/check-fn schema:client-params)) + +(defmethod ig/assert-key ::client + [_ params] + (check-client-params params)) + +(defmethod ig/init-key ::client + [_ {:keys [::uri ::wrk/netty-io-executor ::wrk/netty-executor] :as params}] + + (l/inf :hint "initialize redis client" :uri (str uri)) + + (let [timer (HashedWheelTimer.) + cache (atom {}) + + resources (.. (DefaultClientResources/builder) + (eventExecutorGroup ^EventExecutorGroup netty-executor) + + ;; We provide lettuce with a shared event loop + ;; group instance instead of letting lettuce to + ;; create its own + (eventLoopGroupProvider + (reify io.lettuce.core.resource.EventLoopGroupProvider + (allocate [_ _] netty-io-executor) + (threadPoolSize [_] + (.executorCount ^NioEventLoopGroup netty-io-executor)) + (release [_ _ _ _ _] + ;; Do nothing + ) + (shutdown [_ _ _ _] + ;; Do nothing + ))) + + (timer ^Timer timer) + (build)) + + redis-uri (RedisURI/create ^String (str uri)) + client (RedisClient/create ^ClientResources resources + ^RedisURI redis-uri)] + + {::client client + ::cache cache + ::timer timer + ::timeout default-timeout + ::resources resources})) + +(defmethod ig/halt-key! ::client + [_ {:keys [::client ::timer ::resources]}] + (ex/ignoring (.shutdown ^RedisClient client)) + (ex/ignoring (.shutdown ^ClientResources resources)) + (ex/ignoring (.stop ^Timer timer))) + +(defmethod ig/assert-key ::pool + [_ {:keys [::client]}] + (check-client client)) + +(defmethod ig/init-key ::pool + [_ cfg] + (pool cfg {:timeout (ct/duration 2000)})) + +(defmethod ig/halt-key! ::pool + [_ instance] + (.close ^java.lang.AutoCloseable instance)) diff --git a/backend/src/app/rpc.clj b/backend/src/app/rpc.clj index 94537a9708..63d778a89c 100644 --- a/backend/src/app/rpc.clj +++ b/backend/src/app/rpc.clj @@ -23,6 +23,7 @@ [app.main :as-alias main] [app.metrics :as mtx] [app.msgbus :as-alias mbus] + [app.redis :as rds] [app.rpc.climit :as climit] [app.rpc.cond :as cond] [app.rpc.helpers :as rph] @@ -239,7 +240,6 @@ 'app.rpc.commands.files 'app.rpc.commands.files-create 'app.rpc.commands.files-share - 'app.rpc.commands.files-temp 'app.rpc.commands.files-update 'app.rpc.commands.files-snapshot 'app.rpc.commands.files-thumbnails @@ -262,6 +262,7 @@ ::session/manager ::http.client/client ::db/pool + ::rds/pool ::mbus/msgbus ::sto/storage ::mtx/metrics diff --git a/backend/src/app/rpc/climit.clj b/backend/src/app/rpc/climit.clj index f03f19e79c..6c773b94d6 100644 --- a/backend/src/app/rpc/climit.clj +++ b/backend/src/app/rpc/climit.clj @@ -21,7 +21,6 @@ [clojure.set :as set] [datoteka.fs :as fs] [integrant.core :as ig] - [promesa.exec :as px] [promesa.exec.bulkhead :as pbh]) (:import clojure.lang.ExceptionInfo @@ -289,13 +288,9 @@ (get-limits cfg))) (defn invoke! - "Run a function in context of climit. - Intended to be used in virtual threads." - [{:keys [::executor ::rpc/climit] :as cfg} f params] + "Run a function in context of climit." + [{:keys [::rpc/climit] :as cfg} f params] (let [f (if climit - (let [f (if (some? executor) - (fn [cfg params] (px/await! (px/submit! executor (fn [] (f cfg params))))) - f)] - (build-exec-chain cfg f)) + (build-exec-chain cfg f) f)] (f cfg params))) diff --git a/backend/src/app/rpc/commands/access_token.clj b/backend/src/app/rpc/commands/access_token.clj index d91e39c86b..fcbb0af2f2 100644 --- a/backend/src/app/rpc/commands/access_token.clj +++ b/backend/src/app/rpc/commands/access_token.clj @@ -23,14 +23,14 @@ (dissoc row :perms)) (defn create-access-token - [{:keys [::db/conn ::setup/props]} profile-id name expiration] - (let [created-at (ct/now) - token-id (uuid/next) - token (tokens/generate props {:iss "access-token" - :tid token-id - :iat created-at}) + [{:keys [::db/conn] :as cfg} profile-id name expiration] + (let [token-id (uuid/next) + expires-at (some-> expiration (ct/in-future)) + created-at (ct/now) + token (tokens/generate cfg {:iss "access-token" + :iat created-at + :tid token-id}) - expires-at (some-> expiration ct/in-future) token (db/insert! conn :access-token {:id token-id :name name diff --git a/backend/src/app/rpc/commands/auth.clj b/backend/src/app/rpc/commands/auth.clj index 20e1a9cdc9..f6b81d6add 100644 --- a/backend/src/app/rpc/commands/auth.clj +++ b/backend/src/app/rpc/commands/auth.clj @@ -6,6 +6,7 @@ (ns app.rpc.commands.auth (:require + [app.auth :as auth] [app.common.data :as d] [app.common.data.macros :as dm] [app.common.exceptions :as ex] @@ -62,7 +63,7 @@ (ex/raise :type :validation :code :account-without-password :hint "the current account does not have password") - (let [result (profile/verify-password cfg password (:password profile))] + (let [result (auth/verify-password password (:password profile))] (when (:update result) (l/trc :hint "updating profile password" :id (str (:id profile)) @@ -98,7 +99,7 @@ (profile/strip-private-attrs)) invitation (when-let [token (:invitation-token params)] - (tokens/verify (::setup/props cfg) {:token token :iss :team-invitation})) + (tokens/verify cfg {:token token :iss :team-invitation})) ;; If invitation member-id does not matches the profile-id, we just proceed to ignore the ;; invitation because invitations matches exactly; and user can't login with other email and @@ -152,11 +153,11 @@ (defn recover-profile [{:keys [::db/conn] :as cfg} {:keys [token password]}] (letfn [(validate-token [token] - (let [tdata (tokens/verify (::setup/props cfg) {:token token :iss :password-recovery})] + (let [tdata (tokens/verify cfg {:token token :iss :password-recovery})] (:profile-id tdata))) (update-password [conn profile-id] - (let [pwd (profile/derive-password cfg password)] + (let [pwd (auth/derive-password password)] (db/update! conn :profile {:password pwd :is-active true} {:id profile-id}) nil))] @@ -191,7 +192,7 @@ :hint "registration disabled")) (when (contains? params :invitation-token) - (let [invitation (tokens/verify (::setup/props cfg) + (let [invitation (tokens/verify cfg {:token (:invitation-token params) :iss :team-invitation})] (when-not (= (:email params) (:member-email invitation)) @@ -248,7 +249,7 @@ :props {:newsletter-updates (or accept-newsletter-updates false)}} params (d/without-nils params) - token (tokens/generate (::setup/props cfg) params)] + token (tokens/generate cfg params)] (with-meta {:token token} {::audit/profile-id uuid/zero}))) @@ -342,14 +343,14 @@ (defn send-email-verification! [{:keys [::db/conn] :as cfg} profile] - (let [vtoken (tokens/generate (::setup/props cfg) + (let [vtoken (tokens/generate cfg {:iss :verify-email :exp (ct/in-future "72h") :profile-id (:id profile) :email (:email profile)}) ;; NOTE: this token is mainly used for possible complains ;; identification on the sns webhook - ptoken (tokens/generate (::setup/props cfg) + ptoken (tokens/generate cfg {:iss :profile-identity :profile-id (:id profile) :exp (ct/in-future {:days 30})})] @@ -363,7 +364,7 @@ (defn register-profile [{:keys [::db/conn ::wrk/executor] :as cfg} {:keys [token] :as params}] - (let [claims (tokens/verify (::setup/props cfg) {:token token :iss :prepared-register}) + (let [claims (tokens/verify cfg {:token token :iss :prepared-register}) params (into claims params) profile (if-let [profile-id (:profile-id claims)] @@ -378,7 +379,7 @@ (not (contains? cf/flags :email-verification))) params (-> params (assoc :is-active is-active) - (update :password #(profile/derive-password cfg %))) + (update :password auth/derive-password)) profile (->> (create-profile! conn params) (create-profile-rels! conn))] (vary-meta profile assoc :created true)))) @@ -386,7 +387,7 @@ created? (-> profile meta :created true?) invitation (when-let [token (:invitation-token params)] - (tokens/verify (::setup/props cfg) {:token token :iss :team-invitation})) + (tokens/verify cfg {:token token :iss :team-invitation})) props (-> (audit/profile->props profile) (assoc :from-invitation (some? invitation))) @@ -419,7 +420,7 @@ (= (:email profile) (:member-email invitation))) (let [claims (assoc invitation :member-id (:id profile)) - token (tokens/generate (::setup/props cfg) claims)] + token (tokens/generate cfg claims)] (-> {:invitation-token token} (rph/with-transform (session/create-fn cfg (:id profile))) (rph/with-meta {::audit/replace-props props @@ -493,14 +494,14 @@ (defn- request-profile-recovery [{:keys [::db/conn] :as cfg} {:keys [email] :as params}] (letfn [(create-recovery-token [{:keys [id] :as profile}] - (let [token (tokens/generate (::setup/props cfg) + (let [token (tokens/generate cfg {:iss :password-recovery :exp (ct/in-future "15m") :profile-id id})] (assoc profile :token token))) (send-email-notification [conn profile] - (let [ptoken (tokens/generate (::setup/props cfg) + (let [ptoken (tokens/generate cfg {:iss :profile-identity :profile-id (:id profile) :exp (ct/in-future {:days 30})})] diff --git a/backend/src/app/rpc/commands/binfile.clj b/backend/src/app/rpc/commands/binfile.clj index c9542d4089..f0fc211e46 100644 --- a/backend/src/app/rpc/commands/binfile.clj +++ b/backend/src/app/rpc/commands/binfile.clj @@ -28,7 +28,6 @@ [app.tasks.file-gc] [app.util.services :as sv] [app.worker :as-alias wrk] - [promesa.exec :as px] [yetti.response :as yres])) (set! *warn-on-reflection* true) @@ -94,7 +93,7 @@ ;; --- Command: import-binfile (defn- import-binfile - [{:keys [::db/pool ::wrk/executor] :as cfg} {:keys [profile-id project-id version name file]}] + [{:keys [::db/pool] :as cfg} {:keys [profile-id project-id version name file]}] (let [team (teams/get-team pool :profile-id profile-id :project-id project-id) @@ -105,13 +104,9 @@ (assoc ::bfc/name name) (assoc ::bfc/input (:path file))) - ;; NOTE: the importation process performs some operations that are - ;; not very friendly with virtual threads, and for avoid - ;; unexpected blocking of other concurrent operations we dispatch - ;; that operation to a dedicated executor. result (case (int version) - 1 (px/invoke! executor (partial bf.v1/import-files! cfg)) - 3 (px/invoke! executor (partial bf.v3/import-files! cfg)))] + 1 (bf.v1/import-files! cfg) + 3 (bf.v3/import-files! cfg))] (db/update! pool :project {:modified-at (ct/now)} diff --git a/backend/src/app/rpc/commands/comments.clj b/backend/src/app/rpc/commands/comments.clj index 8f449d1bf8..2227b8d5c5 100644 --- a/backend/src/app/rpc/commands/comments.clj +++ b/backend/src/app/rpc/commands/comments.clj @@ -6,6 +6,7 @@ (ns app.rpc.commands.comments (:require + [app.binfile.common :as bfc] [app.common.data :as d] [app.common.data.macros :as dm] [app.common.exceptions :as ex] @@ -163,34 +164,16 @@ (def xf-decode-row (map decode-row)) -(def ^:private - sql:get-file - "SELECT f.id, f.modified_at, f.revn, f.features, f.name, - f.project_id, p.team_id, f.data, - f.data_ref_id, f.data_backend - FROM file as f - INNER JOIN project as p on (p.id = f.project_id) - WHERE f.id = ? - AND (f.deleted_at IS NULL OR f.deleted_at > now())") - (defn- get-file "A specialized version of get-file for comments module." [cfg file-id page-id] - (let [file (db/exec-one! cfg [sql:get-file file-id])] - (when-not file - (ex/raise :type :not-found - :code :object-not-found - :hint "file not found")) - - (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg file-id)] - (let [file (->> file - (files/decode-row) - (feat.fdata/resolve-file-data cfg)) - data (get file :data)] - (-> file - (assoc :page-name (dm/get-in data [:pages-index page-id :name])) - (assoc :page-id page-id) - (dissoc :data)))))) + (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg file-id)] + (let [file (bfc/get-file cfg file-id) + data (get file :data)] + (-> file + (assoc :page-name (dm/get-in data [:pages-index page-id :name])) + (assoc :page-id page-id) + (dissoc :data))))) ;; FIXME: rename (defn- get-comment-thread @@ -251,34 +234,39 @@ (files/check-comment-permissions! conn profile-id file-id share-id) (get-comment-threads conn profile-id file-id)))) -(def ^:private sql:comment-threads - "SELECT DISTINCT ON (ct.id) - ct.*, - pf.fullname AS owner_fullname, - pf.email AS owner_email, - pf.photo_id AS owner_photo_id, - p.team_id AS team_id, - f.name AS file_name, - f.project_id AS project_id, - first_value(c.content) OVER w AS content, - (SELECT count(1) - FROM comment AS c - WHERE c.thread_id = ct.id) AS count_comments, - (SELECT count(1) - FROM comment AS c - WHERE c.thread_id = ct.id - AND c.created_at >= coalesce(cts.modified_at, ct.created_at)) AS count_unread_comments - FROM comment_thread AS ct - INNER JOIN comment AS c ON (c.thread_id = ct.id) - INNER JOIN file AS f ON (f.id = ct.file_id) - INNER JOIN project AS p ON (p.id = f.project_id) - LEFT JOIN comment_thread_status AS cts ON (cts.thread_id = ct.id AND cts.profile_id = ?) - LEFT JOIN profile AS pf ON (ct.owner_id = pf.id) - WINDOW w AS (PARTITION BY c.thread_id ORDER BY c.created_at ASC)") +(defn- get-comment-threads-sql + [where] + (str/ffmt + "SELECT DISTINCT ON (ct.id) + ct.*, + pf.fullname AS owner_fullname, + pf.email AS owner_email, + pf.photo_id AS owner_photo_id, + p.team_id AS team_id, + f.name AS file_name, + f.project_id AS project_id, + first_value(c.content) OVER w AS content, + (SELECT count(1) + FROM comment AS c + WHERE c.thread_id = ct.id) AS count_comments, + (SELECT count(1) + FROM comment AS c + WHERE c.thread_id = ct.id + AND c.created_at >= coalesce(cts.modified_at, ct.created_at)) AS count_unread_comments + FROM comment_thread AS ct + INNER JOIN comment AS c ON (c.thread_id = ct.id) + INNER JOIN file AS f ON (f.id = ct.file_id) + INNER JOIN project AS p ON (p.id = f.project_id) + LEFT JOIN comment_thread_status AS cts ON (cts.thread_id = ct.id AND cts.profile_id = ?) + LEFT JOIN profile AS pf ON (ct.owner_id = pf.id) + WHERE f.deleted_at IS NULL + AND p.deleted_at IS NULL + %1 + WINDOW w AS (PARTITION BY c.thread_id ORDER BY c.created_at ASC)" + where)) (def ^:private sql:comment-threads-by-file-id - (str "WITH threads AS (" sql:comment-threads ")" - "SELECT * FROM threads WHERE file_id = ?")) + (get-comment-threads-sql "AND ct.file_id = ?")) (defn- get-comment-threads [conn profile-id file-id] @@ -287,7 +275,30 @@ ;; --- COMMAND: Get Unread Comment Threads -(declare ^:private get-unread-comment-threads) +(def ^:private sql:unread-all-comment-threads-by-team + (str "WITH threads AS (" + (get-comment-threads-sql "AND p.team_id = ?") + ")" + "SELECT t.* FROM threads AS t + WHERE t.count_unread_comments > 0")) + +(def ^:private sql:unread-partial-comment-threads-by-team + (str "WITH threads AS (" + (get-comment-threads-sql "AND p.team_id = ? AND (ct.owner_id = ? OR ? = ANY(ct.mentions))") + ")" + "SELECT t.* FROM threads AS t + WHERE t.count_unread_comments > 0")) + +(defn- get-unread-comment-threads + [cfg profile-id team-id] + (let [profile (-> (db/get cfg :profile {:id profile-id} ::db/remove-deleted false) + (profile/decode-row)) + notify (or (-> profile :props :notifications :dashboard-comments) :all) + result (case notify + :all (db/exec! cfg [sql:unread-all-comment-threads-by-team profile-id team-id]) + :partial (db/exec! cfg [sql:unread-partial-comment-threads-by-team profile-id team-id profile-id profile-id]) + [])] + (into [] xf-decode-row result))) (def ^:private schema:get-unread-comment-threads @@ -298,41 +309,8 @@ {::doc/added "1.15" ::sm/params schema:get-unread-comment-threads} [cfg {:keys [::rpc/profile-id team-id] :as params}] - (db/run! - cfg - (fn [{:keys [::db/conn]}] - (teams/check-read-permissions! conn profile-id team-id) - (get-unread-comment-threads conn profile-id team-id)))) - -(def sql:unread-all-comment-threads-by-team - (str "WITH threads AS (" sql:comment-threads ")" - "SELECT * FROM threads WHERE count_unread_comments > 0 AND team_id = ?")) - -;; The partial configuration will retrieve only comments created by the user and -;; threads that have a mention to the user. -(def sql:unread-partial-comment-threads-by-team - (str "WITH threads AS (" sql:comment-threads ")" - "SELECT * FROM threads - WHERE count_unread_comments > 0 - AND team_id = ? - AND (owner_id = ? OR ? = ANY(mentions))")) - -(defn- get-unread-comment-threads - [conn profile-id team-id] - (let [profile (-> (db/get conn :profile {:id profile-id}) - (profile/decode-row)) - notify (or (-> profile :props :notifications :dashboard-comments) :all)] - - (case notify - :all - (->> (db/exec! conn [sql:unread-all-comment-threads-by-team profile-id team-id]) - (into [] xf-decode-row)) - - :partial - (->> (db/exec! conn [sql:unread-partial-comment-threads-by-team profile-id team-id profile-id profile-id]) - (into [] xf-decode-row)) - - []))) + (teams/check-read-permissions! cfg profile-id team-id) + (get-unread-comment-threads cfg profile-id team-id)) ;; --- COMMAND: Get Single Comment Thread @@ -343,16 +321,17 @@ [:id ::sm/uuid] [:share-id {:optional true} [:maybe ::sm/uuid]]]) +(def ^:private sql:get-comment-thread + (get-comment-threads-sql "AND ct.file_id = ? AND ct.id = ?")) + (sv/defmethod ::get-comment-thread {::doc/added "1.15" ::sm/params schema:get-comment-thread} [cfg {:keys [::rpc/profile-id file-id id share-id] :as params}] (db/run! cfg (fn [{:keys [::db/conn]}] (files/check-comment-permissions! conn profile-id file-id share-id) - (let [sql (str "WITH threads AS (" sql:comment-threads ")" - "SELECT * FROM threads WHERE id = ? AND file_id = ?")] - (-> (db/exec-one! conn [sql profile-id id file-id]) - (decode-row)))))) + (some-> (db/exec-one! conn [sql:get-comment-thread profile-id file-id id]) + (decode-row))))) ;; --- COMMAND: Retrieve Comments diff --git a/backend/src/app/rpc/commands/demo.clj b/backend/src/app/rpc/commands/demo.clj index 4e64eac7ba..d6825a3f68 100644 --- a/backend/src/app/rpc/commands/demo.clj +++ b/backend/src/app/rpc/commands/demo.clj @@ -7,6 +7,7 @@ (ns app.rpc.commands.demo "A demo specific mutations." (:require + [app.auth :refer [derive-password]] [app.common.exceptions :as ex] [app.common.time :as ct] [app.config :as cf] @@ -14,7 +15,6 @@ [app.loggers.audit :as audit] [app.rpc :as-alias rpc] [app.rpc.commands.auth :as auth] - [app.rpc.commands.profile :as profile] [app.rpc.doc :as-alias doc] [app.util.services :as sv] [buddy.core.codecs :as bc] @@ -45,8 +45,9 @@ params {:email email :fullname fullname :is-active true + :is-demo true :deleted-at (ct/in-future (cf/get-deletion-delay)) - :password (profile/derive-password cfg password) + :password (derive-password password) :props {}} profile (db/tx-run! cfg (fn [{:keys [::db/conn]}] (->> (auth/create-profile! conn params) diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj index 91a4947608..22b9b08a1a 100644 --- a/backend/src/app/rpc/commands/files.clj +++ b/backend/src/app/rpc/commands/files.clj @@ -17,6 +17,7 @@ [app.common.schema :as sm] [app.common.schema.desc-js-like :as-alias smdj] [app.common.time :as ct] + [app.common.transit :as t] [app.common.types.components-list :as ctkl] [app.common.types.file :as ctf] [app.common.uri :as uri] @@ -24,10 +25,11 @@ [app.db :as db] [app.db.sql :as-alias sql] [app.features.fdata :as feat.fdata] - [app.features.file-migrations :as feat.fmigr] [app.features.logical-deletion :as ldel] [app.loggers.audit :as-alias audit] [app.loggers.webhooks :as-alias webhooks] + [app.msgbus :as mbus] + [app.redis :as rds] [app.rpc :as-alias rpc] [app.rpc.commands.projects :as projects] [app.rpc.commands.teams :as teams] @@ -39,8 +41,7 @@ [app.util.pointer-map :as pmap] [app.util.services :as sv] [app.worker :as wrk] - [cuerdas.core :as str] - [promesa.exec :as px])) + [cuerdas.core :as str])) ;; --- FEATURES @@ -55,12 +56,10 @@ (ct/duration {:days 7})) (defn decode-row - [{:keys [data changes features] :as row}] + [{:keys [features] :as row}] (when row (cond-> row - features (assoc :features (db/decode-pgarray features #{})) - changes (assoc :changes (blob/decode changes)) - data (assoc :data (blob/decode data))))) + (db/pgarray? features) (assoc :features (db/decode-pgarray features #{}))))) (defn check-version! [file] @@ -84,8 +83,10 @@ fpr.is_admin, fpr.can_edit from file_profile_rel as fpr + inner join file as f on (f.id = fpr.file_id) where fpr.file_id = ? and fpr.profile_id = ? + and f.deleted_at is null union all select tpr.is_owner, tpr.is_admin, @@ -95,6 +96,7 @@ inner join file as f on (p.id = f.project_id) where f.id = ? and tpr.profile_id = ? + and f.deleted_at is null union all select ppr.is_owner, ppr.is_admin, @@ -102,7 +104,8 @@ from project_profile_rel as ppr inner join file as f on (f.project_id = ppr.project_id) where f.id = ? - and ppr.profile_id = ?") + and ppr.profile_id = ? + and f.deleted_at is null") (defn get-file-permissions [conn profile-id file-id] @@ -207,93 +210,11 @@ schema:get-file [:map {:title "get-file"} [:features {:optional true} ::cfeat/features] - [:id ::sm/uuid] - [:project-id {:optional true} ::sm/uuid]]) - -(defn- migrate-file - [{:keys [::db/conn] :as cfg} {:keys [id] :as file} {:keys [read-only?]}] - (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg id) - pmap/*tracked* (pmap/create-tracked)] - (let [libs (delay (bfc/get-resolved-file-libraries cfg file)) - ;; For avoid unnecesary overhead of creating multiple pointers and - ;; handly internally with objects map in their worst case (when - ;; probably all shapes and all pointers will be readed in any - ;; case), we just realize/resolve them before applying the - ;; migration to the file - file (-> file - (update :data feat.fdata/process-pointers deref) - (update :data feat.fdata/process-objects (partial into {})) - (fmg/migrate-file libs))] - - (if (or read-only? (db/read-only? conn)) - file - (let [;; When file is migrated, we break the rule of no perform - ;; mutations on get operations and update the file with all - ;; migrations applied - file (if (contains? (:features file) "fdata/objects-map") - (feat.fdata/enable-objects-map file) - file) - file (if (contains? (:features file) "fdata/pointer-map") - (feat.fdata/enable-pointer-map file) - file)] - - (db/update! conn :file - {:data (blob/encode (:data file)) - :version (:version file) - :features (db/create-array conn "text" (:features file))} - {:id id} - {::db/return-keys false}) - - (when (contains? (:features file) "fdata/pointer-map") - (feat.fdata/persist-pointers! cfg id)) - - (feat.fmigr/upsert-migrations! conn file) - (feat.fmigr/resolve-applied-migrations cfg file)))))) - -(defn get-file - [{:keys [::db/conn ::wrk/executor] :as cfg} id - & {:keys [project-id - migrate? - include-deleted? - lock-for-update? - preload-pointers?] - :or {include-deleted? false - lock-for-update? false - migrate? true - preload-pointers? false} - :as options}] - - (assert (db/connection? conn) "expected cfg with valid connection") - - (let [params (merge {:id id} - (when (some? project-id) - {:project-id project-id})) - file (->> (db/get conn :file params - {::db/check-deleted (not include-deleted?) - ::db/remove-deleted (not include-deleted?) - ::sql/for-update lock-for-update?}) - (feat.fmigr/resolve-applied-migrations cfg) - (feat.fdata/resolve-file-data cfg)) - - ;; NOTE: we perform the file decoding in a separate thread - ;; because it has heavy and synchronous operations for - ;; decoding file body that are not very friendly with virtual - ;; threads. - file (px/invoke! executor #(decode-row file)) - - file (if (and migrate? (fmg/need-migration? file)) - (migrate-file cfg file options) - file)] - - (if preload-pointers? - (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg id)] - (update file :data feat.fdata/process-pointers deref)) - - file))) + [:id ::sm/uuid]]) (defn get-minimal-file [cfg id & {:as opts}] - (let [opts (assoc opts ::sql/columns [:id :modified-at :deleted-at :revn :vern :data-ref-id :data-backend])] + (let [opts (assoc opts ::sql/columns [:id :modified-at :deleted-at :revn :vern])] (db/get cfg :file {:id id} opts))) (defn- get-minimal-file-with-perms @@ -333,9 +254,9 @@ :project-id project-id :file-id id) - file (-> (get-file cfg id :project-id project-id) + file (-> (bfc/get-file cfg id + :project-id project-id) (assoc :permissions perms) - (assoc :team-id (:id team)) (check-version!))] (-> (cfeat/get-team-enabled-features cf/flags team) @@ -349,8 +270,7 @@ ;; return a complete file (if (and (contains? (:features file) "fdata/pointer-map") (not (contains? (:features params) "fdata/pointer-map"))) - (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg id)] - (update file :data feat.fdata/process-pointers deref)) + (feat.fdata/realize-pointers cfg file) file) ;; This operation is needed for backward comapatibility with @@ -358,7 +278,7 @@ ;; just converts all objects map instaces to plain maps (if (and (contains? (:features file) "fdata/objects-map") (not (contains? (:features params) "fdata/objects-map"))) - (update file :data feat.fdata/process-objects (partial into {})) + (feat.fdata/realize-objects cfg file) file))))) ;; --- COMMAND QUERY: get-file-fragment (by id) @@ -378,10 +298,8 @@ (defn- get-file-fragment [cfg file-id fragment-id] - (let [resolve-file-data (partial feat.fdata/resolve-file-data cfg)] - (some-> (db/get cfg :file-data-fragment {:file-id file-id :id fragment-id}) - (resolve-file-data) - (update :data blob/decode)))) + (some-> (db/get cfg :file-data {:file-id file-id :id fragment-id :type "fragment"}) + (update :data blob/decode))) (sv/defmethod ::get-file-fragment "Retrieve a file fragment by its ID. Only authenticated users." @@ -540,7 +458,7 @@ (let [perms (get-permissions conn profile-id file-id share-id) - file (get-file cfg file-id :read-only? true) + file (bfc/get-file cfg file-id :read-only? true) proj (db/get conn :project {:id (:project-id file)}) @@ -596,87 +514,136 @@ ;; --- COMMAND QUERY: get-team-shared-files -(defn- components-and-variants - "Return a set with all the variant-ids, and a list of components, but with - only one component by variant" - [components] - (let [{:keys [variant-ids components]} - (reduce (fn [{:keys [variant-ids components] :as acc} {:keys [variant-id] :as component}] - (cond - (nil? variant-id) - {:variant-ids variant-ids :components (conj components component)} - (contains? variant-ids variant-id) - acc - :else - {:variant-ids (conj variant-ids variant-id) :components (conj components component)})) - {:variant-ids #{} :components []} - components)] - {:components components - :variant-ids variant-ids})) +(defn- get-components-with-variants + "Return a set with all the variant-ids, and a list of components, but + with only one component by variant. + + Returns a vector of unique components and a set of all variant ids" + [fdata] + (loop [variant-ids #{} + components' [] + components (ctkl/components-seq fdata)] + (if-let [{:keys [variant-id] :as component} (first components)] + (cond + (nil? variant-id) + (recur variant-ids + (conj components' component) + (rest components)) + + (contains? variant-ids variant-id) + (recur variant-ids + components' + (rest components)) + + :else + (recur (conj variant-ids variant-id) + (conj components' component) + (rest components))) + + [(d/index-by :id components') variant-ids]))) + +(defn- sample-assets + [assets limit] + (let [assets (into [] (map val) assets)] + {:count (count assets) + :sample (->> assets + (sort-by #(str/lower (:name %))) + (into [] (take limit)))})) + +(defn- calculate-library-summary + "Calculate the file library summary (counters and samples)" + [{:keys [data] :as file}] + (let [load-objects + (fn [sample] + (mapv #(ctf/load-component-objects data %) sample)) + + [components variant-ids] + (get-components-with-variants data) + + components-sample + (-> (sample-assets components 4) + (update :sample load-objects))] + + {:components components-sample + :variants {:count (count variant-ids)} + :colors (sample-assets (:colors data) 3) + :typographies (sample-assets (:typographies data) 3)})) + +(def ^:private file-summary-cache-key-ttl + (ct/duration {:days 30})) + +(def file-summary-cache-key-prefix + "penpot.library-summary.") + +(defn- get-file-with-summary + "Get a file without data with a summary of its local library content" + [cfg id] + (let [get-from-cache + (fn [{:keys [::rds/conn]} cache-key] + (when-let [result (rds/get conn cache-key)] + (let [file (bfc/get-file cfg id :load-data? false) + summary (t/decode-str result)] + (-> (assoc file :library-summary summary) + (dissoc :data))))) + + calculate-from-db + (fn [] + (let [file (bfc/get-file cfg id) + result (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg id)] + (calculate-library-summary file))] + (-> file + (assoc :library-summary result) + (dissoc :legacy-data) + (dissoc :data)))) + + persist-to-cache + (fn [{:keys [::rds/conn]} data cache-key] + (rds/set conn cache-key (t/encode-str data) + (rds/build-set-args {:ex file-summary-cache-key-ttl})))] + + (if (contains? cf/flags :redis-cache) + (let [cache-key (str file-summary-cache-key-prefix id)] + (or (rds/run! cfg get-from-cache cache-key) + (let [file (calculate-from-db)] + (rds/run! cfg persist-to-cache (:library-summary file) cache-key) + file))) + (calculate-from-db)))) (def ^:private sql:team-shared-files - "select f.id, - f.revn, - f.vern, - f.data, - f.project_id, - f.created_at, - f.modified_at, - f.data_backend, - f.data_ref_id, - f.name, - f.version, - f.is_shared, - ft.media_id, - p.team_id - from file as f - inner join project as p on (p.id = f.project_id) - left join file_thumbnail as ft on (ft.file_id = f.id and ft.revn = f.revn and ft.deleted_at is null) - where f.is_shared = true - and f.deleted_at is null - and p.deleted_at is null - and p.team_id = ? - order by f.modified_at desc") + "WITH file_library_agg AS ( + SELECT flr.file_id, + coalesce(array_agg(flr.library_file_id) filter (WHERE flr.library_file_id IS NOT NULL), '{}') AS library_file_ids + FROM file_library_rel flr + GROUP BY flr.file_id + ) -(defn- get-library-summary - [cfg {:keys [id data] :as file}] - (letfn [(assets-sample [assets limit] - (let [sorted-assets (->> (vals assets) - (sort-by #(str/lower (:name %))))] - {:count (count sorted-assets) - :sample (into [] (take limit sorted-assets))}))] - - (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg id)] - (let [load-objects (fn [component] - (ctf/load-component-objects data component)) - comps-and-variants (components-and-variants (ctkl/components-seq data)) - components (into {} (map (juxt :id identity) (:components comps-and-variants))) - components-sample (-> (assets-sample components 4) - (update :sample #(mapv load-objects %)) - (assoc :variants-count (-> comps-and-variants :variant-ids count)))] - {:components components-sample - :media (assets-sample (:media data) 3) - :colors (assets-sample (:colors data) 3) - :typographies (assets-sample (:typographies data) 3)})))) + SELECT f.id, + fla.library_file_ids, + ft.media_id AS thumbnail_id + FROM file AS f + INNER JOIN project AS p ON (p.id = f.project_id) + LEFT JOIN file_thumbnail AS ft ON (ft.file_id = f.id AND ft.revn = f.revn AND ft.deleted_at IS NULL) + LEFT JOIN file_library_agg AS fla ON (fla.file_id = f.id) + WHERE f.is_shared = true + AND f.deleted_at IS NULL + AND p.deleted_at IS NULL + AND p.team_id = ? + ORDER BY f.modified_at DESC") (defn- get-team-shared-files [{:keys [::db/conn] :as cfg} {:keys [team-id profile-id]}] (teams/check-read-permissions! conn profile-id team-id) - (->> (db/exec! conn [sql:team-shared-files team-id]) - (into #{} (comp - ;; NOTE: this decode operation is a workaround for a - ;; fast fix, this should be approached with a more - ;; efficient implementation, for now it loads all - ;; the files in memory. - (map (partial bfc/decode-file cfg)) - (map (fn [row] - (if-let [media-id (:media-id row)] - (-> row - (dissoc :media-id) - (assoc :thumbnail-id media-id)) - (dissoc row :media-id)))) - (map #(assoc % :library-summary (get-library-summary cfg %))) - (map #(dissoc % :data)))))) + + (let [process-row + (fn [{:keys [id library-file-ids]}] + (let [file (get-file-with-summary cfg id)] + (assoc file :library-file-ids (db/decode-pgarray library-file-ids #{})))) + + xform + (map process-row)] + + (->> (db/plan conn [sql:team-shared-files team-id] {:fetch-size 1}) + (transduce xform conj #{})))) (def ^:private schema:get-team-shared-files [:map {:title "get-team-shared-files"} @@ -689,6 +656,28 @@ [cfg {:keys [::rpc/profile-id] :as params}] (db/tx-run! cfg get-team-shared-files (assoc params :profile-id profile-id))) +;; --- COMMAND QUERY: get-file-summary + +(defn- get-file-summary + [cfg id] + (let [file (get-file-with-summary cfg id)] + (-> (:library-summary file) + (assoc :name (:name file))))) + +(def ^:private + schema:get-file-summary + [:map {:title "get-file-summary"} + [:id ::sm/uuid]]) + +(sv/defmethod ::get-file-summary + "Retrieve a file summary by its ID. Only authenticated users." + {::doc/added "1.20" + ::sm/params schema:get-file-summary} + [cfg {:keys [::rpc/profile-id id] :as params}] + (check-read-permissions! cfg profile-id id) + (get-file-summary cfg id)) + + ;; --- COMMAND QUERY: get-file-libraries (def ^:private schema:get-file-libraries @@ -707,7 +696,6 @@ ;; --- COMMAND QUERY: Files that use this File library - (def ^:private sql:library-using-files "SELECT f.id, f.name @@ -777,51 +765,14 @@ (teams/check-read-permissions! conn profile-id team-id) (get-team-recent-files conn team-id))) - -;; --- COMMAND QUERY: get-file-summary - - -(defn- get-file-summary - [{:keys [::db/conn] :as cfg} {:keys [profile-id id project-id] :as params}] - (check-read-permissions! conn profile-id id) - (let [team (teams/get-team conn - :profile-id profile-id - :project-id project-id - :file-id id) - - file (get-file cfg id - :project-id project-id - :read-only? true)] - - (-> (cfeat/get-team-enabled-features cf/flags team) - (cfeat/check-client-features! (:features params)) - (cfeat/check-file-features! (:features file))) - - (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg id)] - (let [components-and-variants (components-and-variants (ctkl/components-seq (:data file)))] - {:name (:name file) - :components-count (-> components-and-variants :components count) - :variants-count (-> components-and-variants :variant-ids count) - :graphics-count (count (get-in file [:data :media] [])) - :colors-count (count (get-in file [:data :colors] [])) - :typography-count (count (get-in file [:data :typographies] []))})))) - -(sv/defmethod ::get-file-summary - "Retrieve a file summary by its ID. Only authenticated users." - {::doc/added "1.20" - ::sm/params schema:get-file} - [cfg {:keys [::rpc/profile-id] :as params}] - (db/tx-run! cfg get-file-summary (assoc params :profile-id profile-id))) - - ;; --- COMMAND QUERY: get-file-info (defn- get-file-info [{:keys [::db/conn] :as cfg} {:keys [id] :as params}] - (db/get* conn :file - {:id id} - {::sql/columns [:id]})) + (db/get conn :file + {:id id} + {::sql/columns [:id :deleted-at]})) (sv/defmethod ::get-file-info "Retrieve minimal file info by its ID." @@ -881,7 +832,7 @@ ;; --- MUTATION COMMAND: set-file-shared -(def sql:get-referenced-files +(def ^:private sql:get-referenced-files "SELECT f.id FROM file_library_rel AS flr INNER JOIN file AS f ON (f.id = flr.file_id) @@ -892,56 +843,51 @@ (defn- absorb-library-by-file! [cfg ldata file-id] - (dm/assert! - "expected cfg with valid connection" - (db/connection-map? cfg)) + (assert (db/connection-map? cfg) + "expected cfg with valid connection") (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg file-id) pmap/*tracked* (pmap/create-tracked)] - (let [file (-> (get-file cfg file-id - :include-deleted? true - :lock-for-update? true) + (let [file (-> (bfc/get-file cfg file-id + :include-deleted? true + :lock-for-update? true) (update :data ctf/absorb-assets ldata))] (l/trc :hint "library absorbed" :library-id (str (:id ldata)) :file-id (str file-id)) - (db/update! cfg :file - {:revn (inc (:revn file)) - :data (blob/encode (:data file)) - :modified-at (ct/now) - :has-media-trimmed false} - {:id file-id}) - - (feat.fdata/persist-pointers! cfg file-id)))) + (bfc/update-file! cfg {:id file-id + :migrations (:migrations file) + :revn (inc (:revn file)) + :data (:data file) + :modified-at (ct/now) + :has-media-trimmed false})))) (defn- absorb-library "Find all files using a shared library, and absorb all library assets into the file local libraries" - [cfg {:keys [id] :as library}] + [cfg {:keys [id data] :as library}] - (dm/assert! - "expected cfg with valid connection" - (db/connection-map? cfg)) + (assert (db/connection-map? cfg) + "expected cfg with valid connection") - (let [ldata (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg id)] - (-> library :data (feat.fdata/process-pointers deref))) - ids (->> (db/exec! cfg [sql:get-referenced-files id]) - (map :id))] + (let [ids (->> (db/exec! cfg [sql:get-referenced-files id]) + (sequence bfc/xf-map-id))] (l/trc :hint "absorbing library" :library-id (str id) :files (str/join "," (map str ids))) - (run! (partial absorb-library-by-file! cfg ldata) ids) + (run! (partial absorb-library-by-file! cfg data) ids) library)) (defn absorb-library! [{:keys [::db/conn] :as cfg} id] - (let [file (-> (get-file cfg id - :lock-for-update? true - :include-deleted? true) + (let [file (-> (bfc/get-file cfg id + :realize? true + :lock-for-update? true + :include-deleted? true) (check-version!)) proj (db/get* conn :project {:id (:project-id file)} @@ -1038,7 +984,14 @@ (let [team (teams/get-team conn :profile-id profile-id :file-id id) - file (mark-file-deleted conn team id)] + file (mark-file-deleted conn team id) + msgbus (::mbus/msgbus cfg)] + + (mbus/pub! msgbus + :topic id + :message {:type :file-deleted + :file-id id + :profile-id profile-id}) (rph/with-meta (rph/wrap) {::audit/props {:project-id (:project-id file) @@ -1071,6 +1024,7 @@ [:library-id ::sm/uuid]]) (sv/defmethod ::link-file-to-library + "Link a file to a library. Returns the recursive list of libraries used by that library" {::doc/added "1.17" ::webhooks/event? true ::sm/params schema:link-file-to-library} @@ -1084,7 +1038,8 @@ (fn [{:keys [::db/conn]}] (check-edition-permissions! conn profile-id file-id) (check-edition-permissions! conn profile-id library-id) - (link-file-to-library conn params)))) + (link-file-to-library conn params) + (bfc/get-libraries cfg [library-id])))) ;; --- MUTATION COMMAND: unlink-file-from-library diff --git a/backend/src/app/rpc/commands/files_create.clj b/backend/src/app/rpc/commands/files_create.clj index 8f4b9b428e..a0d1d9d516 100644 --- a/backend/src/app/rpc/commands/files_create.clj +++ b/backend/src/app/rpc/commands/files_create.clj @@ -8,6 +8,7 @@ (:require [app.binfile.common :as bfc] [app.common.features :as cfeat] + [app.common.files.migrations :as fmg] [app.common.schema :as sm] [app.common.time :as ct] [app.common.types.file :as ctf] @@ -45,12 +46,14 @@ (binding [pmap/*tracked* (pmap/create-tracked) cfeat/*current* features] + (let [file (ctf/make-file {:id id :project-id project-id :name name :revn revn :is-shared is-shared :features features + :migrations fmg/available-migrations :ignore-sync-until ignore-sync-until :created-at modified-at :deleted-at deleted-at} @@ -66,7 +69,7 @@ {:modified-at (ct/now)} {:id project-id}) - file))) + (bfc/get-file cfg (:id file))))) (def ^:private schema:create-file [:map {:title "create-file"} diff --git a/backend/src/app/rpc/commands/files_snapshot.clj b/backend/src/app/rpc/commands/files_snapshot.clj index 43c59def96..cd3cbcdf0f 100644 --- a/backend/src/app/rpc/commands/files_snapshot.clj +++ b/backend/src/app/rpc/commands/files_snapshot.clj @@ -8,52 +8,20 @@ (:require [app.binfile.common :as bfc] [app.common.exceptions :as ex] - [app.common.files.migrations :as fmg] - [app.common.logging :as l] [app.common.schema :as sm] [app.common.time :as ct] - [app.common.uuid :as uuid] - [app.config :as cf] [app.db :as db] [app.db.sql :as-alias sql] - [app.features.fdata :as feat.fdata] - [app.features.file-migrations :refer [reset-migrations!]] + [app.features.file-snapshots :as fsnap] + [app.features.logical-deletion :as ldel] [app.main :as-alias main] [app.msgbus :as mbus] [app.rpc :as-alias rpc] [app.rpc.commands.files :as files] + [app.rpc.commands.teams :as teams] [app.rpc.doc :as-alias doc] [app.rpc.quotes :as quotes] - [app.storage :as sto] - [app.util.blob :as blob] - [app.util.services :as sv] - [cuerdas.core :as str])) - -(defn decode-row - [{:keys [migrations] :as row}] - (when row - (cond-> row - (some? migrations) - (assoc :migrations (db/decode-pgarray migrations))))) - -(def sql:get-file-snapshots - "WITH changes AS ( - SELECT id, label, revn, created_at, created_by, profile_id, locked_by - FROM file_change - WHERE file_id = ? - AND data IS NOT NULL - AND (deleted_at IS NULL OR deleted_at > now()) - ), versions AS ( - (SELECT * FROM changes WHERE created_by = 'system' LIMIT 1000) - UNION ALL - (SELECT * FROM changes WHERE created_by != 'system' LIMIT 1000) - ) - SELECT * FROM versions - ORDER BY created_at DESC;") - -(defn get-file-snapshots - [conn file-id] - (db/exec! conn [sql:get-file-snapshots file-id])) + [app.util.services :as sv])) (def ^:private schema:get-file-snapshots [:map {:title "get-file-snapshots"} @@ -65,73 +33,7 @@ [cfg {:keys [::rpc/profile-id file-id] :as params}] (db/run! cfg (fn [{:keys [::db/conn]}] (files/check-read-permissions! conn profile-id file-id) - (get-file-snapshots conn file-id)))) - -(defn- generate-snapshot-label - [] - (let [ts (-> (ct/now) - (ct/format-inst) - (str/replace #"[T:\.]" "-") - (str/rtrim "Z"))] - (str "snapshot-" ts))) - -(defn create-file-snapshot! - [cfg file & {:keys [label created-by deleted-at profile-id] - :or {deleted-at :default - created-by :system}}] - - (assert (#{:system :user :admin} created-by) - "expected valid keyword for created-by") - - (let [created-by - (name created-by) - - deleted-at - (cond - (= deleted-at :default) - (ct/plus (ct/now) (cf/get-deletion-delay)) - - (ct/inst? deleted-at) - deleted-at - - :else - nil) - - label - (or label (generate-snapshot-label)) - - snapshot-id - (uuid/next) - - data - (blob/encode (:data file)) - - features - (into-array (:features file)) - - migrations - (into-array (:migrations file))] - - (l/dbg :hint "creating file snapshot" - :file-id (str (:id file)) - :id (str snapshot-id) - :label label) - - (db/insert! cfg :file-change - {:id snapshot-id - :revn (:revn file) - :data data - :version (:version file) - :features features - :migrations migrations - :profile-id profile-id - :file-id (:id file) - :label label - :deleted-at deleted-at - :created-by created-by} - {::db/return-keys false}) - - {:id snapshot-id :label label})) + (fsnap/get-visible-snapshots conn file-id)))) (def ^:private schema:create-file-snapshot [:map @@ -144,7 +46,7 @@ ::db/transaction true} [{:keys [::db/conn] :as cfg} {:keys [::rpc/profile-id file-id label]}] (files/check-edition-permissions! conn profile-id file-id) - (let [file (bfc/get-file cfg file-id) + (let [file (bfc/get-file cfg file-id :realize? true) project (db/get-by-id cfg :project (:project-id file))] (-> cfg @@ -155,96 +57,10 @@ (quotes/check! {::quotes/id ::quotes/snapshots-per-file} {::quotes/id ::quotes/snapshots-per-team})) - (create-file-snapshot! cfg file - {:label label - :profile-id profile-id - :created-by :user}))) - -(defn restore-file-snapshot! - [{:keys [::db/conn ::mbus/msgbus] :as cfg} file-id snapshot-id] - (let [storage (sto/resolve cfg {::db/reuse-conn true}) - file (files/get-minimal-file conn file-id {::db/for-update true}) - vern (rand-int Integer/MAX_VALUE) - snapshot (some->> (db/get* conn :file-change - {:file-id file-id - :id snapshot-id} - {::db/for-share true}) - (feat.fdata/resolve-file-data cfg) - (decode-row)) - - ;; If snapshot has tracked applied migrations, we reuse them, - ;; if not we take a safest set of migrations as starting - ;; point. This is because, at the time of implementing - ;; snapshots, migrations were not taken into account so we - ;; need to make this backward compatible in some way. - file (assoc file :migrations - (or (:migrations snapshot) - (fmg/generate-migrations-from-version 67)))] - - (when-not snapshot - (ex/raise :type :not-found - :code :snapshot-not-found - :hint "unable to find snapshot with the provided label" - :snapshot-id snapshot-id - :file-id file-id)) - - (when-not (:data snapshot) - (ex/raise :type :validation - :code :snapshot-without-data - :hint "snapshot has no data" - :label (:label snapshot) - :file-id file-id)) - - (l/dbg :hint "restoring snapshot" - :file-id (str file-id) - :label (:label snapshot) - :snapshot-id (str (:id snapshot))) - - ;; If the file was already offloaded, on restoring the snapshot we - ;; are going to replace the file data, so we need to touch the old - ;; referenced storage object and avoid possible leaks - (when (feat.fdata/offloaded? file) - (sto/touch-object! storage (:data-ref-id file))) - - ;; In the same way, on reseting the file data, we need to restore - ;; the applied migrations on the moment of taking the snapshot - (reset-migrations! conn file) - - (db/update! conn :file - {:data (:data snapshot) - :revn (inc (:revn file)) - :vern vern - :version (:version snapshot) - :data-backend nil - :data-ref-id nil - :has-media-trimmed false - :features (:features snapshot)} - {:id file-id}) - - ;; clean object thumbnails - (let [sql (str "update file_tagged_object_thumbnail " - " set deleted_at = now() " - " where file_id=? returning media_id") - res (db/exec! conn [sql file-id])] - (doseq [media-id (into #{} (keep :media-id) res)] - (sto/touch-object! storage media-id))) - - ;; clean file thumbnails - (let [sql (str "update file_thumbnail " - " set deleted_at = now() " - " where file_id=? returning media_id") - res (db/exec! conn [sql file-id])] - (doseq [media-id (into #{} (keep :media-id) res)] - (sto/touch-object! storage media-id))) - - ;; Send to the clients a notification to reload the file - (mbus/pub! msgbus - :topic (:id file) - :message {:type :file-restore - :file-id (:id file) - :vern vern}) - {:id (:id snapshot) - :label (:label snapshot)})) + (fsnap/create! cfg file + {:label label + :profile-id profile-id + :created-by "user"}))) (def ^:private schema:restore-file-snapshot [:map {:title "restore-file-snapshot"} @@ -253,88 +69,76 @@ (sv/defmethod ::restore-file-snapshot {::doc/added "1.20" - ::sm/params schema:restore-file-snapshot} - [cfg {:keys [::rpc/profile-id file-id id] :as params}] - (db/tx-run! cfg - (fn [{:keys [::db/conn] :as cfg}] - (files/check-edition-permissions! conn profile-id file-id) - (let [file (bfc/get-file cfg file-id)] - (create-file-snapshot! cfg file - {:profile-id profile-id - :created-by :system}) - (restore-file-snapshot! cfg file-id id))))) + ::sm/params schema:restore-file-snapshot + ::db/transaction true} + [{:keys [::db/conn ::mbus/msgbus] :as cfg} {:keys [::rpc/profile-id file-id id] :as params}] + (files/check-edition-permissions! conn profile-id file-id) + (let [file (bfc/get-file cfg file-id) + team (teams/get-team conn + :profile-id profile-id + :file-id file-id) + delay (ldel/get-deletion-delay team)] + + (fsnap/create! cfg file + {:profile-id profile-id + :deleted-at (ct/in-future delay) + :created-by "system"}) + + (let [vern (fsnap/restore! cfg file-id id)] + ;; Send to the clients a notification to reload the file + (mbus/pub! msgbus + :topic (:id file) + :message {:type :file-restore + :file-id (:id file) + :vern vern}) + nil))) (def ^:private schema:update-file-snapshot [:map {:title "update-file-snapshot"} [:id ::sm/uuid] [:label ::sm/text]]) -(defn- update-file-snapshot! - [conn snapshot-id label] - (-> (db/update! conn :file-change - {:label label - :created-by "user" - :deleted-at nil} - {:id snapshot-id} - {::db/return-keys true}) - (dissoc :data :features :migrations))) - -(defn- get-snapshot - "Get a minimal snapshot from database and lock for update" - [conn id] - (db/get conn :file-change - {:id id} - {::sql/columns [:id :file-id :created-by :deleted-at :profile-id :locked-by] - ::db/for-update true})) - (sv/defmethod ::update-file-snapshot {::doc/added "1.20" - ::sm/params schema:update-file-snapshot} - [cfg {:keys [::rpc/profile-id id label]}] - (db/tx-run! cfg - (fn [{:keys [::db/conn]}] - (let [snapshot (get-snapshot conn id)] - (files/check-edition-permissions! conn profile-id (:file-id snapshot)) - (update-file-snapshot! conn id label))))) + ::sm/params schema:update-file-snapshot + ::db/transaction true} + [{:keys [::db/conn]} {:keys [::rpc/profile-id id label]}] + (let [snapshot (fsnap/get-minimal-snapshot conn id)] + (files/check-edition-permissions! conn profile-id (:file-id snapshot)) + (fsnap/update! conn (assoc snapshot :label label)))) (def ^:private schema:remove-file-snapshot [:map {:title "remove-file-snapshot"} [:id ::sm/uuid]]) -(defn- delete-file-snapshot! - [conn snapshot-id] - (db/update! conn :file-change - {:deleted-at (ct/now)} - {:id snapshot-id} - {::db/return-keys false}) - nil) - (sv/defmethod ::delete-file-snapshot {::doc/added "1.20" - ::sm/params schema:remove-file-snapshot} - [cfg {:keys [::rpc/profile-id id]}] - (db/tx-run! cfg - (fn [{:keys [::db/conn]}] - (let [snapshot (get-snapshot conn id)] - (files/check-edition-permissions! conn profile-id (:file-id snapshot)) + ::sm/params schema:remove-file-snapshot + ::db/transaction true} + [{:keys [::db/conn]} {:keys [::rpc/profile-id id]}] + (let [snapshot (fsnap/get-minimal-snapshot conn id)] + (files/check-edition-permissions! conn profile-id (:file-id snapshot)) - (when (not= (:created-by snapshot) "user") - (ex/raise :type :validation - :code :system-snapshots-cant-be-deleted - :snapshot-id id - :profile-id profile-id)) + (when (not= (:created-by snapshot) "user") + (ex/raise :type :validation + :code :system-snapshots-cant-be-deleted + :file-id (:file-id snapshot) + :snapshot-id id + :profile-id profile-id)) - ;; Check if version is locked by someone else - (when (and (:locked-by snapshot) - (not= (:locked-by snapshot) profile-id)) - (ex/raise :type :validation - :code :snapshot-is-locked - :hint "Cannot delete a locked version" - :snapshot-id id - :profile-id profile-id - :locked-by (:locked-by snapshot))) + (when (and (some? (:locked-by snapshot)) + (not= (:locked-by snapshot) profile-id)) + (ex/raise :type :validation + :code :snapshot-is-locked + :file-id (:file-id snapshot) + :snapshot-id id + :profile-id profile-id)) - (delete-file-snapshot! conn id))))) + (let [team (teams/get-team conn + :profile-id profile-id + :file-id (:file-id snapshot)) + delay (ldel/get-deletion-delay team)] + (fsnap/delete! conn (assoc snapshot :deleted-at (ct/in-future delay)))))) ;;; Lock/unlock version endpoints @@ -342,93 +146,75 @@ [:map {:title "lock-file-snapshot"} [:id ::sm/uuid]]) -(defn- lock-file-snapshot! - [conn snapshot-id profile-id] - (db/update! conn :file-change - {:locked-by profile-id} - {:id snapshot-id} - {::db/return-keys false}) - nil) - (sv/defmethod ::lock-file-snapshot {::doc/added "1.20" - ::sm/params schema:lock-file-snapshot} - [cfg {:keys [::rpc/profile-id id]}] - (db/tx-run! cfg - (fn [{:keys [::db/conn]}] - (let [snapshot (get-snapshot conn id)] - (files/check-edition-permissions! conn profile-id (:file-id snapshot)) + ::sm/params schema:lock-file-snapshot + ::db/transaction true} + [{:keys [::db/conn]} {:keys [::rpc/profile-id id]}] + (let [snapshot (fsnap/get-minimal-snapshot conn id)] + (files/check-edition-permissions! conn profile-id (:file-id snapshot)) - (when (not= (:created-by snapshot) "user") - (ex/raise :type :validation - :code :system-snapshots-cant-be-locked - :hint "Only user-created versions can be locked" - :snapshot-id id - :profile-id profile-id)) + (when (not= (:created-by snapshot) "user") + (ex/raise :type :validation + :code :system-snapshots-cant-be-locked + :hint "Only user-created versions can be locked" + :snapshot-id id + :profile-id profile-id)) - ;; Only the creator can lock their own version - (when (not= (:profile-id snapshot) profile-id) - (ex/raise :type :validation - :code :only-creator-can-lock - :hint "Only the version creator can lock it" - :snapshot-id id - :profile-id profile-id - :creator-id (:profile-id snapshot))) + ;; Only the creator can lock their own version + (when (not= (:profile-id snapshot) profile-id) + (ex/raise :type :validation + :code :only-creator-can-lock + :hint "Only the version creator can lock it" + :snapshot-id id + :profile-id profile-id + :creator-id (:profile-id snapshot))) - ;; Check if already locked - (when (:locked-by snapshot) - (ex/raise :type :validation - :code :snapshot-already-locked - :hint "Version is already locked" - :snapshot-id id - :profile-id profile-id - :locked-by (:locked-by snapshot))) + ;; Check if already locked + (when (:locked-by snapshot) + (ex/raise :type :validation + :code :snapshot-already-locked + :hint "Version is already locked" + :snapshot-id id + :profile-id profile-id + :locked-by (:locked-by snapshot))) - (lock-file-snapshot! conn id profile-id))))) + (fsnap/lock-by! conn id profile-id))) (def ^:private schema:unlock-file-snapshot [:map {:title "unlock-file-snapshot"} [:id ::sm/uuid]]) -(defn- unlock-file-snapshot! - [conn snapshot-id] - (db/update! conn :file-change - {:locked-by nil} - {:id snapshot-id} - {::db/return-keys false}) - nil) - (sv/defmethod ::unlock-file-snapshot {::doc/added "1.20" - ::sm/params schema:unlock-file-snapshot} - [cfg {:keys [::rpc/profile-id id]}] - (db/tx-run! cfg - (fn [{:keys [::db/conn]}] - (let [snapshot (get-snapshot conn id)] - (files/check-edition-permissions! conn profile-id (:file-id snapshot)) + ::sm/params schema:unlock-file-snapshot + ::db/transaction true} + [{:keys [::db/conn]} {:keys [::rpc/profile-id id]}] + (let [snapshot (fsnap/get-minimal-snapshot conn id)] + (files/check-edition-permissions! conn profile-id (:file-id snapshot)) - (when (not= (:created-by snapshot) "user") - (ex/raise :type :validation - :code :system-snapshots-cant-be-unlocked - :hint "Only user-created versions can be unlocked" - :snapshot-id id - :profile-id profile-id)) + (when (not= (:created-by snapshot) "user") + (ex/raise :type :validation + :code :system-snapshots-cant-be-unlocked + :hint "Only user-created versions can be unlocked" + :snapshot-id id + :profile-id profile-id)) - ;; Only the creator can unlock their own version - (when (not= (:profile-id snapshot) profile-id) - (ex/raise :type :validation - :code :only-creator-can-unlock - :hint "Only the version creator can unlock it" - :snapshot-id id - :profile-id profile-id - :creator-id (:profile-id snapshot))) + ;; Only the creator can unlock their own version + (when (not= (:profile-id snapshot) profile-id) + (ex/raise :type :validation + :code :only-creator-can-unlock + :hint "Only the version creator can unlock it" + :snapshot-id id + :profile-id profile-id + :creator-id (:profile-id snapshot))) - ;; Check if not locked - (when (not (:locked-by snapshot)) - (ex/raise :type :validation - :code :snapshot-not-locked - :hint "Version is not locked" - :snapshot-id id - :profile-id profile-id)) + ;; Check if not locked + (when (not (:locked-by snapshot)) + (ex/raise :type :validation + :code :snapshot-not-locked + :hint "Version is not locked" + :snapshot-id id + :profile-id profile-id)) - (unlock-file-snapshot! conn id))))) + (fsnap/unlock! conn id))) diff --git a/backend/src/app/rpc/commands/files_temp.clj b/backend/src/app/rpc/commands/files_temp.clj deleted file mode 100644 index 5446505d0c..0000000000 --- a/backend/src/app/rpc/commands/files_temp.clj +++ /dev/null @@ -1,160 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. -;; -;; Copyright (c) KALEIDOS INC - -(ns app.rpc.commands.files-temp - (:require - [app.common.exceptions :as ex] - [app.common.features :as cfeat] - [app.common.files.changes :as cpc] - [app.common.schema :as sm] - [app.common.time :as ct] - [app.common.uuid :as uuid] - [app.config :as cf] - [app.db :as db] - [app.db.sql :as sql] - [app.features.fdata :as fdata] - [app.loggers.audit :as audit] - [app.rpc :as-alias rpc] - [app.rpc.commands.files :as files] - [app.rpc.commands.files-create :as files.create] - [app.rpc.commands.files-update :as-alias files.update] - [app.rpc.commands.projects :as projects] - [app.rpc.commands.teams :as teams] - [app.rpc.doc :as-alias doc] - [app.rpc.helpers :as rph] - [app.util.blob :as blob] - [app.util.pointer-map :as pmap] - [app.util.services :as sv] - [clojure.set :as set])) - -;; --- MUTATION COMMAND: create-temp-file - -(def ^:private schema:create-temp-file - [:map {:title "create-temp-file"} - [:name [:string {:max 250}]] - [:project-id ::sm/uuid] - [:id {:optional true} ::sm/uuid] - [:is-shared ::sm/boolean] - [:features ::cfeat/features] - [:create-page ::sm/boolean]]) - -(sv/defmethod ::create-temp-file - {::doc/added "1.17" - ::doc/module :files - ::sm/params schema:create-temp-file - ::db/transaction true} - [{:keys [::db/conn] :as cfg} {:keys [::rpc/profile-id project-id] :as params}] - (projects/check-edition-permissions! conn profile-id project-id) - (let [team (teams/get-team conn :profile-id profile-id :project-id project-id) - ;; When we create files, we only need to respect the team - ;; features, because some features can be enabled - ;; globally, but the team is still not migrated properly. - input-features - (:features params #{}) - - ;; If the imported project doesn't contain v2 we need to remove it - team-features - (cond-> (cfeat/get-team-enabled-features cf/flags team) - (not (contains? input-features "components/v2")) - (disj "components/v2")) - - ;; We also include all no migration features declared by - ;; client; that enables the ability to enable a runtime - ;; feature on frontend and make it permanent on file - features - (-> input-features - (set/intersection cfeat/no-migration-features) - (set/union team-features)) - - params - (-> params - (assoc :profile-id profile-id) - (assoc :deleted-at (ct/in-future {:days 1})) - (assoc :features features))] - - (files.create/create-file cfg params))) - -;; --- MUTATION COMMAND: update-temp-file - -(def ^:private schema:update-temp-file - [:map {:title "update-temp-file"} - [:changes [:vector cpc/schema:change]] - [:revn [::sm/int {:min 0}]] - [:session-id ::sm/uuid] - [:id ::sm/uuid]]) - -(sv/defmethod ::update-temp-file - {::doc/added "1.17" - ::doc/module :files - ::sm/params schema:update-temp-file} - [cfg {:keys [::rpc/profile-id session-id id revn changes] :as params}] - (db/tx-run! cfg (fn [{:keys [::db/conn]}] - (db/insert! conn :file-change - {:id (uuid/next) - :session-id session-id - :profile-id profile-id - :created-at (ct/now) - :file-id id - :revn revn - :data nil - :changes (blob/encode changes)}) - (rph/with-meta (rph/wrap nil) - {::audit/replace-props {:file-id id - :revn revn}})))) - -;; --- MUTATION COMMAND: persist-temp-file - -(defn persist-temp-file - [{:keys [::db/conn] :as cfg} {:keys [id] :as params}] - (let [file (files/get-file cfg id - :migrate? false - :lock-for-update? true)] - - (when (nil? (:deleted-at file)) - (ex/raise :type :validation - :code :cant-persist-already-persisted-file)) - - (let [changes (->> (db/cursor conn - (sql/select :file-change {:file-id id} - {:order-by [[:revn :asc]]}) - {:chunk-size 10}) - (sequence (mapcat (comp blob/decode :changes)))) - - file (update file :data cpc/process-changes changes) - - file (if (contains? (:features file) "fdata/objects-map") - (fdata/enable-objects-map file) - file) - - file (if (contains? (:features file) "fdata/pointer-map") - (binding [pmap/*tracked* (pmap/create-tracked)] - (let [file (fdata/enable-pointer-map file)] - (fdata/persist-pointers! cfg id) - file)) - file)] - - ;; Delete changes from the changes history - (db/delete! conn :file-change {:file-id id}) - - (db/update! conn :file - {:deleted-at nil - :revn 1 - :data (blob/encode (:data file))} - {:id id}) - nil))) - -(def ^:private schema:persist-temp-file - [:map {:title "persist-temp-file"} - [:id ::sm/uuid]]) - -(sv/defmethod ::persist-temp-file - {::doc/added "1.17" - ::doc/module :files - ::sm/params schema:persist-temp-file} - [cfg {:keys [::rpc/profile-id id] :as params}] - (db/tx-run! cfg (fn [{:keys [::db/conn] :as cfg}] - (files/check-edition-permissions! conn profile-id id) - (persist-temp-file cfg params)))) diff --git a/backend/src/app/rpc/commands/files_thumbnails.clj b/backend/src/app/rpc/commands/files_thumbnails.clj index af5b62e6b6..40f124f307 100644 --- a/backend/src/app/rpc/commands/files_thumbnails.clj +++ b/backend/src/app/rpc/commands/files_thumbnails.clj @@ -6,6 +6,7 @@ (ns app.rpc.commands.files-thumbnails (:require + [app.binfile.common :as bfc] [app.common.data :as d] [app.common.data.macros :as dm] [app.common.features :as cfeat] @@ -202,9 +203,9 @@ :profile-id profile-id :file-id file-id) - file (files/get-file cfg file-id - :preload-pointers? true - :read-only? true)] + file (bfc/get-file cfg file-id + :realize? true + :read-only? true)] (-> (cfeat/get-team-enabled-features cf/flags team) (cfeat/check-file-features! (:features file))) @@ -339,6 +340,7 @@ data (-> (sto/content path) (sto/wrap-with-hash hash)) tnow (ct/now) + media (sto/put-object! storage {::sto/content data ::sto/deduplicate? true diff --git a/backend/src/app/rpc/commands/files_update.clj b/backend/src/app/rpc/commands/files_update.clj index 95f90e678f..94d1f90096 100644 --- a/backend/src/app/rpc/commands/files_update.clj +++ b/backend/src/app/rpc/commands/files_update.clj @@ -19,27 +19,25 @@ [app.common.uuid :as uuid] [app.config :as cf] [app.db :as db] - [app.features.fdata :as feat.fdata] - [app.features.file-migrations :as feat.fmigr] + [app.features.fdata :as fdata] + [app.features.file-snapshots :as fsnap] [app.features.logical-deletion :as ldel] [app.http.errors :as errors] [app.loggers.audit :as audit] [app.loggers.webhooks :as webhooks] [app.metrics :as mtx] [app.msgbus :as mbus] + [app.redis :as rds] [app.rpc :as-alias rpc] [app.rpc.climit :as climit] [app.rpc.commands.files :as files] [app.rpc.commands.teams :as teams] [app.rpc.doc :as-alias doc] [app.rpc.helpers :as rph] - [app.storage :as sto] [app.util.blob :as blob] [app.util.pointer-map :as pmap] [app.util.services :as sv] - [app.worker :as wrk] - [clojure.set :as set] - [promesa.exec :as px])) + [clojure.set :as set])) (declare ^:private get-lagged-changes) (declare ^:private send-notifications!) @@ -47,6 +45,7 @@ (declare ^:private update-file*) (declare ^:private process-changes-and-validate) (declare ^:private take-snapshot?) +(declare ^:private invalidate-caches!) ;; PUBLIC API; intended to be used outside of this module (declare update-file!) @@ -129,76 +128,78 @@ ::sm/params schema:update-file ::sm/result schema:update-file-result ::doc/module :files - ::doc/added "1.17"} - [{:keys [::mtx/metrics] :as cfg} + ::doc/added "1.17" + ::db/transaction true} + [{:keys [::mtx/metrics ::db/conn] :as cfg} {:keys [::rpc/profile-id id changes changes-with-metadata] :as params}] - (db/tx-run! cfg (fn [{:keys [::db/conn] :as cfg}] - (files/check-edition-permissions! conn profile-id id) - (db/xact-lock! conn id) - (let [file (get-file conn id) - team (teams/get-team conn - :profile-id profile-id - :team-id (:team-id file)) + (files/check-edition-permissions! conn profile-id id) + (db/xact-lock! conn id) - features (-> (cfeat/get-team-enabled-features cf/flags team) - (cfeat/check-client-features! (:features params)) - (cfeat/check-file-features! (:features file))) + (let [file (get-file cfg id) + team (teams/get-team conn + :profile-id profile-id + :team-id (:team-id file)) - changes (if changes-with-metadata - (->> changes-with-metadata (mapcat :changes) vec) - (vec changes)) + features (-> (cfeat/get-team-enabled-features cf/flags team) + (cfeat/check-client-features! (:features params)) + (cfeat/check-file-features! (:features file))) - params (-> params - (assoc :profile-id profile-id) - (assoc :features (set/difference features cfeat/frontend-only-features)) - (assoc :team team) - (assoc :file file) - (assoc :changes changes)) + changes (if changes-with-metadata + (->> changes-with-metadata (mapcat :changes) vec) + (vec changes)) - cfg (assoc cfg ::timestamp (ct/now)) + params (-> params + (assoc :profile-id profile-id) + (assoc :features (set/difference features cfeat/frontend-only-features)) + (assoc :team team) + (assoc :file file) + (assoc :changes changes)) - tpoint (ct/tpoint)] + cfg (assoc cfg ::timestamp (ct/now)) - (when (not= (:vern params) - (:vern file)) - (ex/raise :type :validation - :code :vern-conflict - :hint "A different version has been restored for the file." - :context {:incoming-revn (:revn params) - :stored-revn (:revn file)})) + tpoint (ct/tpoint)] - (when (> (:revn params) - (:revn file)) - (ex/raise :type :validation - :code :revn-conflict - :hint "The incoming revision number is greater that stored version." - :context {:incoming-revn (:revn params) - :stored-revn (:revn file)})) + (when (not= (:vern params) + (:vern file)) + (ex/raise :type :validation + :code :vern-conflict + :hint "A different version has been restored for the file." + :context {:incoming-revn (:revn params) + :stored-revn (:revn file)})) - ;; When newly computed features does not match exactly with - ;; the features defined on team row, we update it - (when-let [features (-> features - (set/difference (:features team)) - (set/difference cfeat/no-team-inheritable-features) - (not-empty))] - (let [features (-> features - (set/union (:features team)) - (set/difference cfeat/no-team-inheritable-features) - (into-array))] - (db/update! conn :team - {:features features} - {:id (:id team)} - {::db/return-keys false}))) + (when (> (:revn params) + (:revn file)) + (ex/raise :type :validation + :code :revn-conflict + :hint "The incoming revision number is greater that stored version." + :context {:incoming-revn (:revn params) + :stored-revn (:revn file)})) - (mtx/run! metrics {:id :update-file-changes :inc (count changes)}) + ;; When newly computed features does not match exactly with the + ;; features defined on team row, we update it + (when-let [features (-> features + (set/difference (:features team)) + (set/difference cfeat/no-team-inheritable-features) + (not-empty))] + (let [features (-> features + (set/union (:features team)) + (set/difference cfeat/no-team-inheritable-features) + (into-array))] + (db/update! conn :team + {:features features} + {:id (:id team)} + {::db/return-keys false}))) - (binding [l/*context* (some-> (meta params) - (get :app.http/request) - (errors/request->context))] - (-> (update-file* cfg params) - (rph/with-defer #(let [elapsed (tpoint)] - (l/trace :hint "update-file" :time (ct/format-duration elapsed)))))))))) + + (mtx/run! metrics {:id :update-file-changes :inc (count changes)}) + + (binding [l/*context* (some-> (meta params) + (get :app.http/request) + (errors/request->context))] + (-> (update-file* cfg params) + (rph/with-defer #(let [elapsed (tpoint)] + (l/trace :hint "update-file" :time (ct/format-duration elapsed)))))))) (defn- update-file* "Internal function, part of the update-file process, that encapsulates @@ -208,31 +209,41 @@ Follow the inner implementation to `update-file-data!` function. Only intended for internal use on this module." - [{:keys [::db/conn ::wrk/executor ::timestamp] :as cfg} + [{:keys [::db/conn ::timestamp] :as cfg} {:keys [profile-id file team features changes session-id skip-validate] :as params}] - (let [;; Retrieve the file data - file (feat.fmigr/resolve-applied-migrations cfg file) - file (feat.fdata/resolve-file-data cfg file) - file (assoc file :features - (-> features - (set/difference cfeat/frontend-only-features) - (set/union (:features file))))] + (binding [pmap/*tracked* (pmap/create-tracked) + pmap/*load-fn* (partial fdata/load-pointer cfg (:id file))] - ;; We create a new lexycal scope for clearly delimit the result of - ;; executing this update file operation and all its side effects - (let [file (px/invoke! executor - (fn [] - ;; Process the file data on separated thread for avoid to do - ;; the CPU intensive operation on vthread. - (binding [cfeat/*current* features - cfeat/*previous* (:features file)] - (update-file-data! cfg file - process-changes-and-validate - changes skip-validate))))] + (let [file (assoc file :features + (-> features + (set/difference cfeat/frontend-only-features) + (set/union (:features file)))) - (feat.fmigr/upsert-migrations! conn file) - (persist-file! cfg file) + ;; We need to preserve the original revn for the response + revn + (get file :revn) + + file + (binding [cfeat/*current* features + cfeat/*previous* (:features file)] + (update-file-data! cfg file + process-changes-and-validate + changes skip-validate)) + + deleted-at + (ct/plus timestamp (ct/duration {:hours 1}))] + + (when-let [file (::snapshot file)] + (let [deleted-at (ct/plus timestamp (ldel/get-deletion-delay team)) + label (str "internal/snapshot/" revn)] + + (fsnap/create! cfg file + {:label label + :created-by "system" + :deleted-at deleted-at + :profile-id profile-id + :session-id session-id}))) ;; Insert change (xlog) with deleted_at in a future data for ;; make them automatically eleggible for GC once they expires @@ -242,87 +253,71 @@ :profile-id profile-id :created-at timestamp :updated-at timestamp - :deleted-at (if (::snapshot-data file) - (ct/plus timestamp (ldel/get-deletion-delay team)) - (ct/plus timestamp (ct/duration {:hours 1}))) + :deleted-at deleted-at :file-id (:id file) :revn (:revn file) :version (:version file) - :features (:features file) - :label (::snapshot-label file) - :data (::snapshot-data file) + :features (into-array (:features file)) :changes (blob/encode changes)} {::db/return-keys false}) + (persist-file! cfg file) + + (when (contains? cf/flags :redis-cache) + (invalidate-caches! cfg file)) + ;; Send asynchronous notifications - (send-notifications! cfg params file)) + (send-notifications! cfg params file) - (when (feat.fdata/offloaded? file) - (let [storage (sto/resolve cfg ::db/reuse-conn true)] - (some->> (:data-ref-id file) (sto/touch-object! storage)))) - - (let [response {:revn (:revn file) - :lagged (get-lagged-changes conn params)}] - (vary-meta response assoc ::audit/replace-props - {:id (:id file) - :name (:name file) - :features (:features file) - :project-id (:project-id file) - :team-id (:team-id file)})))) - -(defn update-file! - "A public api that allows apply a transformation to a file with all context setup." - [{:keys [::db/conn] :as cfg} file-id update-fn & args] - (let [file (get-file cfg file-id) - file (apply update-file-data! cfg file update-fn args)] - (feat.fmigr/upsert-migrations! conn file) - (persist-file! cfg file))) - -(def ^:private sql:get-file - "SELECT f.*, p.team_id - FROM file AS f - JOIN project AS p ON (p.id = f.project_id) - WHERE f.id = ? - AND (f.deleted_at IS NULL OR - f.deleted_at > now()) - FOR KEY SHARE") + (with-meta {:revn revn :lagged (get-lagged-changes conn params)} + {::audit/replace-props + {:id (:id file) + :name (:name file) + :features (:features file) + :project-id (:project-id file) + :team-id (:team-id file)}})))) (defn get-file "Get not-decoded file, only decodes the features set." - [conn id] - (let [file (db/exec-one! conn [sql:get-file id])] - (when-not file - (ex/raise :type :not-found - :code :object-not-found - :hint (format "file with id '%s' does not exists" id))) - (update file :features db/decode-pgarray #{}))) + [cfg id] + (bfc/get-file cfg id :decode? false :lock-for-share? true)) (defn persist-file! "Function responsible of persisting already encoded file. Should be used together with `get-file` and `update-file-data!`. It also updates the project modified-at attr." - [{:keys [::db/conn ::timestamp]} file] + [{:keys [::db/conn ::timestamp] :as cfg} file] (let [;; The timestamp can be nil because this function is also ;; intended to be used outside of this module - modified-at (or timestamp (ct/now))] + modified-at + (or timestamp (ct/now)) + + file + (-> file + (dissoc ::snapshot) + (assoc :modified-at modified-at) + (assoc :has-media-trimmed false))] (db/update! conn :project {:modified-at modified-at} {:id (:project-id file)} {::db/return-keys false}) - (db/update! conn :file - {:revn (:revn file) - :data (:data file) - :version (:version file) - :features (:features file) - :data-backend nil - :data-ref-id nil - :modified-at modified-at - :has-media-trimmed false} - {:id (:id file)} - {::db/return-keys false}))) + (bfc/update-file! cfg file))) + +(defn- invalidate-caches! + [cfg {:keys [id] :as file}] + (rds/run! cfg (fn [{:keys [::rds/conn]}] + (let [key (str files/file-summary-cache-key-prefix id)] + (rds/del conn key))))) + +(defn- attach-snapshot + "Attach snapshot data to the file. This should be called before the + upcoming file operations are applied to the file." + [cfg migrated? file] + (let [snapshot (if migrated? file (fdata/realize cfg file))] + (assoc file ::snapshot snapshot))) (defn- update-file-data! "Perform a file data transformation in with all update context setup. @@ -334,52 +329,35 @@ fdata/pointer-map modified fragments." [cfg {:keys [id] :as file} update-fn & args] - (binding [pmap/*tracked* (pmap/create-tracked) - pmap/*load-fn* (partial feat.fdata/load-pointer cfg id)] - (let [file (update file :data (fn [data] - (-> data - (blob/decode) - (assoc :id (:id file))))) - libs (delay (bfc/get-resolved-file-libraries cfg file)) + (let [file (update file :data (fn [data] + (-> data + (blob/decode) + (assoc :id id)))) + libs (delay (bfc/get-resolved-file-libraries cfg file)) - ;; For avoid unnecesary overhead of creating multiple pointers - ;; and handly internally with objects map in their worst - ;; case (when probably all shapes and all pointers will be - ;; readed in any case), we just realize/resolve them before - ;; applying the migration to the file - file (if (fmg/need-migration? file) - (-> file - (update :data feat.fdata/process-pointers deref) - (update :data feat.fdata/process-objects (partial into {})) - (fmg/migrate-file libs)) - file) + need-migration? + (fmg/need-migration? file) - file (apply update-fn cfg file args) + take-snapshot? + (take-snapshot? file) - ;; TODO: reuse operations if file is migrated - ;; TODO: move encoding to a separated thread - file (if (take-snapshot? file) - (let [tpoint (ct/tpoint) - snapshot (-> (:data file) - (feat.fdata/process-pointers deref) - (feat.fdata/process-objects (partial into {})) - (blob/encode)) - elapsed (tpoint) - label (str "internal/snapshot/" (:revn file))] + ;; For avoid unnecesary overhead of creating multiple + ;; pointers and handly internally with objects map in their + ;; worst case (when probably all shapes and all pointers + ;; will be readed in any case), we just realize/resolve them + ;; before applying the migration to the file + file + (cond-> file + ;; need-migration? + ;; (->> (fdata/realize cfg)) - (l/trc :hint "take snapshot" - :file-id (str (:id file)) - :revn (:revn file) - :label label - :elapsed (ct/format-duration elapsed)) + need-migration? + (fmg/migrate-file libs) - (-> file - (assoc ::snapshot-data snapshot) - (assoc ::snapshot-label label))) - file)] - - (bfc/encode-file cfg file)))) + take-snapshot? + (->> (attach-snapshot cfg need-migration?)))] + (apply update-fn cfg file args))) (defn- soft-validate-file-schema! [file] @@ -468,8 +446,9 @@ (defn- get-lagged-changes [conn {:keys [id revn] :as params}] (->> (db/exec! conn [sql:lagged-changes id revn]) - (map files/decode-row) - (vec))) + (filter :changes) + (mapv (fn [row] + (update row :changes blob/decode))))) (defn- send-notifications! [cfg {:keys [team changes session-id] :as params} file] diff --git a/backend/src/app/rpc/commands/fonts.clj b/backend/src/app/rpc/commands/fonts.clj index c417c28f1a..535d868f95 100644 --- a/backend/src/app/rpc/commands/fonts.clj +++ b/backend/src/app/rpc/commands/fonts.clj @@ -26,9 +26,7 @@ [app.rpc.helpers :as rph] [app.rpc.quotes :as quotes] [app.storage :as sto] - [app.util.services :as sv] - [app.worker :as-alias wrk] - [promesa.exec :as px])) + [app.util.services :as sv])) (def valid-weight #{100 200 300 400 500 600 700 800 900 950}) (def valid-style #{"normal" "italic"}) @@ -105,7 +103,7 @@ (create-font-variant cfg (assoc params :profile-id profile-id))))) (defn create-font-variant - [{:keys [::sto/storage ::db/conn ::wrk/executor]} {:keys [data] :as params}] + [{:keys [::sto/storage ::db/conn]} {:keys [data] :as params}] (letfn [(generate-missing! [data] (let [data (media/run {:cmd :generate-fonts :input data})] (when (and (not (contains? data "font/otf")) @@ -157,7 +155,7 @@ :otf-file-id (:id otf) :ttf-file-id (:id ttf)}))] - (let [data (px/invoke! executor (partial generate-missing! data)) + (let [data (generate-missing! data) assets (persist-fonts-files! data) result (insert-font-variant! assets)] (vary-meta result assoc ::audit/replace-props (update params :data (comp vec keys)))))) diff --git a/backend/src/app/rpc/commands/ldap.clj b/backend/src/app/rpc/commands/ldap.clj index 0829987d4d..26524f208f 100644 --- a/backend/src/app/rpc/commands/ldap.clj +++ b/backend/src/app/rpc/commands/ldap.clj @@ -38,7 +38,7 @@ ::doc/added "1.15" ::doc/module :auth ::sm/params schema:login-with-ldap} - [{:keys [::setup/props ::ldap/provider] :as cfg} params] + [{:keys [::ldap/provider] :as cfg} params] (when-not provider (ex/raise :type :restriction :code :ldap-not-initialized @@ -60,11 +60,11 @@ ;; user comes from team-invitation process; in this case, ;; regenerate token and send back to the user a new invitation ;; token (and mark current session as logged). - (let [claims (tokens/verify props {:token token :iss :team-invitation}) + (let [claims (tokens/verify cfg {:token token :iss :team-invitation}) claims (assoc claims :member-id (:id profile) :member-email (:email profile)) - token (tokens/generate props claims)] + token (tokens/generate cfg claims)] (-> {:invitation-token token} (rph/with-transform (session/create-fn cfg (:id profile))) (rph/with-meta {::audit/props (:props profile) diff --git a/backend/src/app/rpc/commands/management.clj b/backend/src/app/rpc/commands/management.clj index ca46a8f824..0908b358d7 100644 --- a/backend/src/app/rpc/commands/management.clj +++ b/backend/src/app/rpc/commands/management.clj @@ -28,16 +28,14 @@ [app.setup :as-alias setup] [app.setup.templates :as tmpl] [app.storage.tmp :as tmp] - [app.util.services :as sv] - [app.worker :as-alias wrk] - [promesa.exec :as px])) + [app.util.services :as sv])) ;; --- COMMAND: Duplicate File (defn duplicate-file [{:keys [::db/conn ::bfc/timestamp] :as cfg} {:keys [profile-id file-id name reset-shared-flag] :as params}] (let [;; We don't touch the original file on duplication - file (bfc/get-file cfg file-id) + file (bfc/get-file cfg file-id :realize? true) project-id (:project-id file) file (-> file (update :id bfc/lookup-index) @@ -313,15 +311,14 @@ ;; Update the modification date of the all affected projects ;; ensuring that the destination project is the most recent one. - (doseq [project-id (into (list project-id) source)] - - ;; NOTE: as this is executed on virtual thread, sleeping does - ;; not causes major issues, and allows an easy way to set a - ;; trully different modification date to each file. - (px/sleep 10) - (db/update! conn :project - {:modified-at (ct/now)} - {:id project-id})) + (loop [project-ids (into (list project-id) source) + modified-at (ct/now)] + (when-let [project-id (first project-ids)] + (db/update! conn :project + {:modified-at modified-at} + {:id project-id}) + (recur (rest project-ids) + (ct/plus modified-at 10)))) nil)) @@ -396,12 +393,7 @@ ;; --- COMMAND: Clone Template (defn clone-template - [{:keys [::db/pool ::wrk/executor] :as cfg} {:keys [project-id profile-id] :as params} template] - - ;; NOTE: the importation process performs some operations - ;; that are not very friendly with virtual threads, and for - ;; avoid unexpected blocking of other concurrent operations - ;; we dispatch that operation to a dedicated executor. + [{:keys [::db/pool] :as cfg} {:keys [project-id profile-id] :as params} template] (let [template (tmp/tempfile-from template :prefix "penpot.template." :suffix "" @@ -419,8 +411,8 @@ (assoc ::bfc/features (cfeat/get-team-enabled-features cf/flags team))) result (if (= format :binfile-v3) - (px/invoke! executor (partial bf.v3/import-files! cfg)) - (px/invoke! executor (partial bf.v1/import-files! cfg)))] + (bf.v3/import-files! cfg) + (bf.v1/import-files! cfg))] (db/tx-run! cfg (fn [{:keys [::db/conn] :as cfg}] diff --git a/backend/src/app/rpc/commands/media.clj b/backend/src/app/rpc/commands/media.clj index 5fa70e9837..63793742a0 100644 --- a/backend/src/app/rpc/commands/media.clj +++ b/backend/src/app/rpc/commands/media.clj @@ -24,10 +24,8 @@ [app.storage :as sto] [app.storage.tmp :as tmp] [app.util.services :as sv] - [app.worker :as-alias wrk] [cuerdas.core :as str] - [datoteka.io :as io] - [promesa.exec :as px])) + [datoteka.io :as io])) (def default-max-file-size (* 1024 1024 10)) ; 10 MiB @@ -153,9 +151,9 @@ (assoc ::image (process-main-image info))))) (defn- create-file-media-object - [{:keys [::sto/storage ::db/conn ::wrk/executor] :as cfg} + [{:keys [::sto/storage ::db/conn] :as cfg} {:keys [id file-id is-local name content]}] - (let [result (px/invoke! executor (partial process-image content)) + (let [result (process-image content) image (sto/put-object! storage (::image result)) thumb (when-let [params (::thumb result)] (sto/put-object! storage params))] diff --git a/backend/src/app/rpc/commands/profile.clj b/backend/src/app/rpc/commands/profile.clj index 7735c68928..4207db2d22 100644 --- a/backend/src/app/rpc/commands/profile.clj +++ b/backend/src/app/rpc/commands/profile.clj @@ -30,16 +30,13 @@ [app.tokens :as tokens] [app.util.services :as sv] [app.worker :as wrk] - [cuerdas.core :as str] - [promesa.exec :as px])) + [cuerdas.core :as str])) (declare check-profile-existence!) (declare decode-row) -(declare derive-password) (declare filter-props) (declare get-profile) (declare strip-private-attrs) -(declare verify-password) (def schema:props-notifications [:map {:title "props-notifications"} @@ -110,7 +107,9 @@ (defn get-profile "Get profile by id. Throws not-found exception if no profile found." [conn id & {:as opts}] - (-> (db/get-by-id conn :profile id opts) + ;; NOTE: We need to set ::db/remove-deleted to false because demo profiles + ;; are created with a set deleted-at value + (-> (db/get-by-id conn :profile id (assoc opts ::db/remove-deleted false)) (decode-row))) ;; --- MUTATION: Update Profile (own) @@ -192,7 +191,7 @@ [{:keys [::db/conn] :as cfg} {:keys [profile-id old-password] :as params}] (let [profile (db/get-by-id conn :profile profile-id ::sql/for-update true)] (when (and (not= (:password profile) "!") - (not (:valid (verify-password cfg old-password (:password profile))))) + (not (:valid (auth/verify-password old-password (:password profile))))) (ex/raise :type :validation :code :old-password-not-match)) profile)) @@ -201,7 +200,7 @@ [{:keys [::db/conn] :as cfg} {:keys [id password] :as profile}] (when-not (db/read-only? conn) (db/update! conn :profile - {:password (derive-password cfg password)} + {:password (auth/derive-password password)} {:id id}) nil)) @@ -303,12 +302,11 @@ :content-type (:mtype thumb)})) (defn upload-photo - [{:keys [::sto/storage ::wrk/executor] :as cfg} {:keys [file] :as params}] + [{:keys [::sto/storage] :as cfg} {:keys [file] :as params}] (let [params (-> cfg (assoc ::climit/id [[:process-image/by-profile (:profile-id params)] [:process-image/global]]) (assoc ::climit/label "upload-photo") - (assoc ::climit/executor executor) (climit/invoke! generate-thumbnail! file))] (sto/put-object! storage params))) @@ -349,12 +347,12 @@ (defn- request-email-change! [{:keys [::db/conn] :as cfg} {:keys [profile email] :as params}] - (let [token (tokens/generate (::setup/props cfg) + (let [token (tokens/generate cfg {:iss :change-email :exp (ct/in-future "15m") :profile-id (:id profile) :email email}) - ptoken (tokens/generate (::setup/props cfg) + ptoken (tokens/generate cfg {:iss :profile-identity :profile-id (:id profile) :exp (ct/in-future {:days 30})})] @@ -477,13 +475,16 @@ p.fullname AS name, p.email AS email FROM team_profile_rel AS tpr1 + JOIN team as t + ON tpr1.team_id = t.id JOIN team_profile_rel AS tpr2 ON (tpr1.team_id = tpr2.team_id) JOIN profile AS p ON (tpr2.profile_id = p.id) WHERE tpr1.profile_id = ? AND tpr1.is_owner IS true - AND tpr2.can_edit IS true") + AND tpr2.can_edit IS true + AND t.deleted_at IS NULL") (sv/defmethod ::get-subscription-usage {::doc/added "2.9"} @@ -548,15 +549,6 @@ [props] (into {} (filter (fn [[k _]] (simple-ident? k))) props)) -(defn derive-password - [{:keys [::wrk/executor]} password] - (when password - (px/invoke! executor (partial auth/derive-password password)))) - -(defn verify-password - [{:keys [::wrk/executor]} password password-data] - (px/invoke! executor (partial auth/verify-password password password-data))) - (defn decode-row [{:keys [props] :as row}] (cond-> row diff --git a/backend/src/app/rpc/commands/teams.clj b/backend/src/app/rpc/commands/teams.clj index 18f1f1b5f5..3cd69c5b76 100644 --- a/backend/src/app/rpc/commands/teams.clj +++ b/backend/src/app/rpc/commands/teams.clj @@ -37,14 +37,14 @@ ;; --- Helpers & Specs (def ^:private sql:team-permissions - "select tpr.is_owner, + "SELECT tpr.is_owner, tpr.is_admin, tpr.can_edit - from team_profile_rel as tpr - join team as t on (t.id = tpr.team_id) - where tpr.profile_id = ? - and tpr.team_id = ? - and t.deleted_at is null") + FROM team_profile_rel AS tpr + JOIN team AS t ON (t.id = tpr.team_id) + WHERE tpr.profile_id = ? + AND tpr.team_id = ? + AND t.deleted_at IS NULL") (defn get-permissions [conn profile-id team-id] @@ -443,13 +443,18 @@ [:team-id ::sm/uuid]]) (def sql:team-invitations - "select email_to as email, role, (valid_until < now()) as expired - from team_invitation where team_id = ? order by valid_until desc, created_at desc") + "SELECT email_to AS email, + role, + (valid_until < ?::timestamptz) AS expired + FROM team_invitation + WHERE team_id = ? + ORDER BY valid_until DESC, created_at DESC") (defn get-team-invitations [conn team-id] - (->> (db/exec! conn [sql:team-invitations team-id]) - (mapv #(update % :role keyword)))) + (let [now (ct/now)] + (->> (db/exec! conn [sql:team-invitations now team-id]) + (mapv #(update % :role keyword))))) (sv/defmethod ::get-team-invitations {::doc/added "1.17" diff --git a/backend/src/app/rpc/commands/teams_invitations.clj b/backend/src/app/rpc/commands/teams_invitations.clj index 3559a3e7ed..b4bc676acf 100644 --- a/backend/src/app/rpc/commands/teams_invitations.clj +++ b/backend/src/app/rpc/commands/teams_invitations.clj @@ -6,6 +6,7 @@ (ns app.rpc.commands.teams-invitations (:require + [app.binfile.common :as bfc] [app.common.data :as d] [app.common.data.macros :as dm] [app.common.exceptions :as ex] @@ -21,7 +22,6 @@ [app.loggers.audit :as audit] [app.main :as-alias main] [app.rpc :as-alias rpc] - [app.rpc.commands.files :as files] [app.rpc.commands.profile :as profile] [app.rpc.commands.teams :as teams] [app.rpc.doc :as-alias doc] @@ -43,7 +43,7 @@ (defn- create-invitation-token [cfg {:keys [profile-id valid-until team-id member-id member-email role]}] - (tokens/generate (::setup/props cfg) + (tokens/generate cfg {:iss :team-invitation :exp valid-until :profile-id profile-id @@ -54,12 +54,8 @@ (defn- create-profile-identity-token [cfg profile-id] - - (dm/assert! - "expected valid uuid for profile-id" - (uuid? profile-id)) - - (tokens/generate (::setup/props cfg) + (assert (uuid? profile-id) "expected valid uuid for profile-id") + (tokens/generate cfg {:iss :profile-identity :profile-id profile-id :exp (ct/in-future {:days 30})})) @@ -224,62 +220,112 @@ (def ^:private xf:map-email (map :email)) (defn- create-team-invitations - [{:keys [::db/conn] :as cfg} {:keys [profile team role emails] :as params}] - (let [emails (set emails) + "Unified function to handle both create and resend team invitations. + Accepts either: + - emails (set) + role (single role for all emails) + - invitations (vector of {:email :role} maps)" + [{:keys [::db/conn] :as cfg} {:keys [profile team role emails invitations] :as params}] + (let [;; Normalize input to a consistent format: [{:email :role}] + invitation-data (cond + ;; Case 1: emails + single role (create invitations style) + (and emails role) + (map (fn [email] {:email email :role role}) emails) - join-requests (->> (get-valid-access-request-profiles conn (:id team)) - (d/index-by :email)) + ;; Case 2: invitations with individual roles (resend invitations style) + (some? invitations) + invitations - team-members (into #{} xf:map-email - (teams/get-team-members conn (:id team))) + :else + (throw (ex-info "Invalid parameters: must provide either emails+role or invitations" {}))) - invitations (into #{} - (comp - ;; We don't re-send inviation to - ;; already existing members - (remove team-members) + invitation-emails (into #{} (map :email) invitation-data) + + join-requests (->> (get-valid-access-request-profiles conn (:id team)) + (d/index-by :email)) + + team-members (into #{} xf:map-email + (teams/get-team-members conn (:id team))) + + invitations (into #{} + (comp + ;; We don't re-send invitations to + ;; already existing members + (remove #(contains? team-members (:email %))) ;; We don't send invitations to ;; join-requested members - (remove join-requests) - (map (fn [email] (assoc params :email email))) - (keep (partial create-invitation cfg))) - emails)] + (remove #(contains? join-requests (:email %))) + (map (fn [{:keys [email role]}] + (create-invitation cfg + (-> params + (assoc :email email) + (assoc :role role))))) + (remove nil?)) + invitation-data)] ;; For requested invitations, do not send invitation emails, add ;; the user directly to the team (->> join-requests - (filter #(contains? emails (key %))) - (map val) - (run! (partial add-member-to-team conn profile team role))) + (filter #(contains? invitation-emails (key %))) + (map (fn [[email member]] + (let [role (:role (first (filter #(= (:email %) email) invitation-data)))] + (add-member-to-team conn profile team role member)))) + (doall)) invitations)) (def ^:private schema:create-team-invitations - [:map {:title "create-team-invitations"} - [:team-id ::sm/uuid] - [:role types.team/schema:role] - [:emails [::sm/set ::sm/email]]]) + [:and + [:map {:title "create-team-invitations"} + [:team-id ::sm/uuid] + ;; Support both formats: + ;; 1. emails (set) + role (single role for all) + ;; 2. invitations (vector of {:email :role} maps) + [:emails {:optional true} [::sm/set ::sm/email]] + [:role {:optional true} types.team/schema:role] + [:invitations {:optional true} [:vector [:map + [:email ::sm/email] + [:role types.team/schema:role]]]]] + + ;; Ensure exactly one format is provided + [:fn (fn [params] + (let [has-emails-role (and (contains? params :emails) + (contains? params :role)) + has-invitations (contains? params :invitations)] + (and (or has-emails-role has-invitations) + (not (and has-emails-role has-invitations)))))]]) (def ^:private max-invitations-by-request-threshold "The number of invitations can be sent in a single rpc request" 25) (sv/defmethod ::create-team-invitations - "A rpc call that allow to send a single or multiple invitations to - join the team." + "A rpc call that allows to send single or multiple invitations to join the team. + + Supports two parameter formats: + 1. emails (set) + role (single role for all emails) + 2. invitations (vector of {:email :role} maps for individual roles)" {::doc/added "1.17" ::doc/module :teams ::sm/params schema:create-team-invitations} - [cfg {:keys [::rpc/profile-id team-id emails] :as params}] + [cfg {:keys [::rpc/profile-id team-id role emails] :as params}] (let [perms (teams/get-permissions cfg profile-id team-id) profile (db/get-by-id cfg :profile profile-id) - emails (into #{} (map profile/clean-email) emails)] + ;; Determine which format is being used + using-emails-format? (and emails role) + ;; Handle both parameter formats + emails (if using-emails-format? + (into #{} (map profile/clean-email) emails) + #{}) + ;; Calculate total invitation count for both formats + invitation-count (if using-emails-format? + (count emails) + (count (:invitations params)))] (when-not (:is-admin perms) (ex/raise :type :validation :code :insufficient-permissions)) - (when (> (count emails) max-invitations-by-request-threshold) + (when (> invitation-count max-invitations-by-request-threshold) (ex/raise :type :validation :code :max-invitations-by-request :hint "the maximum of invitation on single request is reached" @@ -288,7 +334,7 @@ (-> cfg (assoc ::quotes/profile-id profile-id) (assoc ::quotes/team-id team-id) - (assoc ::quotes/incr (count emails)) + (assoc ::quotes/incr invitation-count) (quotes/check! {::quotes/id ::quotes/invitations-per-team} {::quotes/id ::quotes/profiles-per-team})) @@ -304,7 +350,12 @@ (-> params (assoc :profile profile) (assoc :team team) - (assoc :emails emails)))] + ;; Pass parameters in the correct format for the unified function + (cond-> using-emails-format? + ;; If using emails+role format, ensure both are present + (assoc :emails emails :role role) + ;; If using invitations format, the :invitations key is already in params + (not using-emails-format?) identity)))] (with-meta {:total (count invitations) :invitations invitations} @@ -467,7 +518,7 @@ (defn- check-existing-team-access-request "Checks if an existing team access request is still valid" - [conn team-id profile-id] + [{:keys [::db/conn]} team-id profile-id] (when-let [request (db/get* conn :team-access-request {:team-id team-id :requester-id profile-id})] @@ -485,8 +536,8 @@ (defn- upsert-team-access-request "Create or update team access request for provided team and profile-id" - [conn team-id requester-id] - (check-existing-team-access-request conn team-id requester-id) + [{:keys [::db/conn] :as cfg} team-id requester-id] + (check-existing-team-access-request cfg team-id requester-id) (let [valid-until (ct/in-future {:hours 24}) auto-join-until (ct/in-future {:days 7}) request-id (uuid/next)] @@ -499,7 +550,7 @@ "A specific method for obtain a file with name and page-id used for team request access procediment" [cfg file-id] - (let [file (files/get-file cfg file-id :migrate? false)] + (let [file (bfc/get-file cfg file-id :migrate? false)] (-> file (dissoc :data) (dissoc :deleted-at) @@ -548,7 +599,7 @@ (teams/check-email-bounce conn (:email team-owner) false) (teams/check-email-spam conn (:email team-owner) true) - (let [request (upsert-team-access-request conn team-id profile-id) + (let [request (upsert-team-access-request cfg team-id profile-id) factory (cond (and (some? file) (:is-default team) is-viewer) eml/request-file-access-yourpenpot-view diff --git a/backend/src/app/rpc/commands/verify_token.clj b/backend/src/app/rpc/commands/verify_token.clj index ff59a5eead..b650e6a8b9 100644 --- a/backend/src/app/rpc/commands/verify_token.clj +++ b/backend/src/app/rpc/commands/verify_token.clj @@ -38,7 +38,7 @@ ::doc/module :auth ::sm/params schema:verify-token} [cfg {:keys [token] :as params}] - (let [claims (tokens/verify (::setup/props cfg) {:token token})] + (let [claims (tokens/verify cfg {:token token})] (db/tx-run! cfg process-token params claims))) (defmethod process-token :change-email diff --git a/backend/src/app/rpc/commands/viewer.clj b/backend/src/app/rpc/commands/viewer.clj index db8cb7a80f..a1025b6dbf 100644 --- a/backend/src/app/rpc/commands/viewer.clj +++ b/backend/src/app/rpc/commands/viewer.clj @@ -51,7 +51,7 @@ (defn- get-view-only-bundle [{:keys [::db/conn] :as cfg} {:keys [profile-id file-id ::perms] :as params}] - (let [file (files/get-file cfg file-id) + (let [file (bfc/get-file cfg file-id) project (db/get conn :project {:id (:project-id file)} @@ -81,7 +81,7 @@ libs (->> (bfc/get-file-libraries conn file-id) (mapv (fn [{:keys [id] :as lib}] - (merge lib (files/get-file cfg id))))) + (merge lib (bfc/get-file cfg id))))) links (->> (db/query conn :share-link {:file-id file-id}) (mapv (fn [row] diff --git a/backend/src/app/rpc/rlimit.clj b/backend/src/app/rpc/rlimit.clj index bb2ccededa..d181b843fe 100644 --- a/backend/src/app/rpc/rlimit.clj +++ b/backend/src/app/rpc/rlimit.clj @@ -66,13 +66,6 @@ [integrant.core :as ig] [promesa.exec :as px])) -(def ^:private default-timeout - (ct/duration 400)) - -(def ^:private default-options - {:codec rds/string-codec - :timeout default-timeout}) - (def ^:private bucket-rate-limit-script {::rscript/name ::bucket-rate-limit ::rscript/path "app/rpc/rlimit/bucket.lua"}) @@ -177,11 +170,11 @@ :hint (str/ffmt "looks like '%' does not have a valid format" opts)))) (defmethod process-limit :bucket - [redis user-id now {:keys [::key ::params ::service ::capacity ::interval ::rate] :as limit}] + [rconn user-id now {:keys [::key ::params ::service ::capacity ::interval ::rate] :as limit}] (let [script (-> bucket-rate-limit-script (assoc ::rscript/keys [(str key "." service "." user-id)]) (assoc ::rscript/vals (conj params (->seconds now)))) - result (rds/eval redis script) + result (rds/eval rconn script) allowed? (boolean (nth result 0)) remaining (nth result 1) reset (* (/ (inst-ms interval) rate) @@ -199,13 +192,13 @@ (assoc ::lresult/remaining remaining)))) (defmethod process-limit :window - [redis user-id now {:keys [::nreq ::unit ::key ::service] :as limit}] + [rconn user-id now {:keys [::nreq ::unit ::key ::service] :as limit}] (let [ts (ct/truncate now unit) ttl (ct/diff now (ct/plus ts {unit 1})) script (-> window-rate-limit-script (assoc ::rscript/keys [(str key "." service "." user-id "." (ct/format-inst ts))]) (assoc ::rscript/vals [nreq (->seconds ttl)])) - result (rds/eval redis script) + result (rds/eval rconn script) allowed? (boolean (nth result 0)) remaining (nth result 1)] (l/trace :hint "limit processed" @@ -220,9 +213,9 @@ (assoc ::lresult/remaining remaining) (assoc ::lresult/reset (ct/plus ts {unit 1}))))) -(defn- process-limits! - [redis user-id limits now] - (let [results (into [] (map (partial process-limit redis user-id now)) limits) +(defn- process-limits + [rconn user-id limits now] + (let [results (into [] (map (partial process-limit rconn user-id now)) limits) remaining (->> results (d/index-by ::name ::lresult/remaining) (uri/map->query-string)) @@ -259,34 +252,25 @@ (some-> request inet/parse-request) uuid/zero))) -(defn process-request! - [{:keys [::rpc/rlimit ::rds/redis ::skey ::sname] :as cfg} params] - (when-let [limits (get-limits rlimit skey sname)] - (let [redis (rds/get-or-connect redis ::rpc/rlimit default-options) - uid (get-uid params) - ;; FIXME: why not clasic try/catch? - result (ex/try! (process-limits! redis uid limits (ct/now)))] - - (l/trc :hint "process-limits" - :service sname - :remaining (::remaingin result) - :reset (::reset result)) - - (cond - (ex/exception? result) - (do - (l/error :hint "error on processing rate-limit" :cause result) - {::enabled false}) - - (contains? cf/flags :soft-rpc-rlimit) +(defn- process-request' + [{:keys [::rds/conn] :as cfg} limits params] + (try + (let [uid (get-uid params) + result (process-limits conn uid limits (ct/now))] + (if (contains? cf/flags :soft-rpc-rlimit) {::enabled false} + result)) + (catch Throwable cause + (l/error :hint "error on processing rate-limit" :cause cause) + {::enabled false}))) - :else - result)))) +(defn- process-request + [{:keys [::rpc/rlimit ::skey ::sname] :as cfg} params] + (when-let [limits (get-limits rlimit skey sname)] + (rds/run! cfg process-request' limits params))) (defn wrap - [{:keys [::rpc/rlimit ::rds/redis] :as cfg} f mdata] - (assert (rds/redis? redis) "expected a valid redis instance") + [{:keys [::rpc/rlimit] :as cfg} f mdata] (assert (or (nil? rlimit) (valid-rlimit-instance? rlimit)) "expected a valid rlimit instance") (if rlimit @@ -298,7 +282,7 @@ (fn [hcfg params] (if @enabled - (let [result (process-request! cfg params)] + (let [result (process-request cfg params)] (if (::enabled result) (if (::allowed result) (-> (f hcfg params) @@ -399,7 +383,7 @@ (when-let [path (cf/get :rpc-rlimit-config)] (and (fs/exists? path) (fs/regular-file? path) path))) -(defmethod ig/assert-key :app.rpc/rlimit +(defmethod ig/assert-key ::rpc/rlimit [_ {:keys [::wrk/executor]}] (assert (sm/valid? ::wrk/executor executor) "expect valid executor")) diff --git a/backend/src/app/setup/clock.clj b/backend/src/app/setup/clock.clj new file mode 100644 index 0000000000..09ab991856 --- /dev/null +++ b/backend/src/app/setup/clock.clj @@ -0,0 +1,48 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.setup.clock + "A service/module that manages the system clock and allows runtime + modification of time offset (useful for testing and time adjustments)." + (:require + [app.common.logging :as l] + [app.common.time :as ct] + [app.setup :as-alias setup] + [integrant.core :as ig]) + (:import + java.time.Clock + java.time.Duration)) + +(defonce current + (atom {:clock (Clock/systemDefaultZone) + :offset nil})) + +(defmethod ig/init-key ::setup/clock + [_ _] + (add-watch current ::common + (fn [_ _ _ {:keys [clock offset]}] + (let [clock (if (ct/duration? offset) + (Clock/offset ^Clock clock + ^Duration offset) + clock)] + (l/wrn :hint "altering clock" :clock (str clock)) + (alter-var-root #'ct/*clock* (constantly clock)))))) + + +(defmethod ig/halt-key! ::setup/clock + [_ _] + (remove-watch current ::common)) + +(defn set-offset! + [duration] + (swap! current assoc :offset (some-> duration ct/duration))) + +(defn set-clock! + ([] + (swap! current assoc :clock (Clock/systemDefaultZone))) + ([clock] + (when (instance? Clock clock) + (swap! current assoc :clock clock)))) diff --git a/backend/src/app/srepl/cli.clj b/backend/src/app/srepl/cli.clj index 22139f5631..4df356752d 100644 --- a/backend/src/app/srepl/cli.clj +++ b/backend/src/app/srepl/cli.clj @@ -7,7 +7,7 @@ (ns app.srepl.cli "PREPL API for external usage (CLI or ADMIN)" (:require - [app.auth :as auth] + [app.auth :refer [derive-password]] [app.common.exceptions :as ex] [app.common.schema :as sm] [app.common.schema.generators :as sg] @@ -54,7 +54,7 @@ (some-> (get-current-system) (db/tx-run! (fn [{:keys [::db/conn] :as system}] - (let [password (cmd.profile/derive-password system password) + (let [password (derive-password password) params {:id (uuid/next) :email email :fullname fullname @@ -74,7 +74,7 @@ (assoc :fullname fullname) (some? password) - (assoc :password (auth/derive-password password)) + (assoc :password (derive-password password)) (some? is-active) (assoc :is-active is-active))] @@ -124,13 +124,12 @@ (defmethod exec-command "derive-password" [{:keys [password]}] - (auth/derive-password password)) + (derive-password password)) (defmethod exec-command "authenticate" [{:keys [token]}] (when-let [system (get-current-system)] - (let [props (get system ::setup/props)] - (tokens/verify props {:token token :iss "authentication"})))) + (tokens/verify system {:token token :iss "authentication"}))) (def ^:private schema:get-customer [:map [:id ::sm/uuid]]) diff --git a/backend/src/app/srepl/fixes.clj b/backend/src/app/srepl/fixes.clj deleted file mode 100644 index 18d849603b..0000000000 --- a/backend/src/app/srepl/fixes.clj +++ /dev/null @@ -1,278 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. -;; -;; Copyright (c) KALEIDOS INC - -(ns app.srepl.fixes - "A misc of fix functions" - (:refer-clojure :exclude [parse-uuid]) - (:require - [app.binfile.common :as bfc] - [app.common.data :as d] - [app.common.data.macros :as dm] - [app.common.files.changes :as cpc] - [app.common.files.helpers :as cfh] - [app.common.files.repair :as cfr] - [app.common.files.validate :as cfv] - [app.common.logging :as l] - [app.common.types.component :as ctk] - [app.common.types.container :as ctn] - [app.common.types.file :as ctf] - [app.common.uuid :as uuid] - [app.db :as db] - [app.features.fdata :as feat.fdata] - [app.srepl.helpers :as h])) - -(defn disable-fdata-features - [{:keys [id features] :as file} _] - (when (or (contains? features "fdata/pointer-map") - (contains? features "fdata/objects-map")) - (l/warn :hint "disable fdata features" :file-id (str id)) - (-> file - (update :data feat.fdata/process-pointers deref) - (update :data feat.fdata/process-objects (partial into {})) - (update :features disj "fdata/pointer-map" "fdata/objects-map")))) - -(def sql:get-fdata-files - "SELECT id FROM file - WHERE deleted_at is NULL - AND (features @> '{fdata/pointer-map}' OR - features @> '{fdata/objects-map}') - ORDER BY created_at DESC") - -(defn find-fdata-pointers - [{:keys [id features data] :as file} _] - (when (contains? features "fdata/pointer-map") - (let [pointers (feat.fdata/get-used-pointer-ids data)] - (l/warn :hint "found pointers" :file-id (str id) :pointers pointers) - nil))) - -(defn repair-file-media - "A helper intended to be used with `srepl.main/process-files!` that - fixes all not propertly referenced file-media-object for a file" - [{:keys [id data] :as file} & _] - (let [conn (db/get-connection h/*system*) - used (cfh/collect-used-media data) - ids (db/create-array conn "uuid" used) - sql "SELECT * FROM file_media_object WHERE id = ANY(?)" - rows (db/exec! conn [sql ids]) - index (reduce (fn [index media] - (if (not= (:file-id media) id) - (let [media-id (uuid/next)] - (l/wrn :hint "found not referenced media" - :file-id (str id) - :media-id (str (:id media))) - - (db/insert! conn :file-media-object - (-> media - (assoc :file-id id) - (assoc :id media-id))) - (assoc index (:id media) media-id)) - index)) - {} - rows)] - - (when (seq index) - (binding [bfc/*state* (atom {:index index})] - (update file :data (fn [fdata] - (-> fdata - (update :pages-index #'bfc/relink-shapes) - (update :components #'bfc/relink-shapes) - (update :media #'bfc/relink-media) - (d/without-nils)))))))) - - -(defn repair-file - "Internal helper for validate and repair the file. The operation is - applied multiple times untile file is fixed or max iteration counter - is reached (default 10)" - [file libs & {:keys [max-iterations] :or {max-iterations 10}}] - - (let [validate-and-repair - (fn [file libs iteration] - (when-let [errors (not-empty (cfv/validate-file file libs))] - (l/trc :hint "repairing file" - :file-id (str (:id file)) - :iteration iteration - :errors (count errors)) - (let [changes (cfr/repair-file file libs errors)] - (-> file - (update :revn inc) - (update :data cpc/process-changes changes))))) - - process-file - (fn [file libs] - (loop [file file - iteration 0] - (if (< iteration max-iterations) - (if-let [file (validate-and-repair file libs iteration)] - (recur file (inc iteration)) - file) - (do - (l/wrn :hint "max retry num reached on repairing file" - :file-id (str (:id file)) - :iteration iteration) - file)))) - - file' - (process-file file libs)] - - (when (not= (:revn file) (:revn file')) - (l/trc :hint "file repaired" :file-id (str (:id file)))) - - file')) - -(defn fix-touched-shapes-group - [file _] - ;; Remove :shapes-group from the touched elements - (letfn [(fix-fdata [data] - (-> data - (update :pages-index update-vals fix-container))) - - (fix-container [container] - (d/update-when container :objects update-vals fix-shape)) - - (fix-shape [shape] - (d/update-when shape :touched - (fn [touched] - (disj touched :shapes-group))))] - file (-> file - (update :data fix-fdata)))) - -(defn add-swap-slots - [file libs _opts] - ;; Detect swapped copies and try to generate a valid swap-slot. - (letfn [(process-fdata [data] - ;; Walk through all containers in the file, both pages and deleted components. - (reduce process-container data (ctf/object-containers-seq data))) - - (process-container [data container] - ;; Walk through all shapes in depth-first tree order. - (l/dbg :hint "Processing container" :type (:type container) :name (:name container)) - (let [root-shape (ctn/get-container-root container)] - (ctf/update-container data - container - #(reduce process-shape % (ctn/get-direct-children container root-shape))))) - - (process-shape [container shape] - ;; Look for head copies in the first level (either component roots or inside main components). - ;; Even if they have been swapped, we don't add slot to them because there is no way to know - ;; the original shape. Only children. - (if (and (ctk/instance-head? shape) - (ctk/in-component-copy? shape) - (nil? (ctk/get-swap-slot shape))) - (process-copy-head container shape) - (reduce process-shape container (ctn/get-direct-children container shape)))) - - (process-copy-head [container head-shape] - ;; Process recursively all children, comparing each one with the corresponding child in the main - ;; component, looking by position. If the shape-ref does not point to the found child, then it has - ;; been swapped and need to set up a slot. - (l/trc :hint "Processing copy-head" :id (:id head-shape) :name (:name head-shape)) - (let [component-shape (ctf/find-ref-shape file container libs head-shape :include-deleted? true :with-context? true) - component-container (:container (meta component-shape))] - (loop [container container - children (map #(ctn/get-shape container %) (:shapes head-shape)) - component-children (map #(ctn/get-shape component-container %) (:shapes component-shape))] - (let [child (first children) - component-child (first component-children)] - (if (or (nil? child) (nil? component-child)) - container - (let [container (if (and (not (ctk/is-main-of? component-child child)) - (nil? (ctk/get-swap-slot child)) - (ctk/instance-head? child)) - (let [slot (guess-swap-slot component-child component-container)] - (l/dbg :hint "child" :id (:id child) :name (:name child) :slot slot) - (ctn/update-shape container (:id child) #(ctk/set-swap-slot % slot))) - container)] - (recur (process-copy-head container child) - (rest children) - (rest component-children)))))))) - - (guess-swap-slot [shape container] - ;; To guess the slot, we must follow the chain until we find the definitive main. But - ;; we cannot navigate by shape-ref, because main shapes may also have been swapped. So - ;; chain by position, too. - (if-let [slot (ctk/get-swap-slot shape)] - slot - (if-not (ctk/in-component-copy? shape) - (:id shape) - (let [head-copy (ctn/get-component-shape (:objects container) shape)] - (if (= (:id head-copy) (:id shape)) - (:id shape) - (let [head-main (ctf/find-ref-shape file - container - libs - head-copy - :include-deleted? true - :with-context? true) - container-main (:container (meta head-main)) - shape-main (find-match-by-position shape - head-copy - container - head-main - container-main)] - (guess-swap-slot shape-main container-main))))))) - - (find-match-by-position [shape-copy head-copy container-copy head-main container-main] - ;; Find the shape in the main that has the same position under its parent than - ;; the copy under its one. To get the parent we must process recursively until - ;; the component head, because mains may also have been swapped. - (let [parent-copy (ctn/get-shape container-copy (:parent-id shape-copy)) - parent-main (if (= (:id parent-copy) (:id head-copy)) - head-main - (find-match-by-position parent-copy - head-copy - container-copy - head-main - container-main)) - index (cfh/get-position-on-parent (:objects container-copy) - (:id shape-copy)) - shape-main-id (dm/get-in parent-main [:shapes index])] - (ctn/get-shape container-main shape-main-id)))] - - file (-> file - (update :data process-fdata)))) - - - -(defn fix-find-duplicated-slots - [file _] - ;; Find the shapes whose children have duplicated slots - (let [check-duplicate-swap-slot - (fn [shape page] - (let [shapes (map #(get (:objects page) %) (:shapes shape)) - slots (->> (map #(ctk/get-swap-slot %) shapes) - (remove nil?)) - counts (frequencies slots)] - #_(when (some (fn [[_ count]] (> count 1)) counts) - (l/trc :info "This shape has children with the same swap slot" :id (:id shape) :file-id (str (:id file)))) - (some (fn [[_ count]] (> count 1)) counts))) - - count-slots-shape - (fn [page shape] - (if (ctk/instance-root? shape) - (check-duplicate-swap-slot shape page) - false)) - - count-slots-page - (fn [page] - (->> (:objects page) - (vals) - (mapv #(count-slots-shape page %)) - (filter true?) - count)) - - count-slots-data - (fn [data] - (->> (:pages-index data) - (vals) - (mapv count-slots-page) - (reduce +))) - - num-missing-slots (count-slots-data (:data file))] - - (when (pos? num-missing-slots) - (l/trc :info (str "Shapes with children with the same swap slot: " num-missing-slots) :file-id (str (:id file)))) - file)) diff --git a/backend/src/app/srepl/fixes/lost_colors.clj b/backend/src/app/srepl/fixes/lost_colors.clj deleted file mode 100644 index d1aea9a1d1..0000000000 --- a/backend/src/app/srepl/fixes/lost_colors.clj +++ /dev/null @@ -1,88 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. -;; -;; Copyright (c) KALEIDOS INC - -(ns app.srepl.fixes.lost-colors - "A collection of adhoc fixes scripts." - (:require - [app.binfile.common :as bfc] - [app.common.logging :as l] - [app.common.types.color :as types.color] - [app.db :as db] - [app.srepl.helpers :as h])) - -(def sql:get-affected-files - "SELECT fm.file_id AS id FROM file_migration AS fm WHERE fm.name = '0008-fix-library-colors-v2'") - -(def sql:get-matching-snapshot - "SELECT * FROM file_change - WHERE file_id = ? - AND created_at <= ? - AND label IS NOT NULL - AND data IS NOT NULL - ORDER BY created_at DESC - LIMIT 2") - -(defn get-affected-migration - [conn file-id] - (db/get* conn :file-migration - {:name "0008-fix-library-colors-v2" - :file-id file-id})) - -(defn get-last-valid-snapshot - [conn migration] - (let [[snapshot] (db/exec! conn [sql:get-matching-snapshot - (:file-id migration) - (:created-at migration)])] - (when snapshot - (let [snapshot (assoc snapshot :id (:file-id snapshot))] - (bfc/decode-file h/*system* snapshot))))) - -(defn restore-color - [{:keys [data] :as snapshot} color] - (when-let [scolor (get-in data [:colors (:id color)])] - (-> (select-keys scolor types.color/library-color-attrs) - (types.color/check-library-color)))) - -(defn restore-missing-colors - [{:keys [id] :as file} & _opts] - (l/inf :hint "process file" :file-id (str id) :name (:name file) :has-colors (-> file :data :colors not-empty boolean)) - (if-let [colors (-> file :data :colors not-empty)] - (let [migration (get-affected-migration h/*system* id)] - (if-let [snapshot (get-last-valid-snapshot h/*system* migration)] - (do - (l/inf :hint "using snapshot" :snapshot (:label snapshot)) - (let [colors (reduce-kv (fn [colors color-id color] - (if-let [result (restore-color snapshot color)] - (do - (l/inf :hint "restored color" :file-id (str id) :color-id (str color-id)) - (assoc colors color-id result)) - (do - (l/wrn :hint "ignoring color" :file-id (str id) :color (pr-str color)) - colors))) - colors - colors) - file (-> file - (update :data assoc :colors colors) - (update :migrations disj "0008-fix-library-colors-v2"))] - - (db/delete! h/*system* :file-migration - {:name "0008-fix-library-colors-v2" - :file-id (:id file)}) - file)) - - (do - (db/delete! h/*system* :file-migration - {:name "0008-fix-library-colors-v2" - :file-id (:id file)}) - nil))) - - (do - (db/delete! h/*system* :file-migration - {:name "0008-fix-library-colors-v2" - :file-id (:id file)}) - nil))) - - diff --git a/backend/src/app/srepl/helpers.clj b/backend/src/app/srepl/helpers.clj index cb1d54e2fa..3e870e2d61 100644 --- a/backend/src/app/srepl/helpers.clj +++ b/backend/src/app/srepl/helpers.clj @@ -14,9 +14,8 @@ [app.common.files.validate :as cfv] [app.common.time :as ct] [app.db :as db] - [app.main :as main] - [app.rpc.commands.files :as files] - [app.rpc.commands.files-snapshot :as fsnap])) + [app.features.file-snapshots :as fsnap] + [app.main :as main])) (def ^:dynamic *system* nil) @@ -48,7 +47,7 @@ ([system id] (db/run! system (fn [system] - (files/get-file system id :migrate? false))))) + (bfc/get-file system id :decode? false))))) (defn update-team! [system {:keys [id] :as team}] @@ -118,10 +117,10 @@ (let [conn (db/get-connection system)] (->> (get-and-lock-team-files conn team-id) (reduce (fn [result file-id] - (let [file (fsnap/get-file-snapshots system file-id)] - (fsnap/create-file-snapshot! system file - {:label label - :created-by :admin}) + (let [file (bfc/get-file system file-id :realize? true :lock-for-update? true)] + (fsnap/create! system file + {:label label + :created-by "admin"}) (inc result))) 0)))) @@ -132,21 +131,34 @@ (into #{})) snap (search-file-snapshots conn ids label) - ids' (into #{} (map :file-id) snap)] (when (not= ids ids') (throw (RuntimeException. "no uniform snapshot available"))) (reduce (fn [result {:keys [file-id id]}] - (fsnap/restore-file-snapshot! system file-id id) + (fsnap/restore! system file-id id) (inc result)) 0 snap))) +(defn mark-migrated! + "A helper that inserts an entry in the file migration table for make + file migrated for the specified migration label." + [system file-id label] + (db/insert! system :file-migration + {:file-id file-id + :name label} + {::db/return-keys false})) + (defn process-file! - [system file-id update-fn & {:keys [label validate? with-libraries?] :or {validate? true} :as opts}] - (let [file (bfc/get-file system file-id ::db/for-update true) + [system file-id update-fn + & {:keys [::snapshot-label ::validate? ::with-libraries?] + :or {validate? true} :as opts}] + (let [file (bfc/get-file system file-id + :lock-for-update? true + :realize? true) + libs (when with-libraries? (bfc/get-resolved-file-libraries system file)) @@ -162,12 +174,12 @@ (when validate? (cfv/validate-file-schema! file')) - (when (string? label) - (fsnap/create-file-snapshot! system file - {:label label - :deleted-at (ct/in-future {:days 30}) - :created-by :admin})) + (when (string? snapshot-label) + (fsnap/create! system file + {:label snapshot-label + :deleted-at (ct/in-future {:days 30}) + :created-by "admin"})) (let [file' (update file' :revn inc)] - (bfc/update-file! system file') + (bfc/update-file! system file' opts) true)))) diff --git a/backend/src/app/srepl/main.clj b/backend/src/app/srepl/main.clj index 69d6008021..f2286013aa 100644 --- a/backend/src/app/srepl/main.clj +++ b/backend/src/app/srepl/main.clj @@ -5,7 +5,6 @@ ;; Copyright (c) KALEIDOS INC (ns app.srepl.main - "A collection of adhoc fixes scripts." #_:clj-kondo/ignore (:require [app.auth :refer [derive-password]] @@ -24,19 +23,19 @@ [app.config :as cf] [app.db :as db] [app.db.sql :as-alias sql] - [app.features.fdata :as feat.fdata] + [app.features.fdata :as fdata] + [app.features.file-snapshots :as fsnap] [app.loggers.audit :as audit] [app.main :as main] [app.msgbus :as mbus] [app.rpc.commands.auth :as auth] [app.rpc.commands.files :as files] - [app.rpc.commands.files-snapshot :as fsnap] [app.rpc.commands.management :as mgmt] [app.rpc.commands.profile :as profile] [app.rpc.commands.projects :as projects] [app.rpc.commands.teams :as teams] - [app.srepl.fixes :as fixes] [app.srepl.helpers :as h] + [app.srepl.procs.file-repair :as procs.file-repair] [app.util.blob :as blob] [app.util.pointer-map :as pmap] [app.worker :as wrk] @@ -48,6 +47,7 @@ [cuerdas.core :as str] [datoteka.fs :as fs] [promesa.exec :as px] + [promesa.exec.csp :as sp] [promesa.exec.semaphore :as ps] [promesa.util :as pu])) @@ -147,25 +147,6 @@ ;; FEATURES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(declare process-file!) - -(defn enable-objects-map-feature-on-file! - [file-id & {:as opts}] - (process-file! file-id feat.fdata/enable-objects-map opts)) - -(defn enable-pointer-map-feature-on-file! - [file-id & {:as opts}] - (process-file! file-id feat.fdata/enable-pointer-map opts)) - -(defn enable-path-data-feature-on-file! - [file-id & {:as opts}] - (process-file! file-id feat.fdata/enable-path-data opts)) - -(defn enable-storage-features-on-file! - [file-id & {:as opts}] - (enable-objects-map-feature-on-file! file-id opts) - (enable-pointer-map-feature-on-file! file-id opts)) - (defn enable-team-feature! [team-id feature & {:keys [skip-check] :or {skip-check false}}] (when (and (not skip-check) (not (contains? cfeat/supported-features feature))) @@ -339,7 +320,10 @@ collectable file-changes entry." [& {:keys [file-id label]}] (let [file-id (h/parse-uuid file-id)] - (db/tx-run! main/system fsnap/create-file-snapshot! {:file-id file-id :label label}))) + (db/tx-run! main/system + (fn [cfg] + (let [file (bfc/get-file cfg file-id :realize? true)] + (fsnap/create! cfg file {:label label :created-by "admin"})))))) (defn restore-file-snapshot! [file-id & {:keys [label id]}] @@ -349,13 +333,13 @@ (fn [{:keys [::db/conn] :as system}] (cond (uuid? snapshot-id) - (fsnap/restore-file-snapshot! system file-id snapshot-id) + (fsnap/restore! system file-id snapshot-id) (string? label) (->> (h/search-file-snapshots conn #{file-id} label) (map :id) (first) - (fsnap/restore-file-snapshot! system file-id)) + (fsnap/restore! system file-id)) :else (throw (ex-info "snapshot id or label should be provided" {}))))))) @@ -364,9 +348,9 @@ [file-id & {:as _}] (let [file-id (h/parse-uuid file-id)] (db/tx-run! main/system - (fn [{:keys [::db/conn]}] - (->> (fsnap/get-file-snapshots conn file-id) - (print-table [:label :id :revn :created-at])))))) + (fn [cfg] + (->> (fsnap/get-visible-snapshots cfg file-id) + (print-table [:label :id :revn :created-at :created-by])))))) (defn take-team-snapshot! [team-id & {:keys [label rollback?] :or {rollback? true}}] @@ -413,24 +397,19 @@ (println (sm/humanize-explain explain)) (ex/print-throwable cause)))))))) -(defn repair-file! - "Repair the list of errors detected by validation." - [file-id & {:keys [rollback?] :or {rollback? true} :as opts}] - (let [system (assoc main/system ::db/rollback rollback?) - file-id (h/parse-uuid file-id) - opts (assoc opts :with-libraries? true)] - (db/tx-run! system h/process-file! file-id fixes/repair-file opts))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; PROCESSING ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(def sql:get-files - "SELECT id FROM file - WHERE deleted_at is NULL - ORDER BY created_at DESC") +(defn repair-file! + "Repair the list of errors detected by validation." + [file-id & {:keys [rollback?] :or {rollback? true} :as options}] + (let [system (assoc main/system ::db/rollback rollback?) + file-id (h/parse-uuid file-id) + options (assoc options ::h/with-libraries? true)] + (db/tx-run! system h/process-file! file-id procs.file-repair/repair-file options))) -(defn process-file! +(defn update-file! "Apply a function to the file. Optionally save the changes or not. The function receives the decoded and migrated file data." [file-id update-fn & {:keys [rollback?] :or {rollback? true} :as opts}] @@ -441,114 +420,117 @@ db/*conn* (db/get-connection system)] (h/process-file! system file-id update-fn opts)))))) -(defn process-team-files! - "Apply a function to each file of the specified team." - [team-id update-fn & {:keys [rollback? label] :or {rollback? true} :as opts}] - (let [team-id (h/parse-uuid team-id) - opts (dissoc opts :label)] - (db/tx-run! (assoc main/system ::db/rollback rollback?) - (fn [{:keys [::db/conn] :as system}] - (when (string? label) - (h/take-team-snapshot! system team-id label)) +(defn process! + [& {:keys [max-items + max-jobs + rollback? + query + proc-fn + buffer] + :or {max-items Long/MAX_VALUE + rollback? true + max-jobs 1 + buffer 128} + :as opts}] - (binding [h/*system* system - db/*conn* (db/get-connection system)] - (->> (h/get-and-lock-team-files conn team-id) - (reduce (fn [result file-id] - (if (h/process-file! system file-id update-fn opts) - (inc result) - result)) - 0))))))) - -(defn process-files! - "Apply a function to all files in the database" - [update-fn & {:keys [max-items - max-jobs - rollback? - query] - :or {max-jobs 1 - max-items Long/MAX_VALUE - rollback? true - query sql:get-files} - :as opts}] - - (l/dbg :hint "process:start" + (l/inf :hint "process start" :rollback rollback? :max-jobs max-jobs :max-items max-items) (let [tpoint (ct/tpoint) - factory (px/thread-factory :virtual false :prefix "penpot/file-process/") - executor (px/cached-executor :factory factory) - sjobs (ps/create :permits max-jobs) + max-jobs (or max-jobs (px/get-available-processors)) + query (or query + (:query (meta proc-fn)) + (throw (ex-info "missing query" {}))) + query (if (vector? query) query [query]) - process-file - (fn [file-id idx tpoint] - (let [thread-id (px/get-thread-id)] - (try - (l/trc :hint "process:file:start" - :tid thread-id - :file-id (str file-id) - :index idx) - (let [system (assoc main/system ::db/rollback rollback?)] - (db/tx-run! system (fn [system] - (binding [h/*system* system - db/*conn* (db/get-connection system)] - (h/process-file! system file-id update-fn opts))))) + proc-fn (if (var? proc-fn) + (deref proc-fn) + proc-fn) - (catch Throwable cause - (l/wrn :hint "unexpected error on processing file (skiping)" - :tid thread-id - :file-id (str file-id) - :index idx - :cause cause)) - (finally - (when-let [pause (:pause opts)] - (Thread/sleep (int pause))) + in-ch (sp/chan :buf buffer) - (ps/release! sjobs) - (let [elapsed (ct/format-duration (tpoint))] - (l/trc :hint "process:file:end" - :tid thread-id - :file-id (str file-id) - :index idx - :elapsed elapsed)))))) + worker-fn + (fn [worker-id] + (l/dbg :hint "worker started" + :id worker-id) - process-file* - (fn [idx file-id] - (ps/acquire! sjobs) - (px/run! executor (partial process-file file-id idx (ct/tpoint))) - (inc idx)) + (loop [] + (when-let [[index item] (sp/ main/system + (assoc ::db/rollback rollback?) + (db/tx-run! (fn [system] + (binding [h/*system* system + db/*conn* (db/get-connection system)] + (proc-fn system item opts))))) - process-files + (catch Throwable cause + (l/wrn :hint "unexpected error on processing item (skiping)" + :worker-id worker-id + :item item + :cause cause)) + (finally + (when-let [pause (:pause opts)] + (Thread/sleep (int pause))))) + + (recur))) + + (l/dbg :hint "worker stoped" + :id worker-id)) + + enqueue-item + (fn [index row] + (sp/>! in-ch [index (into {} row)]) + (inc index)) + + process-items (fn [{:keys [::db/conn] :as system}] (db/exec! conn ["SET statement_timeout = 0"]) (db/exec! conn ["SET idle_in_transaction_session_timeout = 0"]) - (try - (->> (db/plan conn [query]) - (transduce (comp - (take max-items) - (map :id)) - (completing process-file*) - 0)) - (finally - ;; Close and await tasks - (pu/close! executor))))] + (->> (db/plan conn query {:fetch-size (* max-jobs 3)}) + (transduce (take max-items) + (completing enqueue-item) + 0)) + (sp/close! in-ch)) + + threads + (->> (range max-jobs) + (map (fn [idx] + (px/fn->thread (partial worker-fn idx) + :name (str "pentpot/process/" idx)))) + (doall))] (try - (db/tx-run! main/system process-files) + (db/tx-run! main/system process-items) + + ;; Await threads termination + (doseq [thread threads] + (px/await! thread)) (catch Throwable cause (l/dbg :hint "process:error" :cause cause)) (finally (let [elapsed (ct/format-duration (tpoint))] - (l/dbg :hint "process:end" + (l/inf :hint "process end" :rollback rollback? :elapsed elapsed)))))) +(defn process-file! + "A specialized, file specific process! alternative" + [& {:keys [id] :as opts}] + (let [id (h/parse-uuid id)] + (-> opts + (assoc :query ["select id from file where id = ?" id]) + (assoc :max-items 1) + (assoc :max-jobs 1) + (process!)))) + (defn mark-file-as-trimmed [id] (let [id (h/parse-uuid id)] @@ -590,25 +572,34 @@ (db/update! conn :file {:deleted-at nil :has-media-trimmed false} - {:id file-id}) - - ;; Fragments are not handled here because they - ;; use the database cascade operation and they - ;; are not marked for deletion with objects-gc - ;; task + {:id file-id} + {::db/return-keys false}) (db/update! conn :file-media-object {:deleted-at nil} - {:file-id file-id}) + {:file-id file-id} + {::db/return-keys false}) + + (db/update! conn :file-change + {:deleted-at nil} + {:file-id file-id} + {::db/return-keys false}) + + (db/update! conn :file-data + {:deleted-at nil} + {:file-id file-id} + {::db/return-keys false}) ;; Mark thumbnails to be deleted (db/update! conn :file-thumbnail {:deleted-at nil} - {:file-id file-id}) + {:file-id file-id} + {::db/return-keys false}) (db/update! conn :file-tagged-object-thumbnail {:deleted-at nil} - {:file-id file-id}) + {:file-id file-id} + {::db/return-keys false}) :restored) @@ -618,11 +609,10 @@ (let [file-id (h/parse-uuid file-id)] (db/tx-run! main/system (fn [system] - (when-let [file (some-> (db/get* system :file - {:id file-id} - {::db/remove-deleted false - ::sql/columns [:id :name]}) - (files/decode-row))] + (when-let [file (db/get* system :file + {:id file-id} + {::db/remove-deleted false + ::sql/columns [:id :name]})] (audit/insert! system {::audit/name "restore-file" ::audit/type "action" diff --git a/backend/src/app/srepl/procs/fdata_storage.clj b/backend/src/app/srepl/procs/fdata_storage.clj new file mode 100644 index 0000000000..e0833acd8d --- /dev/null +++ b/backend/src/app/srepl/procs/fdata_storage.clj @@ -0,0 +1,141 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.srepl.procs.fdata-storage + (:require + [app.common.logging :as l] + [app.db :as db])) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; SNAPSHOTS +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(def sql:get-unmigrated-snapshots + "SELECT fc.id, fc.file_id + FROM file_change AS fc + WHERE fc.data IS NOT NULL + AND fc.label IS NOT NULL + ORDER BY fc.id ASC") + +(def sql:get-migrated-snapshots + "SELECT f.id, f.file_id + FROM file_data AS f + WHERE f.data IS NOT NULL + AND f.type = 'snapshot' + AND f.id != f.file_id + ORDER BY f.id ASC") + +(defn migrate-snapshot-to-storage + "Migrate the current existing files to store data in new storage + tables." + {:query sql:get-unmigrated-snapshots} + [{:keys [::db/conn]} {:keys [id file-id]} & {:as options}] + (let [{:keys [id file-id data created-at updated-at]} + (db/get* conn :file-change {:id id :file-id file-id} + ::db/for-update true + ::db/remove-deleted false)] + (when data + (l/inf :hint "migrating snapshot" :file-id (str file-id) :id (str id)) + (db/update! conn :file-change + {:data nil} + {:id id :file-id file-id} + {::db/return-keys false}) + (db/insert! conn :file-data + {:backend "db" + :metadata nil + :type "snapshot" + :data data + :created-at created-at + :modified-at updated-at + :file-id file-id + :id id} + {::db/return-keys false})))) + +(defn rollback-snapshot-from-storage + "Migrate back to the file table storage." + {:query sql:get-unmigrated-snapshots} + [{:keys [::db/conn]} {:keys [id file-id]} & {:as opts}] + (when-let [{:keys [id file-id data]} + (db/get* conn :file-data {:id id :file-id file-id :type "snapshot"} + ::db/for-update true + ::db/remove-deleted false)] + (l/inf :hint "rollback snapshot" :file-id (str file-id) :id (str id)) + (db/update! conn :file-change + {:data data} + {:id id :file-id file-id} + {::db/return-keys false}) + (db/delete! conn :file-data + {:id id :file-id file-id :type "snapshot"} + {::db/return-keys false}))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; FILES +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(def sql:get-unmigrated-files + "SELECT f.id + FROM file AS f + WHERE f.data IS NOT NULL + ORDER BY f.modified_at ASC") + +(def sql:get-migrated-files + "SELECT f.id, f.file_id + FROM file_data AS f + WHERE f.data IS NOT NULL + AND f.id = f.file_id + ORDER BY f.id ASC") + +(defn migrate-file-to-storage + "Migrate the current existing files to store data in new storage + tables." + {:query sql:get-unmigrated-files} + [{:keys [::db/conn] :as cfg} {:keys [id]} & {:as opts}] + (let [{:keys [id data created-at modified-at]} + (db/get* conn :file {:id id} + ::db/for-update true + ::db/remove-deleted false)] + + (when data + (l/inf :hint "migrating file" :file-id (str id)) + + (db/update! conn :file {:data nil} {:id id} ::db/return-keys false) + (db/insert! conn :file-data + {:backend "db" + :metadata nil + :type "main" + :data data + :created-at created-at + :modified-at modified-at + :file-id id + :id id} + {::db/return-keys false})) + + (let [snapshots-sql + (str "WITH snapshots AS (" sql:get-unmigrated-snapshots ") " + "SELECT s.* FROM snapshots AS s WHERE s.file_id = ?")] + (run! (fn [params] + (migrate-snapshot-to-storage cfg params opts)) + (db/plan cfg [snapshots-sql id]))))) + + +(defn rollback-file-from-storage + "Migrate back to the file table storage." + {:query sql:get-migrated-files} + [{:keys [::db/conn] :as cfg} {:keys [id]} & {:as opts}] + (when-let [{:keys [id data]} + (db/get* conn :file-data {:id id :file-id id :type "main"} + ::db/for-update true + ::db/remove-deleted false)] + (l/inf :hint "rollback file" :file-id (str id)) + (db/update! conn :file {:data data} {:id id} ::db/return-keys false) + (db/delete! conn :file-data {:file-id id :id id :type "main"} ::db/return-keys false) + + (let [snapshots-sql + (str "WITH snapshots AS (" sql:get-migrated-snapshots ") " + "SELECT s.* FROM snapshots AS s WHERE s.file_id = ?")] + (run! (fn [params] + (rollback-snapshot-from-storage cfg params opts)) + (db/plan cfg [snapshots-sql id]))))) diff --git a/backend/src/app/srepl/procs/file_repair.clj b/backend/src/app/srepl/procs/file_repair.clj new file mode 100644 index 0000000000..d259a8156b --- /dev/null +++ b/backend/src/app/srepl/procs/file_repair.clj @@ -0,0 +1,60 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.srepl.procs.file-repair + (:require + [app.common.files.changes :as cfc] + [app.common.files.repair :as cfr] + [app.common.files.validate :as cfv] + [app.common.logging :as l])) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; GENERAL PURPOSE REPAIR +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defn repair-file + "Internal helper for validate and repair the file. The operation is + applied multiple times untile file is fixed or max iteration counter + is reached (default 10). + + This function should not be used directly, it is used throught the + app.srepl.main/repair-file! helper. In practical terms this function + is private and implementation detail." + [file libs & {:keys [max-iterations] :or {max-iterations 10}}] + + (let [validate-and-repair + (fn [file libs iteration] + (when-let [errors (not-empty (cfv/validate-file file libs))] + (l/trc :hint "repairing file" + :file-id (str (:id file)) + :iteration iteration + :errors (count errors)) + (let [changes (cfr/repair-file file libs errors)] + (-> file + (update :revn inc) + (update :data cfc/process-changes changes))))) + + process-file + (fn [file libs] + (loop [file file + iteration 0] + (if (< iteration max-iterations) + (if-let [file (validate-and-repair file libs iteration)] + (recur file (inc iteration)) + file) + (do + (l/wrn :hint "max retry num reached on repairing file" + :file-id (str (:id file)) + :iteration iteration) + file)))) + + file' + (process-file file libs)] + + (when (not= (:revn file) (:revn file')) + (l/trc :hint "file repaired" :file-id (str (:id file)))) + + file')) diff --git a/backend/src/app/srepl/fixes/media_refs.clj b/backend/src/app/srepl/procs/media_refs.clj similarity index 66% rename from backend/src/app/srepl/fixes/media_refs.clj rename to backend/src/app/srepl/procs/media_refs.clj index 44d3cc6e0c..1e60490f16 100644 --- a/backend/src/app/srepl/fixes/media_refs.clj +++ b/backend/src/app/srepl/procs/media_refs.clj @@ -4,10 +4,11 @@ ;; ;; Copyright (c) KALEIDOS INC -(ns app.srepl.fixes.media-refs +(ns app.srepl.procs.media-refs (:require [app.binfile.common :as bfc] [app.common.files.helpers :as cfh] + [app.common.logging :as l] [app.srepl.helpers :as h])) (defn- collect-media-refs @@ -37,7 +38,22 @@ (let [media-refs (collect-media-refs (:data file))] (bfc/update-media-references! cfg file media-refs))) -(defn process-file - [file _opts] - (let [system (h/get-current-system)] - (update-all-media-references system file))) +(def ^:private sql:get-files + "SELECT f.id + FROM file AS f + LEFT JOIN file_migration AS fm ON (fm.file_id = f.id AND fm.name = 'internal/procs/media-refs') + WHERE fm.name IS NULL + ORDER BY f.project_id") + +(defn fix-media-refs + {:query sql:get-files} + [cfg {:keys [id]} & {:as options}] + (l/inf :hint "processing file" :id (str id)) + + (h/process-file! cfg id + (fn [file _opts] + (update-all-media-references cfg file)) + (assoc options + ::bfc/reset-migrations? true + ::h/validate? false)) + (h/mark-migrated! cfg id "internal/procs/media-refs")) diff --git a/backend/src/app/srepl/procs/path_data.clj b/backend/src/app/srepl/procs/path_data.clj new file mode 100644 index 0000000000..6b72d39719 --- /dev/null +++ b/backend/src/app/srepl/procs/path_data.clj @@ -0,0 +1,57 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.srepl.procs.path-data + (:require + [app.binfile.common :as bfc] + [app.common.data :as d] + [app.common.files.helpers :as cfh] + [app.common.logging :as l] + [app.srepl.helpers :as h])) + +(def ^:private sql:get-files-with-path-data + "SELECT id FROM file WHERE features @> '{fdata/path-data}'") + +(defn disable + "A script responsible for remove the path data type from file data and + allow file to be open in older penpot versions. + + Should be used only in cases when you want to downgrade to an older + penpot version for some reason." + {:query sql:get-files-with-path-data} + [cfg {:keys [id]} & {:as options}] + + (l/inf :hint "disabling path-data" :file-id (str id)) + + (let [update-object + (fn [object] + (if (or (cfh/path-shape? object) + (cfh/bool-shape? object)) + (update object :content vec) + object)) + + update-container + (fn [container] + (d/update-when container :objects d/update-vals update-object)) + + update-file + (fn [file & _opts] + (-> file + (update :data (fn [data] + (-> data + (update :pages-index d/update-vals update-container) + (d/update-when :components d/update-vals update-container)))) + (update :features disj "fdata/path-data") + (update :migrations disj + "0003-convert-path-content-v2" + "0003-convert-path-content"))) + + options + (-> options + (assoc ::bfc/reset-migrations? true) + (assoc ::h/validate? false))] + + (h/process-file! cfg id update-file options))) diff --git a/backend/src/app/storage.clj b/backend/src/app/storage.clj index f92f2ac7ef..08ddfd76f7 100644 --- a/backend/src/app/storage.clj +++ b/backend/src/app/storage.clj @@ -27,7 +27,9 @@ (defn get-legacy-backend [] - (let [name (cf/get :assets-storage-backend)] + (when-let [name (cf/get :assets-storage-backend)] + (l/wrn :hint "using deprecated configuration, please read 2.11 release notes" + :href "https://github.com/penpot/penpot/releases/tag/2.11.0") (case name :assets-fs :fs :assets-s3 :s3 @@ -113,13 +115,10 @@ (defn- create-database-object [{:keys [::backend ::db/connectable]} {:keys [::content ::expired-at ::touched-at ::touch] :as params}] - (let [id (or (:id params) (uuid/random)) + (let [id (or (::id params) (uuid/random)) mdata (cond-> (get-metadata params) (satisfies? impl/IContentHash content) - (assoc :hash (impl/get-hash content)) - - :always - (dissoc :id)) + (assoc :hash (impl/get-hash content))) touched-at (if touch (or touched-at (ct/now)) diff --git a/backend/src/app/storage/gc_touched.clj b/backend/src/app/storage/gc_touched.clj index 199d0c6b74..c828a69cb3 100644 --- a/backend/src/app/storage/gc_touched.clj +++ b/backend/src/app/storage/gc_touched.clj @@ -34,7 +34,7 @@ (SELECT EXISTS (SELECT 1 FROM team_font_variant WHERE ttf_file_id = ?))) AS has_refs") (defn- has-team-font-variant-refs? - [conn id] + [conn {:keys [id]}] (-> (db/exec-one! conn [sql:has-team-font-variant-refs id id id id]) (get :has-refs))) @@ -44,7 +44,7 @@ (SELECT EXISTS (SELECT 1 FROM file_media_object WHERE thumbnail_id = ?))) AS has_refs") (defn- has-file-media-object-refs? - [conn id] + [conn {:keys [id]}] (-> (db/exec-one! conn [sql:has-file-media-object-refs id id]) (get :has-refs))) @@ -53,7 +53,7 @@ (SELECT EXISTS (SELECT 1 FROM team WHERE photo_id = ?))) AS has_refs") (defn- has-profile-refs? - [conn id] + [conn {:keys [id]}] (-> (db/exec-one! conn [sql:has-profile-refs id id]) (get :has-refs))) @@ -62,7 +62,7 @@ "SELECT EXISTS (SELECT 1 FROM file_tagged_object_thumbnail WHERE media_id = ?) AS has_refs") (defn- has-file-object-thumbnails-refs? - [conn id] + [conn {:keys [id]}] (-> (db/exec-one! conn [sql:has-file-object-thumbnail-refs id]) (get :has-refs))) @@ -71,36 +71,23 @@ "SELECT EXISTS (SELECT 1 FROM file_thumbnail WHERE media_id = ?) AS has_refs") (defn- has-file-thumbnails-refs? - [conn id] + [conn {:keys [id]}] (-> (db/exec-one! conn [sql:has-file-thumbnail-refs id]) (get :has-refs))) -(def ^:private - sql:has-file-data-refs - "SELECT EXISTS (SELECT 1 FROM file WHERE data_ref_id = ?) AS has_refs") +(def sql:exists-file-data-refs + "SELECT EXISTS ( + SELECT 1 FROM file_data + WHERE file_id = ? + AND id = ? + AND metadata->>'storage-ref-id' = ?::text + ) AS has_refs") (defn- has-file-data-refs? - [conn id] - (-> (db/exec-one! conn [sql:has-file-data-refs id]) - (get :has-refs))) - -(def ^:private - sql:has-file-data-fragment-refs - "SELECT EXISTS (SELECT 1 FROM file_data_fragment WHERE data_ref_id = ?) AS has_refs") - -(defn- has-file-data-fragment-refs? - [conn id] - (-> (db/exec-one! conn [sql:has-file-data-fragment-refs id]) - (get :has-refs))) - -(def ^:private - sql:has-file-change-refs - "SELECT EXISTS (SELECT 1 FROM file_change WHERE data_ref_id = ?) AS has_refs") - -(defn- has-file-change-refs? - [conn id] - (-> (db/exec-one! conn [sql:has-file-change-refs id]) - (get :has-refs))) + [conn sobject] + (let [{:keys [file-id id]} (:metadata sobject)] + (-> (db/exec-one! conn [sql:exists-file-data-refs file-id id (:id sobject)]) + (get :has-refs)))) (def ^:private sql:mark-freeze-in-bulk "UPDATE storage_object @@ -143,52 +130,48 @@ "file-media-object")) (defn- process-objects! - [conn has-refs? ids bucket] + [conn has-refs? bucket objects] (loop [to-freeze #{} to-delete #{} - ids (seq ids)] - (if-let [id (first ids)] - (if (has-refs? conn id) + objects (seq objects)] + (if-let [{:keys [id] :as object} (first objects)] + (if (has-refs? conn object) (do - (l/debug :hint "processing object" - :id (str id) + (l/debug :id (str id) :status "freeze" :bucket bucket) - (recur (conj to-freeze id) to-delete (rest ids))) + (recur (conj to-freeze id) to-delete (rest objects))) (do - (l/debug :hint "processing object" - :id (str id) + (l/debug :id (str id) :status "delete" :bucket bucket) - (recur to-freeze (conj to-delete id) (rest ids)))) + (recur to-freeze (conj to-delete id) (rest objects)))) (do (some->> (seq to-freeze) (mark-freeze-in-bulk! conn)) (some->> (seq to-delete) (mark-delete-in-bulk! conn)) [(count to-freeze) (count to-delete)])))) (defn- process-bucket! - [conn bucket ids] + [conn bucket objects] (case bucket - "file-media-object" (process-objects! conn has-file-media-object-refs? ids bucket) - "team-font-variant" (process-objects! conn has-team-font-variant-refs? ids bucket) - "file-object-thumbnail" (process-objects! conn has-file-object-thumbnails-refs? ids bucket) - "file-thumbnail" (process-objects! conn has-file-thumbnails-refs? ids bucket) - "profile" (process-objects! conn has-profile-refs? ids bucket) - "file-data" (process-objects! conn has-file-data-refs? ids bucket) - "file-data-fragment" (process-objects! conn has-file-data-fragment-refs? ids bucket) - "file-change" (process-objects! conn has-file-change-refs? ids bucket) + "file-media-object" (process-objects! conn has-file-media-object-refs? bucket objects) + "team-font-variant" (process-objects! conn has-team-font-variant-refs? bucket objects) + "file-object-thumbnail" (process-objects! conn has-file-object-thumbnails-refs? bucket objects) + "file-thumbnail" (process-objects! conn has-file-thumbnails-refs? bucket objects) + "profile" (process-objects! conn has-profile-refs? bucket objects) + "file-data" (process-objects! conn has-file-data-refs? bucket objects) (ex/raise :type :internal :code :unexpected-unknown-reference :hint (dm/fmt "unknown reference '%'" bucket)))) (defn process-chunk! [{:keys [::db/conn]} chunk] - (reduce-kv (fn [[nfo ndo] bucket ids] - (let [[nfo' ndo'] (process-bucket! conn bucket ids)] + (reduce-kv (fn [[nfo ndo] bucket objects] + (let [[nfo' ndo'] (process-bucket! conn bucket objects)] [(+ nfo nfo') (+ ndo ndo')])) [0 0] - (d/group-by lookup-bucket :id #{} chunk))) + (d/group-by lookup-bucket identity #{} chunk))) (def ^:private sql:get-touched-storage-objects @@ -214,12 +197,7 @@ (let [[nfo ndo] (db/tx-run! cfg process-chunk! chunk)] (recur (long (+ freezed nfo)) (long (+ deleted ndo)))) - (do - (l/inf :hint "task finished" - :to-freeze freezed - :to-delete deleted) - - {:freeze freezed :delete deleted})))) + {:freeze freezed :delete deleted}))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; HANDLER diff --git a/backend/src/app/storage/s3.clj b/backend/src/app/storage/s3.clj index 73929c1639..8d28a9a9f3 100644 --- a/backend/src/app/storage/s3.clj +++ b/backend/src/app/storage/s3.clj @@ -31,13 +31,13 @@ java.time.Duration java.util.Collection java.util.Optional + java.util.concurrent.atomic.AtomicLong org.reactivestreams.Subscriber software.amazon.awssdk.core.ResponseBytes software.amazon.awssdk.core.async.AsyncRequestBody software.amazon.awssdk.core.async.AsyncResponseTransformer software.amazon.awssdk.core.async.BlockingInputStreamAsyncRequestBody software.amazon.awssdk.core.client.config.ClientAsyncConfiguration - software.amazon.awssdk.core.client.config.SdkAdvancedAsyncClientOption software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient software.amazon.awssdk.http.nio.netty.SdkEventLoopGroup software.amazon.awssdk.regions.Region @@ -87,12 +87,11 @@ (def ^:private schema:config [:map {:title "s3-backend-config"} - ::wrk/executor + ::wrk/netty-io-executor [::region {:optional true} :keyword] [::bucket {:optional true} ::sm/text] [::prefix {:optional true} ::sm/text] - [::endpoint {:optional true} ::sm/uri] - [::io-threads {:optional true} ::sm/int]]) + [::endpoint {:optional true} ::sm/uri]]) (defmethod ig/expand-key ::backend [k v] @@ -110,6 +109,7 @@ presigner (build-s3-presigner params)] (assoc params ::sto/type :s3 + ::counter (AtomicLong. 0) ::client @client ::presigner presigner ::close-fn #(.close ^java.lang.AutoCloseable client))))) @@ -121,7 +121,7 @@ (defmethod ig/halt-key! ::backend [_ {:keys [::close-fn]}] (when (fn? close-fn) - (px/run! close-fn))) + (close-fn))) (def ^:private schema:backend [:map {:title "s3-backend"} @@ -198,19 +198,16 @@ (Region/of (name region))) (defn- build-s3-client - [{:keys [::region ::endpoint ::io-threads ::wrk/executor]}] + [{:keys [::region ::endpoint ::wrk/netty-io-executor]}] (let [aconfig (-> (ClientAsyncConfiguration/builder) - (.advancedOption SdkAdvancedAsyncClientOption/FUTURE_COMPLETION_EXECUTOR executor) (.build)) sconfig (-> (S3Configuration/builder) (cond-> (some? endpoint) (.pathStyleAccessEnabled true)) (.build)) - thr-num (or io-threads (min 16 (px/get-available-processors))) hclient (-> (NettyNioAsyncHttpClient/builder) - (.eventLoopGroupBuilder (-> (SdkEventLoopGroup/builder) - (.numberOfThreads (int thr-num)))) + (.eventLoopGroup (SdkEventLoopGroup/create netty-io-executor)) (.connectionAcquisitionTimeout default-timeout) (.connectionTimeout default-timeout) (.readTimeout default-timeout) @@ -262,7 +259,7 @@ (.close ^InputStream input)))) (defn- make-request-body - [executor content] + [counter content] (let [size (impl/get-size content)] (reify AsyncRequestBody @@ -272,16 +269,19 @@ (^void subscribe [_ ^Subscriber subscriber] (let [delegate (AsyncRequestBody/forBlockingInputStream (long size)) input (io/input-stream content)] - (px/run! executor (partial write-input-stream delegate input)) + + (px/thread-call (partial write-input-stream delegate input) + {:name (str "penpot/storage/" (.getAndIncrement ^AtomicLong counter))}) + (.subscribe ^BlockingInputStreamAsyncRequestBody delegate ^Subscriber subscriber)))))) (defn- put-object - [{:keys [::client ::bucket ::prefix ::wrk/executor]} {:keys [id] :as object} content] + [{:keys [::client ::bucket ::prefix ::counter]} {:keys [id] :as object} content] (let [path (dm/str prefix (impl/id->path id)) mdata (meta object) mtype (:content-type mdata "application/octet-stream") - rbody (make-request-body executor content) + rbody (make-request-body counter content) request (.. (PutObjectRequest/builder) (bucket bucket) (contentType mtype) diff --git a/backend/src/app/storage/tmp.clj b/backend/src/app/storage/tmp.clj index 915195fbb2..4bbff4a72d 100644 --- a/backend/src/app/storage/tmp.clj +++ b/backend/src/app/storage/tmp.clj @@ -44,7 +44,7 @@ [_ cfg] (fs/create-dir default-tmp-dir) (px/fn->thread (partial io-loop cfg) - {:name "penpot/storage/tmp-cleaner" :virtual true})) + {:name "penpot/storage/tmp-cleaner"})) (defmethod ig/halt-key! ::cleaner [_ thread] diff --git a/backend/src/app/tasks/delete_object.clj b/backend/src/app/tasks/delete_object.clj index a9e50921ae..61282e4134 100644 --- a/backend/src/app/tasks/delete_object.clj +++ b/backend/src/app/tasks/delete_object.clj @@ -10,6 +10,7 @@ [app.common.logging :as l] [app.common.time :as ct] [app.db :as db] + [app.db.sql :as-alias sql] [app.rpc.commands.files :as files] [app.rpc.commands.profile :as profile] [integrant.core :as ig])) @@ -19,10 +20,28 @@ (defmulti delete-object (fn [_ props] (:object props))) +(defmethod delete-object :snapshot + [{:keys [::db/conn] :as cfg} {:keys [id file-id deleted-at]}] + (l/trc :obj "snapshot" :id (str id) :file-id (str file-id) + :deleted-at (ct/format-inst deleted-at)) + + (db/update! conn :file-change + {:deleted-at deleted-at} + {:id id :file-id file-id} + {::db/return-keys false}) + + (db/update! conn :file-data + {:deleted-at deleted-at} + {:id id :file-id file-id :type "snapshot"} + {::db/return-keys false})) + (defmethod delete-object :file [{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}] - (when-let [file (db/get* conn :file {:id id} {::db/remove-deleted false})] - (l/trc :hint "marking for deletion" :rel "file" :id (str id) + (when-let [file (db/get* conn :file {:id id} + {::db/remove-deleted false + ::sql/columns [:id :is-shared]})] + + (l/trc :obj "file" :id (str id) :deleted-at (ct/format-inst deleted-at)) (db/update! conn :file @@ -43,25 +62,35 @@ ;; Mark file change to be deleted (db/update! conn :file-change {:deleted-at deleted-at} - {:file-id id}) + {:file-id id} + {::db/return-keys false}) + + ;; Mark file data fragment to be deleted + (db/update! conn :file-data + {:deleted-at deleted-at} + {:file-id id} + {::db/return-keys false}) ;; Mark file media objects to be deleted (db/update! conn :file-media-object {:deleted-at deleted-at} - {:file-id id}) + {:file-id id} + {::db/return-keys false}) ;; Mark thumbnails to be deleted (db/update! conn :file-thumbnail {:deleted-at deleted-at} - {:file-id id}) + {:file-id id} + {::db/return-keys false}) (db/update! conn :file-tagged-object-thumbnail {:deleted-at deleted-at} - {:file-id id}))) + {:file-id id} + {::db/return-keys false}))) (defmethod delete-object :project [{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}] - (l/trc :hint "marking for deletion" :rel "project" :id (str id) + (l/trc :obj "project" :id (str id) :deleted-at (ct/format-inst deleted-at)) (db/update! conn :project @@ -78,7 +107,7 @@ (defmethod delete-object :team [{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}] - (l/trc :hint "marking for deletion" :rel "team" :id (str id) + (l/trc :obj "team" :id (str id) :deleted-at (ct/format-inst deleted-at)) (db/update! conn :team {:deleted-at deleted-at} @@ -100,7 +129,7 @@ (defmethod delete-object :profile [{:keys [::db/conn] :as cfg} {:keys [id deleted-at]}] - (l/trc :hint "marking for deletion" :rel "profile" :id (str id) + (l/trc :obj "profile" :id (str id) :deleted-at (ct/format-inst deleted-at)) (db/update! conn :profile @@ -115,7 +144,7 @@ (defmethod delete-object :default [_cfg props] - (l/wrn :hint "not implementation found" :rel (:object props))) + (l/wrn :obj (:object props) :hint "not implementation found")) (defmethod ig/assert-key ::handler [_ params] diff --git a/backend/src/app/tasks/file_gc.clj b/backend/src/app/tasks/file_gc.clj index 0201f194c8..946b9aa42b 100644 --- a/backend/src/app/tasks/file_gc.clj +++ b/backend/src/app/tasks/file_gc.clj @@ -23,29 +23,16 @@ [app.config :as cf] [app.db :as db] [app.features.fdata :as feat.fdata] + [app.features.file-snapshots :as fsnap] [app.storage :as sto] [app.worker :as wrk] [integrant.core :as ig])) (declare get-file) -(def sql:get-snapshots - "SELECT fc.file_id AS id, - fc.id AS snapshot_id, - fc.data, - fc.revn, - fc.version, - fc.features, - fc.data_backend, - fc.data_ref_id - FROM file_change AS fc - WHERE fc.file_id = ? - AND fc.data IS NOT NULL - ORDER BY fc.created_at ASC") - (def ^:private sql:mark-file-media-object-deleted "UPDATE file_media_object - SET deleted_at = now() + SET deleted_at = ? WHERE file_id = ? AND id != ALL(?::uuid[]) RETURNING id") @@ -56,37 +43,35 @@ (defn- clean-file-media! "Performs the garbage collection of file media objects." - [{:keys [::db/conn] :as cfg} {:keys [id] :as file}] - (let [xform (comp - (map (partial bfc/decode-file cfg)) - xf:collect-used-media) + [{:keys [::db/conn ::timestamp] :as cfg} {:keys [id] :as file}] + (let [used-media + (fsnap/reduce-snapshots cfg id xf:collect-used-media conj #{}) - used (->> (db/plan conn [sql:get-snapshots id] {:fetch-size 1}) - (transduce xform conj #{})) - used (into used xf:collect-used-media [file]) + used-media + (into used-media xf:collect-used-media [file]) - ids (db/create-array conn "uuid" used) - unused (->> (db/exec! conn [sql:mark-file-media-object-deleted id ids]) - (into #{} (map :id)))] + used-media + (db/create-array conn "uuid" used-media) - (l/dbg :hint "clean" :rel "file-media-object" :file-id (str id) :total (count unused)) + unused-media + (->> (db/exec! conn [sql:mark-file-media-object-deleted timestamp id used-media]) + (into #{} (map :id)))] - (doseq [id unused] - (l/trc :hint "mark deleted" - :rel "file-media-object" - :id (str id) - :file-id (str id))) + (doseq [id unused-media] + (l/trc :obj "media-object" + :file-id (str id) + :id (str id))) file)) (def ^:private sql:mark-file-object-thumbnails-deleted "UPDATE file_tagged_object_thumbnail - SET deleted_at = now() + SET deleted_at = ? WHERE file_id = ? AND object_id != ALL(?::text[]) RETURNING object_id") (defn- clean-file-object-thumbnails! - [{:keys [::db/conn]} {:keys [data] :as file}] + [{:keys [::db/conn ::timestamp]} {:keys [data] :as file}] (let [file-id (:id file) using (->> (vals (:pages-index data)) (into #{} (comp @@ -98,49 +83,37 @@ (thc/fmt-object-id file-id page-id id "frame") (thc/fmt-object-id file-id page-id id "component"))))))) - ids (db/create-array conn "text" using) - unused (->> (db/exec! conn [sql:mark-file-object-thumbnails-deleted file-id ids]) + ids (into-array String using) + unused (->> (db/exec! conn [sql:mark-file-object-thumbnails-deleted timestamp file-id ids]) (into #{} (map :object-id)))] - (l/dbg :hint "clean" :rel "file-object-thumbnail" :file-id (str file-id) :total (count unused)) - (doseq [object-id unused] - (l/trc :hint "mark deleted" - :rel "file-tagged-object-thumbnail" - :object-id object-id - :file-id (str file-id))) + (l/trc :obj "object-thumbnail" + :file-id (str file-id) + :id object-id)) file)) (def ^:private sql:mark-file-thumbnails-deleted "UPDATE file_thumbnail - SET deleted_at = now() + SET deleted_at = ? WHERE file_id = ? AND revn < ? RETURNING revn") (defn- clean-file-thumbnails! - [{:keys [::db/conn]} {:keys [id revn] :as file}] - (let [unused (->> (db/exec! conn [sql:mark-file-thumbnails-deleted id revn]) + [{:keys [::db/conn ::timestamp]} {:keys [id revn] :as file}] + (let [unused (->> (db/exec! conn [sql:mark-file-thumbnails-deleted timestamp id revn]) (into #{} (map :revn)))] - (l/dbg :hint "clean" :rel "file-thumbnail" :file-id (str id) :total (count unused)) - (doseq [revn unused] - (l/trc :hint "mark deleted" - :rel "file-thumbnail" - :revn revn - :file-id (str id))) + (l/trc :obj "thumbnail" + :file-id (str id) + :revn revn)) file)) (def ^:private sql:get-files-for-library - "SELECT f.id, - f.data, - f.modified_at, - f.features, - f.version, - f.data_backend, - f.data_ref_id + "SELECT f.id FROM file AS f LEFT JOIN file_library_rel AS fl ON (fl.file_id = f.id) WHERE fl.library_file_id = ? @@ -161,15 +134,21 @@ deleted-components (ctkl/deleted-components-seq data) - xform + file-xform (mapcat (partial get-used-components deleted-components file-id)) + library-xform + (comp + (map :id) + (map #(bfc/get-file cfg % :realize? true :read-only? true)) + file-xform) + used-remote (->> (db/plan conn [sql:get-files-for-library file-id] {:fetch-size 1}) - (transduce (comp (map (partial bfc/decode-file cfg)) xform) conj #{})) + (transduce library-xform conj #{})) used-local - (into #{} xform [file]) + (into #{} file-xform [file]) unused (transduce bfc/xf-map-id disj @@ -180,21 +159,21 @@ (update file :data (fn [data] (reduce (fn [data id] - (l/trc :hint "delete component" - :component-id (str id) - :file-id (str file-id)) + (l/trc :obj "component" + :file-id (str file-id) + :id (str id)) (ctkl/delete-component data id)) data unused)))] - (l/dbg :hint "clean" :rel "components" :file-id (str file-id) :total (count unused)) file)) (def ^:private sql:mark-deleted-data-fragments - "UPDATE file_data_fragment - SET deleted_at = now() + "UPDATE file_data + SET deleted_at = ? WHERE file_id = ? AND id != ALL(?::uuid[]) + AND type = 'fragment' AND deleted_at IS NULL RETURNING id") @@ -203,19 +182,16 @@ (mapcat feat.fdata/get-used-pointer-ids))) (defn- clean-fragments! - [{:keys [::db/conn]} {:keys [id] :as file}] + [{:keys [::db/conn ::timestamp]} {:keys [id] :as file}] (let [used (into #{} xf:collect-pointers [file]) - - unused (->> (db/exec! conn [sql:mark-deleted-data-fragments id + unused (->> (db/exec! conn [sql:mark-deleted-data-fragments timestamp id (db/create-array conn "uuid" used)]) (into #{} bfc/xf-map-id))] - (l/dbg :hint "clean" :rel "file-data-fragment" :file-id (str id) :total (count unused)) (doseq [id unused] - (l/trc :hint "mark deleted" - :rel "file-data-fragment" - :id (str id) - :file-id (str id))) + (l/trc :obj "fragment" + :file-id (str id) + :id (str id))) file)) @@ -229,36 +205,23 @@ (cfv/validate-file-schema! file) file)) -(def ^:private sql:get-file - "SELECT f.id, - f.data, - f.revn, - f.version, - f.features, - f.modified_at, - f.data_backend, - f.data_ref_id - FROM file AS f - WHERE f.has_media_trimmed IS false - AND f.modified_at < now() - ?::interval - AND f.deleted_at IS NULL - AND f.id = ? - FOR UPDATE - SKIP LOCKED") - (defn get-file - [{:keys [::db/conn ::min-age]} file-id] - (let [min-age (if min-age - (db/interval min-age) - (db/interval 0))] - (->> (db/exec! conn [sql:get-file min-age file-id]) - (first)))) + [cfg {:keys [file-id revn]}] + (let [file (bfc/get-file cfg file-id + :realize? true + :skip-locked? true + :lock-for-update? true)] + + ;; We should ensure that the scheduled file and the procesing file + ;; has not changed since schedule, for this reason we check the + ;; revn from props with the revn from retrieved file from database + (when (or (nil? revn) (= revn (:revn file))) + file))) (defn- process-file! - [cfg file-id] - (if-let [file (get-file cfg file-id)] + [cfg {:keys [file-id] :as props}] + (if-let [file (get-file cfg props)] (let [file (->> file - (bfc/decode-file cfg) (bfl/clean-file) (clean-media! cfg) (clean-fragments! cfg)) @@ -267,7 +230,7 @@ true) (do - (l/dbg :hint "skip" :file-id (str file-id)) + (l/dbg :hint "skip cleaning, criteria does not match" :file-id (str file-id)) false))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -282,26 +245,23 @@ (defmethod ig/init-key ::handler [_ cfg] (fn [{:keys [props] :as task}] - (let [min-age (ct/duration (or (:min-age props) - (cf/get-deletion-delay))) - file-id (get props :file-id) - cfg (-> cfg - (assoc ::db/rollback (:rollback? props)) - (assoc ::min-age min-age))] + (try + (-> cfg + (assoc ::db/rollback (:rollback? props)) + (db/tx-run! (fn [{:keys [::db/conn] :as cfg}] + (let [cfg (-> cfg + (update ::sto/storage sto/configure conn) + (assoc ::timestamp (ct/now))) + processed? (process-file! cfg props)] - (try - (db/tx-run! cfg (fn [{:keys [::db/conn] :as cfg}] - (let [cfg (update cfg ::sto/storage sto/configure conn) - processed? (process-file! cfg file-id)] - (when (and processed? (contains? cf/flags :tiered-file-data-storage)) - (wrk/submit! (-> cfg - (assoc ::wrk/task :offload-file-data) - (assoc ::wrk/params props) - (assoc ::wrk/priority 10) - (assoc ::wrk/delay 1000)))) - processed?))) - - (catch Throwable cause - (l/err :hint "error on cleaning file" - :file-id (str (:file-id props)) - :cause cause)))))) + (when (and processed? (contains? cf/flags :tiered-file-data-storage)) + (wrk/submit! (-> cfg + (assoc ::wrk/task :offload-file-data) + (assoc ::wrk/params props) + (assoc ::wrk/priority 10) + (assoc ::wrk/delay 1000)))) + processed?)))) + (catch Throwable cause + (l/err :hint "error on cleaning file" + :file-id (str (:file-id props)) + :cause cause))))) diff --git a/backend/src/app/tasks/file_gc_scheduler.clj b/backend/src/app/tasks/file_gc_scheduler.clj index 5dd732f404..32c1d4152c 100644 --- a/backend/src/app/tasks/file_gc_scheduler.clj +++ b/backend/src/app/tasks/file_gc_scheduler.clj @@ -17,29 +17,29 @@ (def ^:private sql:get-candidates "SELECT f.id, + f.revn, f.modified_at FROM file AS f WHERE f.has_media_trimmed IS false AND f.modified_at < now() - ?::interval AND f.deleted_at IS NULL ORDER BY f.modified_at DESC - FOR UPDATE + FOR UPDATE OF f SKIP LOCKED") (defn- get-candidates [{:keys [::db/conn ::min-age] :as cfg}] (let [min-age (db/interval min-age)] - (db/cursor conn [sql:get-candidates min-age] {:chunk-size 10}))) + (db/plan conn [sql:get-candidates min-age] {:fetch-size 10}))) (defn- schedule! - [{:keys [::min-age] :as cfg}] - (let [total (reduce (fn [total {:keys [id]}] - (let [params {:file-id id :min-age min-age}] + [cfg] + (let [total (reduce (fn [total {:keys [id modified-at revn]}] + (let [params {:file-id id :modified-at modified-at :revn revn}] (wrk/submit! (assoc cfg ::wrk/params params)) (inc total))) 0 (get-candidates cfg))] - {:processed total})) (defmethod ig/assert-key ::handler @@ -48,7 +48,7 @@ (defmethod ig/expand-key ::handler [k v] - {k (assoc v ::min-age (cf/get-deletion-delay))}) + {k (assoc v ::min-age (cf/get-file-clean-delay))}) (defmethod ig/init-key ::handler [_ cfg] diff --git a/backend/src/app/tasks/objects_gc.clj b/backend/src/app/tasks/objects_gc.clj index 319ef2f526..75b9c70065 100644 --- a/backend/src/app/tasks/objects_gc.clj +++ b/backend/src/app/tasks/objects_gc.clj @@ -11,6 +11,7 @@ [app.common.logging :as l] [app.common.time :as ct] [app.db :as db] + [app.features.fdata :as fdata] [app.storage :as sto] [integrant.core :as ig])) @@ -27,14 +28,14 @@ [{:keys [::db/conn ::deletion-threshold ::chunk-size ::sto/storage] :as cfg}] (->> (db/plan conn [sql:get-profiles deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [id photo-id]}] - (l/trc :hint "permanently delete" :rel "profile" :id (str id)) + (l/trc :obj "profile" :id (str id)) ;; Mark as deleted the storage object (some->> photo-id (sto/touch-object! storage)) - (db/delete! conn :profile {:id id}) - - (inc total)) + (let [affected (-> (db/delete! conn :profile {:id id}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private sql:get-teams @@ -50,8 +51,7 @@ [{:keys [::db/conn ::deletion-threshold ::chunk-size ::sto/storage] :as cfg}] (->> (db/plan conn [sql:get-teams deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [id photo-id deleted-at]}] - (l/trc :hint "permanently delete" - :rel "team" + (l/trc :obj "team" :id (str id) :deleted-at (ct/format-inst deleted-at)) @@ -59,9 +59,9 @@ (some->> photo-id (sto/touch-object! storage)) ;; And finally, permanently delete the team. - (db/delete! conn :team {:id id}) - - (inc total)) + (let [affected (-> (db/delete! conn :team {:id id}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private sql:get-fonts @@ -78,8 +78,7 @@ [{:keys [::db/conn ::deletion-threshold ::chunk-size ::sto/storage] :as cfg}] (->> (db/plan conn [sql:get-fonts deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [id team-id deleted-at] :as font}] - (l/trc :hint "permanently delete" - :rel "team-font-variant" + (l/trc :obj "font-variant" :id (str id) :team-id (str team-id) :deleted-at (ct/format-inst deleted-at)) @@ -90,10 +89,9 @@ (some->> (:otf-file-id font) (sto/touch-object! storage)) (some->> (:ttf-file-id font) (sto/touch-object! storage)) - ;; And finally, permanently delete the team font variant - (db/delete! conn :team-font-variant {:id id}) - - (inc total)) + (let [affected (-> (db/delete! conn :team-font-variant {:id id}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private sql:get-projects @@ -110,45 +108,40 @@ [{:keys [::db/conn ::deletion-threshold ::chunk-size] :as cfg}] (->> (db/plan conn [sql:get-projects deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [id team-id deleted-at]}] - (l/trc :hint "permanently delete" - :rel "project" + (l/trc :obj "project" :id (str id) :team-id (str team-id) :deleted-at (ct/format-inst deleted-at)) - ;; And finally, permanently delete the project. - (db/delete! conn :project {:id id}) - - (inc total)) + (let [affected (-> (db/delete! conn :project {:id id}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private sql:get-files - "SELECT id, deleted_at, project_id, data_backend, data_ref_id - FROM file - WHERE deleted_at IS NOT NULL - AND deleted_at < now() + ?::interval - ORDER BY deleted_at ASC + "SELECT f.id, + f.deleted_at, + f.project_id + FROM file AS f + WHERE f.deleted_at IS NOT NULL + AND f.deleted_at < now() + ?::interval + ORDER BY f.deleted_at ASC LIMIT ? FOR UPDATE SKIP LOCKED") (defn- delete-files! - [{:keys [::db/conn ::sto/storage ::deletion-threshold ::chunk-size] :as cfg}] + [{:keys [::db/conn ::deletion-threshold ::chunk-size] :as cfg}] (->> (db/plan conn [sql:get-files deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [id deleted-at project-id] :as file}] - (l/trc :hint "permanently delete" - :rel "file" + (l/trc :obj "file" :id (str id) :project-id (str project-id) :deleted-at (ct/format-inst deleted-at)) - (when (= "objects-storage" (:data-backend file)) - (sto/touch-object! storage (:data-ref-id file))) - - ;; And finally, permanently delete the file. - (db/delete! conn :file {:id id}) - - (inc total)) + (let [affected (-> (db/delete! conn :file {:id id}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private sql:get-file-thumbnails @@ -165,8 +158,7 @@ [{:keys [::db/conn ::deletion-threshold ::chunk-size ::sto/storage] :as cfg}] (->> (db/plan conn [sql:get-file-thumbnails deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [file-id revn media-id deleted-at]}] - (l/trc :hint "permanently delete" - :rel "file-thumbnail" + (l/trc :obj "file-thumbnail" :file-id (str file-id) :revn revn :deleted-at (ct/format-inst deleted-at)) @@ -174,10 +166,9 @@ ;; Mark as deleted the storage object (some->> media-id (sto/touch-object! storage)) - ;; And finally, permanently delete the object - (db/delete! conn :file-thumbnail {:file-id file-id :revn revn}) - - (inc total)) + (let [affected (-> (db/delete! conn :file-thumbnail {:file-id file-id :revn revn}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private sql:get-file-object-thumbnails @@ -194,8 +185,7 @@ [{:keys [::db/conn ::deletion-threshold ::chunk-size ::sto/storage] :as cfg}] (->> (db/plan conn [sql:get-file-object-thumbnails deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [file-id object-id media-id deleted-at]}] - (l/trc :hint "permanently delete" - :rel "file-tagged-object-thumbnail" + (l/trc :obj "file-object-thumbnail" :file-id (str file-id) :object-id object-id :deleted-at (ct/format-inst deleted-at)) @@ -203,36 +193,10 @@ ;; Mark as deleted the storage object (some->> media-id (sto/touch-object! storage)) - ;; And finally, permanently delete the object - (db/delete! conn :file-tagged-object-thumbnail {:file-id file-id :object-id object-id}) - - (inc total)) - 0))) - -(def ^:private sql:get-file-data-fragments - "SELECT file_id, id, deleted_at, data_ref_id - FROM file_data_fragment - WHERE deleted_at IS NOT NULL - AND deleted_at < now() + ?::interval - ORDER BY deleted_at ASC - LIMIT ? - FOR UPDATE - SKIP LOCKED") - -(defn- delete-file-data-fragments! - [{:keys [::db/conn ::sto/storage ::deletion-threshold ::chunk-size] :as cfg}] - (->> (db/plan conn [sql:get-file-data-fragments deletion-threshold chunk-size] {:fetch-size 5}) - (reduce (fn [total {:keys [file-id id deleted-at data-ref-id]}] - (l/trc :hint "permanently delete" - :rel "file-data-fragment" - :id (str id) - :file-id (str file-id) - :deleted-at (ct/format-inst deleted-at)) - - (some->> data-ref-id (sto/touch-object! storage)) - (db/delete! conn :file-data-fragment {:file-id file-id :id id}) - - (inc total)) + (let [affected (-> (db/delete! conn :file-tagged-object-thumbnail + {:file-id file-id :object-id object-id}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private sql:get-file-media-objects @@ -249,8 +213,7 @@ [{:keys [::db/conn ::deletion-threshold ::chunk-size ::sto/storage] :as cfg}] (->> (db/plan conn [sql:get-file-media-objects deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [id file-id deleted-at] :as fmo}] - (l/trc :hint "permanently delete" - :rel "file-media-object" + (l/trc :obj "file-media-object" :id (str id) :file-id (str file-id) :deleted-at (ct/format-inst deleted-at)) @@ -259,13 +222,48 @@ (some->> (:media-id fmo) (sto/touch-object! storage)) (some->> (:thumbnail-id fmo) (sto/touch-object! storage)) - (db/delete! conn :file-media-object {:id id}) + (let [affected (-> (db/delete! conn :file-media-object {:id id}) + (db/get-update-count))] + (+ total affected))) + 0))) - (inc total)) +(def ^:private sql:get-file-data + "SELECT file_id, id, type, deleted_at, metadata, backend + FROM file_data + WHERE deleted_at IS NOT NULL + AND deleted_at < now() + ?::interval + ORDER BY deleted_at ASC + LIMIT ? + FOR UPDATE + SKIP LOCKED") + +(defn- delete-file-data! + [{:keys [::db/conn ::deletion-threshold ::chunk-size] :as cfg}] + + (->> (db/plan conn [sql:get-file-data deletion-threshold chunk-size] {:fetch-size 5}) + (reduce (fn [total {:keys [file-id id type deleted-at metadata backend]}] + + (some->> metadata + (fdata/decode-metadata) + (fdata/process-metadata cfg)) + + (l/trc :obj "file-data" + :id (str id) + :file-id (str file-id) + :type type + :backend backend + :deleted-at (ct/format-inst deleted-at)) + + (let [affected (-> (db/delete! conn :file-data + {:file-id file-id + :id id + :type type}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private sql:get-file-change - "SELECT id, file_id, deleted_at, data_backend, data_ref_id + "SELECT id, file_id, deleted_at FROM file_change WHERE deleted_at IS NOT NULL AND deleted_at < now() + ?::interval @@ -275,29 +273,25 @@ SKIP LOCKED") (defn- delete-file-changes! - [{:keys [::db/conn ::deletion-threshold ::chunk-size ::sto/storage] :as cfg}] + [{:keys [::db/conn ::deletion-threshold ::chunk-size] :as cfg}] (->> (db/plan conn [sql:get-file-change deletion-threshold chunk-size] {:fetch-size 5}) (reduce (fn [total {:keys [id file-id deleted-at] :as xlog}] - (l/trc :hint "permanently delete" - :rel "file-change" + (l/trc :obj "file-change" :id (str id) :file-id (str file-id) :deleted-at (ct/format-inst deleted-at)) - (when (= "objects-storage" (:data-backend xlog)) - (sto/touch-object! storage (:data-ref-id xlog))) - - (db/delete! conn :file-change {:id id}) - - (inc total)) + (let [affected (-> (db/delete! conn :file-change {:id id}) + (db/get-update-count))] + (+ total affected))) 0))) (def ^:private deletion-proc-vars [#'delete-profiles! #'delete-file-media-objects! - #'delete-file-data-fragments! #'delete-file-object-thumbnails! #'delete-file-thumbnails! + #'delete-file-data! #'delete-file-changes! #'delete-files! #'delete-projects! @@ -309,9 +303,10 @@ until 0 results is returned" [cfg proc-fn] (loop [total 0] - (let [result (db/tx-run! cfg (fn [{:keys [::db/conn] :as cfg}] - (db/exec-one! conn ["SET LOCAL rules.deletion_protection TO off"]) - (proc-fn cfg)))] + (let [result (db/tx-run! cfg + (fn [{:keys [::db/conn] :as cfg}] + (db/exec-one! conn ["SET LOCAL rules.deletion_protection TO off"]) + (proc-fn cfg)))] (if (pos? result) (recur (long (+ total result))) total)))) @@ -336,6 +331,4 @@ (let [result (execute-proc! cfg proc-fn)] (recur (rest procs) (long (+ total result)))) - (do - (l/inf :hint "task finished" :deleted total) - {:processed total})))))) + {:processed total}))))) diff --git a/backend/src/app/tasks/offload_file_data.clj b/backend/src/app/tasks/offload_file_data.clj index c6ea5b0f88..965fff1e9b 100644 --- a/backend/src/app/tasks/offload_file_data.clj +++ b/backend/src/app/tasks/offload_file_data.clj @@ -8,101 +8,25 @@ "A maintenance task responsible of moving file data from hot storage (the database row) to a cold storage (fs or s3)." (:require - [app.common.exceptions :as ex] [app.common.logging :as l] [app.db :as db] - [app.db.sql :as-alias sql] + [app.features.fdata :as fdata] [app.storage :as sto] [integrant.core :as ig])) -(defn- offload-file-data! - [{:keys [::db/conn ::sto/storage ::file-id] :as cfg}] - (let [file (db/get conn :file {:id file-id} - {::sql/for-update true})] - (when (nil? (:data file)) - (ex/raise :hint "file already offloaded" - :type :internal - :code :file-already-offloaded - :file-id file-id)) +(def ^:private sql:get-file-data + "SELECT fd.* + FROM file_data AS fd + WHERE fd.file_id = ? + AND fd.backend = 'db' + AND fd.deleted_at IS NULL") - (let [data (sto/content (:data file)) - sobj (sto/put-object! storage - {::sto/content data - ::sto/touch true - :bucket "file-data" - :content-type "application/octet-stream" - :file-id file-id})] - - (l/trc :hint "offload file data" - :file-id (str file-id) - :storage-id (str (:id sobj))) - - (db/update! conn :file - {:data-backend "objects-storage" - :data-ref-id (:id sobj) - :data nil} - {:id file-id} - {::db/return-keys false})))) - -(defn- offload-file-data-fragments! - [{:keys [::db/conn ::sto/storage ::file-id] :as cfg}] - (doseq [fragment (db/query conn :file-data-fragment - {:file-id file-id - :deleted-at nil - :data-backend nil} - {::db/for-update true})] - (let [data (sto/content (:data fragment)) - sobj (sto/put-object! storage - {::sto/content data - ::sto/touch true - :bucket "file-data-fragment" - :content-type "application/octet-stream" - :file-id file-id - :file-fragment-id (:id fragment)})] - - (l/trc :hint "offload file data fragment" - :file-id (str file-id) - :file-fragment-id (str (:id fragment)) - :storage-id (str (:id sobj))) - - (db/update! conn :file-data-fragment - {:data-backend "objects-storage" - :data-ref-id (:id sobj) - :data nil} - {:id (:id fragment)} - {::db/return-keys false})))) - -(def sql:get-snapshots - "SELECT fc.* - FROM file_change AS fc - WHERE fc.file_id = ? - AND fc.label IS NOT NULL - AND fc.data IS NOT NULL - AND fc.data_backend IS NULL") - -(defn- offload-file-snapshots! - [{:keys [::db/conn ::sto/storage ::file-id] :as cfg}] - (doseq [snapshot (db/exec! conn [sql:get-snapshots file-id])] - (let [data (sto/content (:data snapshot)) - sobj (sto/put-object! storage - {::sto/content data - ::sto/touch true - :bucket "file-change" - :content-type "application/octet-stream" - :file-id file-id - :file-change-id (:id snapshot)})] - - (l/trc :hint "offload file change" - :file-id (str file-id) - :file-change-id (str (:id snapshot)) - :storage-id (str (:id sobj))) - - (db/update! conn :file-change - {:data-backend "objects-storage" - :data-ref-id (:id sobj) - :data nil} - {:id (:id snapshot)} - {::db/return-keys false})))) +(defn- offload-file-data + [cfg {:keys [id file-id type] :as fdata}] + (fdata/upsert! cfg (assoc fdata :backend "storage")) + (l/trc :file-id (str file-id) + :id (str id) + :type type)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; HANDLER @@ -116,10 +40,9 @@ (defmethod ig/init-key ::handler [_ cfg] (fn [{:keys [props] :as task}] - (-> cfg - (assoc ::db/rollback (:rollback? props)) - (assoc ::file-id (:file-id props)) - (db/tx-run! (fn [cfg] - (offload-file-data! cfg) - (offload-file-data-fragments! cfg) - (offload-file-snapshots! cfg)))))) + (let [file-id (:file-id props)] + (-> cfg + (assoc ::db/rollback (:rollback? props)) + (db/tx-run! (fn [{:keys [::db/conn] :as cfg}] + (run! (partial offload-file-data cfg) + (db/plan conn [sql:get-file-data file-id])))))))) diff --git a/backend/src/app/tokens.clj b/backend/src/app/tokens.clj index 14415d0892..d08b8be58f 100644 --- a/backend/src/app/tokens.clj +++ b/backend/src/app/tokens.clj @@ -8,33 +8,40 @@ "Tokens generation API." (:require [app.common.data :as d] - [app.common.data.macros :as dm] [app.common.exceptions :as ex] [app.common.time :as ct] [app.common.transit :as t] + [app.setup :as-alias setup] [buddy.sign.jwe :as jwe])) (defn generate - [{:keys [tokens-key]} claims] + [{:keys [::setup/props] :as cfg} claims] + (assert (contains? cfg ::setup/props)) - (dm/assert! - "expexted token-key to be bytes instance" - (bytes? tokens-key)) + (let [tokens-key + (get props :tokens-key) + + payload + (-> claims + (update :iat (fn [v] (or v (ct/now)))) + (d/without-nils) + (t/encode))] - (let [payload (-> claims - (assoc :iat (ct/now)) - (d/without-nils) - (t/encode))] (jwe/encrypt payload tokens-key {:alg :a256kw :enc :a256gcm}))) (defn decode - [{:keys [tokens-key]} token] - (let [payload (jwe/decrypt token tokens-key {:alg :a256kw :enc :a256gcm})] + [{:keys [::setup/props] :as cfg} token] + (let [tokens-key + (get props :tokens-key) + + payload + (jwe/decrypt token tokens-key {:alg :a256kw :enc :a256gcm})] + (t/decode payload))) (defn verify - [sprops {:keys [token] :as params}] - (let [claims (decode sprops token)] + [cfg {:keys [token] :as params}] + (let [claims (decode cfg token)] (when (and (ct/inst? (:exp claims)) (ct/is-before? (:exp claims) (ct/now))) (ex/raise :type :validation diff --git a/backend/src/app/util/events.clj b/backend/src/app/util/events.clj index b26810cb04..5fd8b6474c 100644 --- a/backend/src/app/util/events.clj +++ b/backend/src/app/util/events.clj @@ -27,7 +27,7 @@ (sp/put! channel [type data]) nil))) -(defn start-listener +(defn spawn-listener [channel on-event on-close] (assert (sp/chan? channel) "expected active events channel") @@ -51,7 +51,7 @@ [f on-event] (binding [*channel* (sp/chan :buf 32)] - (let [listener (start-listener *channel* on-event (constantly nil))] + (let [listener (spawn-listener *channel* on-event (constantly nil))] (try (f) (finally diff --git a/backend/src/app/worker/dispatcher.clj b/backend/src/app/worker/dispatcher.clj index 3d1ed18707..f95ade8e1c 100644 --- a/backend/src/app/worker/dispatcher.clj +++ b/backend/src/app/worker/dispatcher.clj @@ -7,7 +7,6 @@ (ns app.worker.dispatcher (:require [app.common.data :as d] - [app.common.data.macros :as dm] [app.common.logging :as l] [app.common.schema :as sm] [app.common.time :as ct] @@ -18,7 +17,9 @@ [app.worker :as-alias wrk] [cuerdas.core :as str] [integrant.core :as ig] - [promesa.exec :as px])) + [promesa.exec :as px]) + (:import + java.lang.AutoCloseable)) (set! *warn-on-reflection* true) @@ -27,7 +28,7 @@ [::wrk/tenant ::sm/text] ::mtx/metrics ::db/pool - ::rds/redis]) + ::rds/client]) (defmethod ig/expand-key ::wrk/dispatcher [k v] @@ -41,67 +42,136 @@ (assert (sm/check schema:dispatcher cfg))) (def ^:private sql:select-next-tasks - "select id, queue from task as t - where t.scheduled_at <= now() - and (t.status = 'new' or t.status = 'retry') - and queue ~~* ?::text - order by t.priority desc, t.scheduled_at - limit ? - for update skip locked") + "SELECT id, queue, scheduled_at from task AS t + WHERE t.scheduled_at <= ?::timestamptz + AND (t.status = 'new' OR t.status = 'retry') + AND queue ~~* ?::text + ORDER BY t.priority DESC, t.scheduled_at + LIMIT ? + FOR UPDATE + SKIP LOCKED") + +(def ^:private sql:mark-task-scheduled + "UPDATE task SET status = 'scheduled' + WHERE id = ANY(?)") + +(def ^:private sql:reschedule-lost + "UPDATE task + SET status='new', scheduled_at=?::timestamptz + FROM (SELECT t.id + FROM task AS t + WHERE status = 'scheduled' + AND (?::timestamptz - t.scheduled_at) > '5 min'::interval) AS subquery + WHERE task.id=subquery.id +RETURNING task.id, task.queue") + +(def ^:private sql:clean-orphan + "UPDATE task + SET status='failed', modified_at=?::timestamptz, + error='orphan with running status' + FROM (SELECT t.id + FROM task AS t + WHERE status = 'running' + AND (?::timestamptz - t.modified_at) > '24 hour'::interval) AS subquery + WHERE task.id=subquery.id +RETURNING task.id, task.queue") (defmethod ig/init-key ::wrk/dispatcher - [_ {:keys [::db/pool ::rds/redis ::wrk/tenant ::batch-size ::timeout] :as cfg}] - (letfn [(get-tasks [conn] - (let [prefix (str tenant ":%")] - (seq (db/exec! conn [sql:select-next-tasks prefix batch-size])))) + [_ {:keys [::db/pool ::wrk/tenant ::batch-size ::timeout] :as cfg}] + (letfn [(reschedule-lost-tasks [{:keys [::db/conn ::timestamp]}] + (doseq [{:keys [id queue]} (db/exec! conn [sql:reschedule-lost timestamp timestamp] + {:return-keys true})] + (l/wrn :hint "reschedule" + :id (str id) + :queue queue))) - (push-tasks! [conn rconn [queue tasks]] - (let [ids (mapv :id tasks) - key (str/ffmt "taskq:%" queue) - res (rds/rpush rconn key (mapv t/encode ids)) - sql [(str "update task set status = 'scheduled'" - " where id = ANY(?)") + (clean-orphan [{:keys [::db/conn ::timestamp]}] + (doseq [{:keys [id queue]} (db/exec! conn [sql:clean-orphan timestamp timestamp] + {:return-keys true})] + (l/wrn :hint "mark as orphan failed" + :id (str id) + :queue queue))) + + (get-tasks [{:keys [::db/conn ::timestamp] :as cfg}] + (let [prefix (str tenant ":%") + result (db/exec! conn [sql:select-next-tasks timestamp prefix batch-size])] + (not-empty result))) + + (mark-as-scheduled [{:keys [::db/conn]} items] + (let [ids (map :id items) + sql [sql:mark-task-scheduled (db/create-array conn "uuid" ids)]] + (db/exec-one! conn sql))) - (db/exec-one! conn sql) - (l/trc :hist "enqueue tasks on redis" - :queue queue - :tasks (count ids) - :queued res))) + (push-tasks [{:keys [::rds/conn] :as cfg} [queue tasks]] + (let [items (mapv (juxt :id :scheduled-at) tasks) + key (str/ffmt "penpot.worker.queue:%" queue)] - (run-batch! [rconn] - (try - (db/tx-run! cfg (fn [{:keys [::db/conn]}] - (if-let [tasks (get-tasks conn)] - (->> (group-by :queue tasks) - (run! (partial push-tasks! conn rconn))) - ;; FIXME: this sleep should be outside the transaction - (px/sleep (::wait-duration cfg))))) - (catch InterruptedException cause - (throw cause)) - (catch Exception cause - (cond - (rds/exception? cause) - (do - (l/wrn :hint "redis exception (will retry in an instant)" :cause cause) - (px/sleep timeout)) + (rds/rpush conn key (mapv t/encode-str items)) + (mark-as-scheduled cfg tasks) - (db/sql-exception? cause) - (do - (l/wrn :hint "database exception (will retry in an instant)" :cause cause) - (px/sleep timeout)) + (doseq [{:keys [id queue]} tasks] + (l/trc :hist "schedule" + :id (str id) + :queue queue)))) - :else - (do - (l/err :hint "unhandled exception (will retry in an instant)" :cause cause) - (px/sleep timeout)))))) + (run-batch' [cfg] + (let [cfg (assoc cfg ::timestamp (ct/now))] + ;; Reschedule lost in transit tasks (can happen when + ;; redis server is restarted just after task is pushed) + (reschedule-lost-tasks cfg) + + ;; Mark as failed all tasks that are still marked as + ;; running but it's been more than 24 hours since its + ;; last modification + (clean-orphan cfg) + + ;; Then, schedule the next tasks in queue + (if-let [tasks (get-tasks cfg)] + (->> (group-by :queue tasks) + (run! (partial push-tasks cfg))) + + ;; If no tasks found on this batch run, we signal the + ;; run-loop to wait for some time before start running + ;; the next batch interation + ::wait))) + + (run-batch [] + (let [rconn (rds/connect cfg)] + (try + (-> cfg + (assoc ::rds/conn rconn) + (db/tx-run! run-batch')) + + (catch InterruptedException cause + (throw cause)) + (catch Exception cause + (cond + (rds/exception? cause) + (do + (l/wrn :hint "redis exception (will retry in an instant)" :cause cause) + (px/sleep timeout)) + + (db/sql-exception? cause) + (do + (l/wrn :hint "database exception (will retry in an instant)" :cause cause) + (px/sleep timeout)) + + :else + (do + (l/err :hint "unhandled exception (will retry in an instant)" :cause cause) + (px/sleep timeout)))) + + (finally + (.close ^AutoCloseable rconn))))) (dispatcher [] (l/inf :hint "started") (try - (dm/with-open [rconn (rds/connect redis)] - (loop [] - (run-batch! rconn) + (loop [] + (let [result (run-batch)] + (when (= result ::wait) + (px/sleep (::wait-duration cfg))) (recur))) (catch InterruptedException _ (l/trc :hint "interrupted")) @@ -112,7 +182,7 @@ (if (db/read-only? pool) (l/wrn :hint "not started (db is read-only)") - (px/fn->thread dispatcher :name "penpot/worker/dispatcher" :virtual false)))) + (px/fn->thread dispatcher :name "penpot/worker-dispatcher")))) (defmethod ig/halt-key! ::wrk/dispatcher [_ thread] diff --git a/backend/src/app/worker/executor.clj b/backend/src/app/worker/executor.clj index acd6290bba..7d9526be10 100644 --- a/backend/src/app/worker/executor.clj +++ b/backend/src/app/worker/executor.clj @@ -7,97 +7,83 @@ (ns app.worker.executor "Async tasks abstraction (impl)." (:require - [app.common.data :as d] [app.common.logging :as l] + [app.common.math :as mth] [app.common.schema :as sm] - [app.common.time :as ct] - [app.metrics :as mtx] [app.worker :as-alias wrk] [integrant.core :as ig] [promesa.exec :as px]) (:import - java.util.concurrent.ThreadPoolExecutor)) + io.netty.channel.nio.NioEventLoopGroup + io.netty.util.concurrent.DefaultEventExecutorGroup + java.util.concurrent.ExecutorService + java.util.concurrent.ThreadFactory + java.util.concurrent.TimeUnit)) (set! *warn-on-reflection* true) (sm/register! {:type ::wrk/executor - :pred #(instance? ThreadPoolExecutor %) + :pred #(instance? ExecutorService %) :type-properties {:title "executor" - :description "Instance of ThreadPoolExecutor"}}) + :description "Instance of ExecutorService"}}) + +(sm/register! + {:type ::wrk/netty-io-executor + :pred #(instance? NioEventLoopGroup %) + :type-properties + {:title "executor" + :description "Instance of NioEventLoopGroup"}}) + +(sm/register! + {:type ::wrk/netty-executor + :pred #(instance? DefaultEventExecutorGroup %) + :type-properties + {:title "executor" + :description "Instance of DefaultEventExecutorGroup"}}) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; EXECUTOR +;; IO Executor ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod ig/init-key ::wrk/executor - [_ _] - (let [factory (px/thread-factory :prefix "penpot/default/") - executor (px/cached-executor :factory factory :keepalive 60000)] - (l/inf :hint "executor started") - executor)) +(defmethod ig/assert-key ::wrk/netty-io-executor + [_ {:keys [threads]}] + (assert (or (nil? threads) (int? threads)) + "expected valid threads value, revisit PENPOT_NETTY_IO_THREADS environment variable")) -(defmethod ig/halt-key! ::wrk/executor +(defmethod ig/init-key ::wrk/netty-io-executor + [_ {:keys [threads]}] + (let [factory (px/thread-factory :prefix "penpot/netty-io/") + nthreads (or threads (mth/round (/ (px/get-available-processors) 2))) + nthreads (max 2 nthreads)] + (l/inf :hint "start netty io executor" :threads nthreads) + (NioEventLoopGroup. (int nthreads) ^ThreadFactory factory))) + +(defmethod ig/halt-key! ::wrk/netty-io-executor + [_ instance] + (deref (.shutdownGracefully ^NioEventLoopGroup instance + (long 100) + (long 1000) + TimeUnit/MILLISECONDS))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; IO Offload Executor +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defmethod ig/assert-key ::wrk/netty-executor + [_ {:keys [threads]}] + (assert (or (nil? threads) (int? threads)) + "expected valid threads value, revisit PENPOT_EXEC_THREADS environment variable")) + +(defmethod ig/init-key ::wrk/netty-executor + [_ {:keys [threads]}] + (let [factory (px/thread-factory :prefix "penpot/exec/") + nthreads (or threads (mth/round (/ (px/get-available-processors) 2))) + nthreads (max 2 nthreads)] + (l/inf :hint "start default executor" :threads nthreads) + (DefaultEventExecutorGroup. (int nthreads) ^ThreadFactory factory))) + +(defmethod ig/halt-key! ::wrk/netty-executor [_ instance] (px/shutdown! instance)) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; MONITOR -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defn- get-stats - [^ThreadPoolExecutor executor] - {:active (.getPoolSize ^ThreadPoolExecutor executor) - :running (.getActiveCount ^ThreadPoolExecutor executor) - :completed (.getCompletedTaskCount ^ThreadPoolExecutor executor)}) - -(defmethod ig/expand-key ::wrk/monitor - [k v] - {k (-> (d/without-nils v) - (assoc ::interval (ct/duration "2s")))}) - -(defmethod ig/init-key ::wrk/monitor - [_ {:keys [::wrk/executor ::mtx/metrics ::interval ::wrk/name]}] - (letfn [(monitor! [executor prev-completed] - (let [labels (into-array String [(d/name name)]) - stats (get-stats executor) - - completed (:completed stats) - completed-inc (- completed prev-completed) - completed-inc (if (neg? completed-inc) 0 completed-inc)] - - (mtx/run! metrics - :id :executor-active-threads - :labels labels - :val (:active stats)) - - (mtx/run! metrics - :id :executor-running-threads - :labels labels - :val (:running stats)) - - (mtx/run! metrics - :id :executors-completed-tasks - :labels labels - :inc completed-inc) - - completed-inc))] - - (px/thread - {:name "penpot/executors-monitor" :virtual true} - (l/inf :hint "monitor started" :name name) - (try - (loop [completed 0] - (px/sleep interval) - (recur (long (monitor! executor completed)))) - (catch InterruptedException _cause - (l/trc :hint "monitor: interrupted" :name name)) - (catch Throwable cause - (l/err :hint "monitor: unexpected error" :name name :cause cause)) - (finally - (l/inf :hint "monitor: terminated" :name name)))))) - -(defmethod ig/halt-key! ::wrk/monitor - [_ thread] - (px/interrupt! thread)) diff --git a/backend/src/app/worker/runner.clj b/backend/src/app/worker/runner.clj index ce9b7ee5a9..ea8cd08cf2 100644 --- a/backend/src/app/worker/runner.clj +++ b/backend/src/app/worker/runner.clj @@ -8,7 +8,6 @@ "Async tasks abstraction (impl)." (:require [app.common.data :as d] - [app.common.data.macros :as dm] [app.common.exceptions :as ex] [app.common.logging :as l] [app.common.schema :as sm] @@ -20,7 +19,9 @@ [app.worker :as wrk] [cuerdas.core :as str] [integrant.core :as ig] - [promesa.exec :as px])) + [promesa.exec :as px]) + (:import + java.lang.AutoCloseable)) (set! *warn-on-reflection* true) @@ -37,7 +38,7 @@ [:max-retries :int] [:retry-num :int] [:priority :int] - [:status [:enum "scheduled" "completed" "new" "retry" "failed"]] + [:status [:enum "scheduled" "running" "completed" "new" "retry" "failed"]] [:label {:optional true} :string] [:props :map]]) @@ -68,7 +69,7 @@ (decode-task-row)))) (defn- run-task - [{:keys [::wrk/registry ::id ::queue] :as cfg} task] + [{:keys [::db/pool ::wrk/registry ::id ::queue] :as cfg} task] (try (l/dbg :hint "start" :name (:name task) @@ -76,6 +77,14 @@ :queue queue :runner-id id :retry (:retry-num task)) + + ;; Mark task as running + (db/update! pool :task + {:status "running" + :modified-at (ct/now)} + {:id (:id task)} + {::db/return-keys false}) + (let [tpoint (ct/tpoint) task-fn (wrk/get-task registry (:name task)) result (when task-fn (task-fn task)) @@ -119,7 +128,7 @@ {:status "retry" :error cause}))))))) (defn- run-task! - [{:keys [::id ::timeout] :as cfg} task-id] + [{:keys [::id ::timeout] :as cfg} task-id scheduled-at] (loop [task (get-task cfg task-id)] (cond (ex/exception? task) @@ -127,20 +136,26 @@ (db/serialization-error? task)) (do (l/wrn :hint "connection error on retrieving task from database (retrying in some instants)" - :id id + :runner-id id :cause task) (px/sleep timeout) (recur (get-task cfg task-id))) (do (l/err :hint "unhandled exception on retrieving task from database (retrying in some instants)" - :id id + :runner-id id :cause task) (px/sleep timeout) (recur (get-task cfg task-id)))) + (not= (inst-ms scheduled-at) + (inst-ms (:scheduled-at task))) + (l/wrn :hint "skiping task, rescheduled" + :task-id task-id + :runner-id id) + (nil? task) (l/wrn :hint "no task found on the database" - :id id + :runner-id id :task-id task-id) :else @@ -149,7 +164,7 @@ {::task task}))))) (defn- run-worker-loop! - [{:keys [::db/pool ::rds/rconn ::timeout ::queue] :as cfg}] + [{:keys [::db/pool ::rds/conn ::timeout ::queue] :as cfg}] (letfn [(handle-task-retry [{:keys [error inc-by delay] :or {inc-by 1 delay 1000} :as result}] (let [explain (if (ex/exception? error) (ex-message error) @@ -183,21 +198,23 @@ (db/update! pool :task {:completed-at now :modified-at now + :error nil :status "completed"} {:id (:id task)}) nil)) - (decode-payload [^bytes payload] + (decode-payload [payload] (try - (let [task-id (t/decode payload)] - (if (uuid? task-id) - task-id - (l/err :hint "received unexpected payload (uuid expected)" - :payload task-id))) + (let [[task-id scheduled-at :as payload] (t/decode-str payload)] + (if (and (uuid? task-id) + (ct/inst? scheduled-at)) + payload + (l/err :hint "received unexpected payload" + :payload payload))) (catch Throwable cause (l/err :hint "unable to decode payload" :payload payload - :length (alength payload) + :length (alength ^String/1 payload) :cause cause)))) (process-result [{:keys [status] :as result}] @@ -209,8 +226,8 @@ (throw (IllegalArgumentException. (str "invalid status received: " status)))))) - (run-task-loop [task-id] - (loop [result (run-task! cfg task-id)] + (run-task-loop [[task-id scheduled-at]] + (loop [result (run-task! cfg task-id scheduled-at)] (when-let [cause (process-result result)] (if (or (db/connection-error? cause) (db/serialization-error? cause)) @@ -220,14 +237,12 @@ (px/sleep timeout) (recur result)) (do - (l/err :hint "unhandled exception on processing task result (retrying in some instants)" - :cause cause) - (px/sleep timeout) - (recur result))))))] + (l/err :hint "unhandled exception on processing task result" + :cause cause))))))] (try - (let [key (str/ffmt "taskq:%" queue) - [_ payload] (rds/blpop rconn timeout [key])] + (let [key (str/ffmt "penpot.worker.queue:%" queue) + [_ payload] (rds/blpop conn [key] timeout)] (some-> payload decode-payload run-task-loop)) @@ -246,36 +261,37 @@ (l/err :hint "unhandled exception" :cause cause)))))) (defn- start-thread! - [{:keys [::rds/redis ::id ::queue ::wrk/tenant] :as cfg}] + [{:keys [::id ::queue ::wrk/tenant] :as cfg}] (px/thread - {:name (format "penpot/worker/runner:%s" id)} + {:name (str "penpot/job-runner/" id)} (l/inf :hint "started" :id id :queue queue) - (try - (dm/with-open [rconn (rds/connect redis)] - (let [cfg (-> cfg - (assoc ::rds/rconn rconn) - (assoc ::queue (str/ffmt "%:%" tenant queue)) - (assoc ::timeout (ct/duration "5s")))] - (loop [] - (when (px/interrupted?) - (throw (InterruptedException. "interrupted"))) - (run-worker-loop! cfg) - (recur)))) + (let [rconn (rds/connect cfg)] + (try + (loop [cfg (-> cfg + (assoc ::rds/conn rconn) + (assoc ::queue (str/ffmt "%:%" tenant queue)) + (assoc ::timeout (ct/duration "5s")))] + (when (px/interrupted?) + (throw (InterruptedException. "interrupted"))) - (catch InterruptedException _ - (l/dbg :hint "interrupted" - :id id - :queue queue)) - (catch Throwable cause - (l/err :hint "unexpected exception" - :id id - :queue queue - :cause cause)) - (finally - (l/inf :hint "terminated" - :id id - :queue queue))))) + (run-worker-loop! cfg) + (recur cfg)) + + (catch InterruptedException _ + (l/dbg :hint "interrupted" + :id id + :queue queue)) + (catch Throwable cause + (l/err :hint "unexpected exception" + :id id + :queue queue + :cause cause)) + (finally + (.close ^AutoCloseable rconn) + (l/inf :hint "terminated" + :id id + :queue queue)))))) (def ^:private schema:params [:map @@ -285,7 +301,7 @@ ::wrk/registry ::mtx/metrics ::db/pool - ::rds/redis]) + ::rds/client]) (defmethod ig/assert-key ::wrk/runner [_ params] @@ -303,7 +319,7 @@ (l/wrn :hint "not started (db is read-only)" :queue queue :parallelism parallelism) (doall (->> (range parallelism) - (map #(assoc cfg ::id %)) + (map #(assoc cfg ::id (str queue "/" %))) (map start-thread!)))))) (defmethod ig/halt-key! ::wrk/runner diff --git a/backend/src/data_readers.clj b/backend/src/data_readers.clj index e32d7c506c..dd94d1aae7 100644 --- a/backend/src/data_readers.clj +++ b/backend/src/data_readers.clj @@ -4,7 +4,7 @@ penpot/path-data app.common.types.path/from-string penpot/matrix app.common.geom.matrix/decode-matrix penpot/point app.common.geom.point/decode-point - penpot/token-lib app.common.types.tokens-lib/parse-multi-set-dtcg-json + penpot/tokens-lib app.common.types.tokens-lib/parse-multi-set-dtcg-json penpot/token-set app.common.types.tokens-lib/make-token-set penpot/token-theme app.common.types.tokens-lib/make-token-theme penpot/token app.common.types.tokens-lib/make-token} diff --git a/backend/test/backend_tests/bounce_handling_test.clj b/backend/test/backend_tests/bounce_handling_test.clj index 3df4789ad7..bef06ad6ff 100644 --- a/backend/test/backend_tests/bounce_handling_test.clj +++ b/backend/test/backend_tests/bounce_handling_test.clj @@ -101,12 +101,10 @@ (t/deftest test-parse-bounce-report (let [profile (th/create-profile* 1) - props (:app.setup/props th/*system*) - cfg {:app.setup/props props} - report (bounce-report {:token (tokens/generate props + report (bounce-report {:token (tokens/generate th/*system* {:iss :profile-identity :profile-id (:id profile)})}) - result (#'awsns/parse-notification cfg report)] + result (#'awsns/parse-notification th/*system* report)] ;; (pprint result) (t/is (= "bounce" (:type result))) @@ -117,12 +115,10 @@ (t/deftest test-parse-complaint-report (let [profile (th/create-profile* 1) - props (:app.setup/props th/*system*) - cfg {:app.setup/props props} - report (complaint-report {:token (tokens/generate props + report (complaint-report {:token (tokens/generate th/*system* {:iss :profile-identity :profile-id (:id profile)})}) - result (#'awsns/parse-notification cfg report)] + result (#'awsns/parse-notification th/*system* report)] ;; (pprint result) (t/is (= "complaint" (:type result))) (t/is (= "abuse" (:kind result))) @@ -143,15 +139,13 @@ (t/deftest test-process-bounce-report (let [profile (th/create-profile* 1) - props (:app.setup/props th/*system*) pool (:app.db/pool th/*system*) - cfg {:app.setup/props props :app.db/pool pool} - report (bounce-report {:token (tokens/generate props + report (bounce-report {:token (tokens/generate th/*system* {:iss :profile-identity :profile-id (:id profile)})}) - report (#'awsns/parse-notification cfg report)] + report (#'awsns/parse-notification th/*system* report)] - (#'awsns/process-report cfg report) + (#'awsns/process-report th/*system* report) (let [rows (->> (db/query pool :profile-complaint-report {:profile-id (:id profile)}) (mapv decode-row))] @@ -170,16 +164,13 @@ (t/deftest test-process-complaint-report (let [profile (th/create-profile* 1) - props (:app.setup/props th/*system*) pool (:app.db/pool th/*system*) - cfg {:app.setup/props props - :app.db/pool pool} - report (complaint-report {:token (tokens/generate props + report (complaint-report {:token (tokens/generate th/*system* {:iss :profile-identity :profile-id (:id profile)})}) - report (#'awsns/parse-notification cfg report)] + report (#'awsns/parse-notification th/*system* report)] - (#'awsns/process-report cfg report) + (#'awsns/process-report th/*system* report) (let [rows (->> (db/query pool :profile-complaint-report {:profile-id (:id profile)}) (mapv decode-row))] @@ -200,16 +191,14 @@ (t/deftest test-process-bounce-report-to-self (let [profile (th/create-profile* 1) - props (:app.setup/props th/*system*) pool (:app.db/pool th/*system*) - cfg {:app.setup/props props :app.db/pool pool} report (bounce-report {:email (:email profile) - :token (tokens/generate props + :token (tokens/generate th/*system* {:iss :profile-identity :profile-id (:id profile)})}) - report (#'awsns/parse-notification cfg report)] + report (#'awsns/parse-notification th/*system* report)] - (#'awsns/process-report cfg report) + (#'awsns/process-report th/*system* report) (let [rows (db/query pool :profile-complaint-report {:profile-id (:id profile)})] (t/is (= 1 (count rows)))) @@ -222,16 +211,14 @@ (t/deftest test-process-complaint-report-to-self (let [profile (th/create-profile* 1) - props (:app.setup/props th/*system*) pool (:app.db/pool th/*system*) - cfg {:app.setup/props props :app.db/pool pool} report (complaint-report {:email (:email profile) - :token (tokens/generate props + :token (tokens/generate th/*system* {:iss :profile-identity :profile-id (:id profile)})}) - report (#'awsns/parse-notification cfg report)] + report (#'awsns/parse-notification th/*system* report)] - (#'awsns/process-report cfg report) + (#'awsns/process-report th/*system* report) (let [rows (db/query pool :profile-complaint-report {:profile-id (:id profile)})] (t/is (= 1 (count rows)))) diff --git a/backend/test/backend_tests/helpers.clj b/backend/test/backend_tests/helpers.clj index a589c6fe7e..d504e05aa8 100644 --- a/backend/test/backend_tests/helpers.clj +++ b/backend/test/backend_tests/helpers.clj @@ -62,7 +62,8 @@ (def default {:database-uri "postgresql://postgres/penpot_test" :redis-uri "redis://redis/1" - :auto-file-snapshot-every 1}) + :auto-file-snapshot-every 1 + :file-data-backend "db"}) (def config (cf/read-config :prefix "penpot-test" @@ -74,9 +75,6 @@ :enable-smtp :enable-quotes :enable-rpc-climit - :enable-feature-fdata-pointer-map - :enable-feature-fdata-objets-map - :enable-feature-components-v2 :enable-auto-file-snapshot :disable-file-validation]) @@ -99,7 +97,7 @@ :thumbnail-uri "test" :path (-> "backend_tests/test_files/template.penpot" io/resource fs/path)}] system (-> (merge main/system-config main/worker-config) - (assoc-in [:app.redis/redis :app.redis/uri] (:redis-uri config)) + (assoc-in [:app.redis/client :app.redis/uri] (:redis-uri config)) (assoc-in [::db/pool ::db/uri] (:database-uri config)) (assoc-in [::db/pool ::db/username] (:database-username config)) (assoc-in [::db/pool ::db/password] (:database-password config)) @@ -113,7 +111,6 @@ :app.auth.oidc.providers/generic :app.setup/templates :app.auth.oidc/routes - :app.worker/monitor :app.http.oauth/handler :app.notifications/handler :app.loggers.mattermost/reporter diff --git a/backend/test/backend_tests/http_management_test.clj b/backend/test/backend_tests/http_management_test.clj index a02bbe20d6..9e8f554017 100644 --- a/backend/test/backend_tests/http_management_test.clj +++ b/backend/test/backend_tests/http_management_test.clj @@ -25,8 +25,7 @@ (t/deftest authenticate-method (let [profile (th/create-profile* 1) - props (get th/*system* :app.setup/props) - token (#'sess/gen-token props {:profile-id (:id profile)}) + token (#'sess/gen-token th/*system* {:profile-id (:id profile)}) request {:params {:token token}} response (#'mgmt/authenticate th/*system* request)] diff --git a/backend/test/backend_tests/http_middleware_security.clj b/backend/test/backend_tests/http_middleware_security.clj new file mode 100644 index 0000000000..3804f2186e --- /dev/null +++ b/backend/test/backend_tests/http_middleware_security.clj @@ -0,0 +1,59 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns backend-tests.http-middleware-security + (:require + [app.http.security :as sec] + [clojure.test :as t] + [yetti.request :as yreq] + [yetti.response :as yres])) + +(defn- mock-request + [method value] + (reify yreq/IRequest + (method [_] + method) + (get-header [_ _] + value))) + +(t/deftest sec-fetch-metadata + (let [request1 (mock-request :get "same-origin") + request2 (mock-request :post "same-origin") + request3 (mock-request :get "same-site") + request4 (mock-request :post "same-site") + request5 (mock-request :get "cross-site") + request6 (mock-request :post "cross-site") + + handler (fn [request] + {::yres/status 200}) + handler (#'sec/wrap-sec-fetch-metadata handler) + resp1 (handler request1) + resp2 (handler request2) + resp3 (handler request3) + resp4 (handler request4) + resp5 (handler request5) + resp6 (handler request6)] + + (t/is (= 200 (::yres/status resp1))) + (t/is (= 200 (::yres/status resp2))) + (t/is (= 200 (::yres/status resp3))) + (t/is (= 403 (::yres/status resp4))) + (t/is (= 200 (::yres/status resp5))) + (t/is (= 403 (::yres/status resp6))))) + +(t/deftest client-header-check + (let [request1 (mock-request :get "some") + request2 (mock-request :post nil) + + handler (fn [request] + {::yres/status 200}) + handler (#'sec/wrap-client-header-check handler) + resp1 (handler request1) + resp2 (handler request2)] + + (t/is (= 200 (::yres/status resp1))) + (t/is (= 403 (::yres/status resp2))))) + diff --git a/backend/test/backend_tests/rpc_comment_test.clj b/backend/test/backend_tests/rpc_comment_test.clj index 1822d28e0e..69e6322842 100644 --- a/backend/test/backend_tests/rpc_comment_test.clj +++ b/backend/test/backend_tests/rpc_comment_test.clj @@ -144,7 +144,6 @@ (t/is (not= (:modified-at comment) (:modified-at comment'))) (t/is (= (:content data) (:content comment')))))) - (t/testing "retrieve threads" (let [data {::th/type :get-comment-threads ::rpc/profile-id (:id profile-1) diff --git a/backend/test/backend_tests/rpc_doc_test.clj b/backend/test/backend_tests/rpc_doc_test.clj index fb6c2c106d..43a934a289 100644 --- a/backend/test/backend_tests/rpc_doc_test.clj +++ b/backend/test/backend_tests/rpc_doc_test.clj @@ -29,7 +29,7 @@ true (catch Throwable _cause false))) - {:num 30})) + {:num 15})) diff --git a/backend/test/backend_tests/rpc_file_snapshot_test.clj b/backend/test/backend_tests/rpc_file_snapshot_test.clj index 113fad771c..e2c8248815 100644 --- a/backend/test/backend_tests/rpc_file_snapshot_test.clj +++ b/backend/test/backend_tests/rpc_file_snapshot_test.clj @@ -8,10 +8,10 @@ (:require [app.common.features :as cfeat] [app.common.pprint :as pp] - [app.common.pprint :as pp] [app.common.thumbnails :as thc] [app.common.types.shape :as cts] [app.common.uuid :as uuid] + [app.config :as cf] [app.db :as db] [app.db.sql :as sql] [app.http :as http] @@ -87,10 +87,7 @@ ;; (th/print-result! out) (t/is (nil? (:error out))) - - (let [result (:result out)] - (t/is (= "label1" (:label result))) - (t/is (uuid? (:id result))))) + (t/is (nil? (:result out)))) (let [[row1 row2 :as rows] (th/db-query :file-change @@ -116,7 +113,7 @@ ;; (th/print-result! out) (t/is (nil? (:error out))) - (t/is (nil? (:result out))))) + (t/is (true? (:result out))))) (t/testing "delete system created snapshot" (let [params {::th/type :delete-file-snapshot @@ -130,7 +127,14 @@ data (ex-data error)] (t/is (th/ex-info? error)) (t/is (= (:type data) :validation)) - (t/is (= (:code data) :system-snapshots-cant-be-deleted))))))))) + (t/is (= (:code data) :system-snapshots-cant-be-deleted))))) + + ;; this will run pending task triggered by deleting user snapshot + (th/run-pending-tasks!) + + (let [res (th/run-task! :objects-gc {:deletion-threshold (cf/get-deletion-delay)})] + ;; delete 2 snapshots and 2 file data entries + (t/is (= 4 (:processed res)))))))) (t/deftest snapshots-locking (let [profile-1 (th/create-profile* 1 {:is-active true}) @@ -172,9 +176,9 @@ out (th/command! params)] ;; (th/print-result! out) (t/is (nil? (:error out))) - (t/is (nil? (:result out))) + (t/is (true? (:result out))) - (let [snapshot (th/db-get :file-change {:id (:id snapshot)})] + (let [snapshot (th/db-get :file-change {:id (:id snapshot)} {::db/remove-deleted false})] (t/is (= (:id profile-1) (:locked-by snapshot)))))) (t/testing "delete locked snapshot" @@ -199,7 +203,7 @@ out (th/command! params)] ;; (th/print-result! out) (t/is (nil? (:error out))) - (t/is (nil? (:result out))) + (t/is (true? (:result out))) (let [snapshot (th/db-get :file-change {:id (:id snapshot)})] (t/is (= nil (:locked-by snapshot)))))) @@ -213,4 +217,4 @@ ;; (th/print-result! out) (t/is (nil? (:error out))) - (t/is (nil? (:result out))))))) + (t/is (true? (:result out))))))) diff --git a/backend/test/backend_tests/rpc_file_test.clj b/backend/test/backend_tests/rpc_file_test.clj index 2443d76737..f8701a0c1c 100644 --- a/backend/test/backend_tests/rpc_file_test.clj +++ b/backend/test/backend_tests/rpc_file_test.clj @@ -15,6 +15,7 @@ [app.config :as cf] [app.db :as db] [app.db.sql :as sql] + [app.features.fdata :as fdata] [app.http :as http] [app.rpc :as-alias rpc] [app.rpc.commands.files :as files] @@ -116,29 +117,8 @@ (t/is (nil? (:error out))) (t/is (nil? (:result out))))) + (t/testing "query single file after delete" - (let [data {::th/type :get-file - ::rpc/profile-id (:id prof) - :id file-id - :components-v2 true} - out (th/command! data)] - - - ;; (th/print-result! out) - (t/is (nil? (:error out))) - - (let [result (:result out)] - (t/is (some? (:deleted-at result))) - (t/is (= file-id (:id result))) - (t/is (= "new name" (:name result))) - (t/is (= 1 (count (get-in result [:data :pages])))) - (t/is (nil? (:users result)))))) - - (th/db-update! :file - {:deleted-at (ct/now)} - {:id file-id}) - - (t/testing "query single file after delete and wait" (let [data {::th/type :get-file ::rpc/profile-id (:id prof) :id file-id @@ -185,10 +165,10 @@ shape-id (uuid/random)] ;; Preventive file-gc - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file) :revn (:revn file)}))) ;; Check the number of fragments before adding the page - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] (t/is (= 2 (count rows)))) ;; Add page @@ -203,22 +183,23 @@ :id page-id}]) ;; Check the number of fragments before adding the page - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] (t/is (= 3 (count rows)))) ;; The file-gc should mark for remove unused fragments - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) ;; Check the number of fragments - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] - (t/is (= 5 (count rows)))) + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + (t/is (= 5 (count rows))) + (t/is (= 3 (count (filterv :deleted-at rows))))) ;; The objects-gc should remove unused fragments (let [res (th/run-task! :objects-gc {})] (t/is (= 3 (:processed res)))) ;; Check the number of fragments - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] (t/is (= 2 (count rows)))) ;; Add shape to page that should add a new fragment @@ -242,44 +223,47 @@ :type :rect})}]) ;; Check the number of fragments - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] (t/is (= 3 (count rows)))) ;; The file-gc should mark for remove unused fragments - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) ;; The objects-gc should remove unused fragments (let [res (th/run-task! :objects-gc {})] (t/is (= 3 (:processed res)))) ;; Check the number of fragments; - (let [rows (th/db-query :file-data-fragment {:file-id (:id file) - :deleted-at nil})] + (let [rows (th/db-query :file-data {:file-id (:id file) + :type "fragment" + :deleted-at nil})] (t/is (= 2 (count rows)))) ;; Lets proceed to delete all changes (th/db-delete! :file-change {:file-id (:id file)}) + (th/db-delete! :file-data {:file-id (:id file) :type "snapshot"}) + (th/db-update! :file {:has-media-trimmed false} {:id (:id file)}) ;; The file-gc should remove fragments related to changes ;; snapshots previously deleted. - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) ;; Check the number of fragments; - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] ;; (pp/pprint rows) (t/is (= 4 (count rows))) - (t/is (= 2 (count (remove (comp some? :deleted-at) rows))))) + (t/is (= 2 (count (remove :deleted-at rows))))) (let [res (th/run-task! :objects-gc {})] (t/is (= 2 (:processed res)))) - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] (t/is (= 2 (count rows))))))) -(t/deftest file-gc-task-with-thumbnails +(t/deftest file-gc-with-thumbnails (letfn [(add-file-media-object [& {:keys [profile-id file-id]}] (let [mfile {:filename "sample.jpg" :path (th/tempfile "backend_tests/test_files/sample.jpg") @@ -347,7 +331,7 @@ :fills [{:fill-opacity 1 :fill-image {:id (:id fmo1) :width 100 :height 100 :mtype "image/jpeg"}}]})}]) - ;; Check that reference storage objects on filemediaobjects + ;; Check that reference storage objects on file_media_objects ;; are the same because of deduplication feature. (t/is (= (:media-id fmo1) (:media-id fmo2))) (t/is (= (:thumbnail-id fmo1) (:thumbnail-id fmo2))) @@ -360,32 +344,33 @@ (t/is (= 2 (:freeze res))) (t/is (= 0 (:delete res)))) - ;; run the file-gc task immediately without forced min-age - (t/is (false? (th/run-task! :file-gc {:file-id (:id file)}))) - ;; run the task again - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) ;; retrieve file and check trimmed attribute (let [row (th/db-get :file {:id (:id file)})] (t/is (true? (:has-media-trimmed row)))) ;; check file media objects - (let [rows (th/db-query :file-media-object {:file-id (:id file)})] - (t/is (= 2 (count rows))) - (t/is (= 1 (count (remove (comp some? :deleted-at) rows))))) + (let [[row1 row2 :as rows] + (th/db-query :file-media-object + {:file-id (:id file)} + {:order-by [:created-at]})] + + (t/is (= (:id fmo1) (:id row1))) + (t/is (= (:id fmo2) (:id row2))) + (t/is (ct/inst? (:deleted-at row2)))) (let [res (th/run-task! :objects-gc {})] + ;; delete 2 fragments and 1 media object (t/is (= 3 (:processed res)))) ;; check file media objects (let [rows (th/db-query :file-media-object {:file-id (:id file)})] (t/is (= 1 (count rows))) - (t/is (= 1 (count (remove (comp some? :deleted-at) rows))))) + (t/is (= 1 (count (remove :deleted-at rows))))) ;; The underlying storage objects are still available. - (t/is (some? (sto/get-object storage (:media-id fmo2)))) - (t/is (some? (sto/get-object storage (:thumbnail-id fmo2)))) (t/is (some? (sto/get-object storage (:media-id fmo1)))) (t/is (some? (sto/get-object storage (:thumbnail-id fmo1)))) @@ -402,34 +387,40 @@ ;; Now, we have deleted the usage of pointers to the ;; file-media-objects, if we paste file-gc, they should be marked ;; as deleted. - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) ;; This only clears fragments, the file media objects still referenced because ;; snapshots are preserved (let [res (th/run-task! :objects-gc {})] (t/is (= 2 (:processed res)))) - ;; Mark all snapshots to be a non-snapshot file change - (th/db-exec! ["update file_change set data = null where file_id = ?" (:id file)]) + ;; Delete all snapshots + (th/db-exec! ["update file_data set deleted_at = now() where file_id = ? and type = 'snapshot'" (:id file)]) + (th/db-exec! ["update file_change set deleted_at = now() where file_id = ? and label is not null" (:id file)]) (th/db-exec! ["update file set has_media_trimmed = false where id = ?" (:id file)]) + (let [res (th/run-task! :objects-gc {:deletion-threshold 0})] + ;; this will remove the file change and file data entries for two snapshots + (t/is (= 4 (:processed res)))) + ;; Rerun the file-gc and objects-gc - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) - (let [res (th/run-task! :objects-gc {})] + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) + + (let [res (th/run-task! :objects-gc {:deletion-threshold 0})] + ;; this will remove the file media objects marked as deleted + ;; on prev file-gc (t/is (= 2 (:processed res)))) ;; Now that file-gc have deleted the file-media-object usage, ;; lets execute the touched-gc task, we should see that two of - ;; them are marked to be deleted. + ;; them are marked to be deleted (let [res (th/run-task! :storage-gc-touched {:min-age 0})] (t/is (= 0 (:freeze res))) (t/is (= 2 (:delete res)))) ;; Finally, check that some of the objects that are marked as ;; deleted we are unable to retrieve them using standard storage - ;; public api. - (t/is (nil? (sto/get-object storage (:media-id fmo2)))) - (t/is (nil? (sto/get-object storage (:thumbnail-id fmo2)))) + ;; public api (t/is (nil? (sto/get-object storage (:media-id fmo1)))) (t/is (nil? (sto/get-object storage (:thumbnail-id fmo1))))))) @@ -470,8 +461,9 @@ page-id (first (get-in file [:data :pages]))] - (let [rows (th/db-query :file-data-fragment {:file-id (:id file) - :deleted-at nil})] + (let [rows (th/db-query :file-data {:file-id (:id file) + :type "fragment" + :deleted-at nil})] (t/is (= (count rows) 1))) ;; Update file inserting a new image object @@ -536,17 +528,15 @@ :strokes [{:stroke-opacity 1 :stroke-image {:id (:id fmo5) :width 100 :height 100 :mtype "image/jpeg"}}]})}]) - ;; run the file-gc task immediately without forced min-age - (t/is (false? (th/run-task! :file-gc {:file-id (:id file)}))) - ;; run the task again - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) (let [res (th/run-task! :objects-gc {})] (t/is (= 2 (:processed res)))) - (let [rows (th/db-query :file-data-fragment {:file-id (:id file) - :deleted-at nil})] + (let [rows (th/db-query :file-data {:file-id (:id file) + :type "fragment" + :deleted-at nil})] (t/is (= (count rows) 1))) ;; retrieve file and check trimmed attribute @@ -583,7 +573,7 @@ ;; Now, we have deleted the usage of pointers to the ;; file-media-objects, if we paste file-gc, they should be marked ;; as deleted. - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) ;; This only removes unused fragments, file media are still ;; referenced on snapshots. @@ -592,16 +582,18 @@ ;; Mark all snapshots to be a non-snapshot file change (th/db-exec! ["update file set has_media_trimmed = false where id = ?" (:id file)]) - (th/db-exec! ["update file_change set data = null where file_id = ?" (:id file)]) + (th/db-delete! :file-data {:file-id (:id file) + :type "snapshot"}) ;; Rerun file-gc and objects-gc task for the same file once all snapshots are ;; "expired/deleted" - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) (let [res (th/run-task! :objects-gc {})] (t/is (= 6 (:processed res)))) - (let [rows (th/db-query :file-data-fragment {:file-id (:id file) - :deleted-at nil})] + (let [rows (th/db-query :file-data {:file-id (:id file) + :type "fragment" + :deleted-at nil})] (t/is (= (count rows) 1))) ;; Now that file-gc have deleted the file-media-object usage, @@ -620,7 +612,7 @@ (t/is (nil? (sto/get-object storage (:media-id fmo2)))) (t/is (nil? (sto/get-object storage (:media-id fmo1))))))) -(t/deftest file-gc-task-with-object-thumbnails +(t/deftest file-gc-with-object-thumbnails (letfn [(insert-file-object-thumbnail! [& {:keys [profile-id file-id page-id frame-id]}] (let [object-id (thc/fmt-object-id file-id page-id frame-id "frame") mfile {:filename "sample.jpg" @@ -704,11 +696,7 @@ (t/is (= 1 (:freeze res))) (t/is (= 0 (:delete res)))) - ;; run the file-gc task immediately without forced min-age - (t/is (false? (th/run-task! :file-gc {:file-id (:id file)}))) - - ;; run the task again - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) ;; retrieve file and check trimmed attribute (let [row (th/db-get :file {:id (:id file)})] @@ -738,7 +726,7 @@ :page-id page-id :id frame-id-2}]) - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) (let [rows (th/db-query :file-tagged-object-thumbnail {:file-id file-id})] (t/is (= 2 (count rows))) @@ -772,7 +760,7 @@ :page-id page-id :id frame-id-1}]) - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) (let [rows (th/db-query :file-tagged-object-thumbnail {:file-id file-id})] (t/is (= 1 (count rows))) @@ -933,6 +921,8 @@ out (th/command! params)] (t/is (nil? (:error out)))) + (th/run-pending-tasks!) + ;; query the list of files after soft deletion (let [data {::th/type :get-project-files ::rpc/profile-id (:id profile1) @@ -943,23 +933,24 @@ (let [result (:result out)] (t/is (= 0 (count result))))) - ;; run permanent deletion (should be noop) - (let [result (th/run-task! :objects-gc {})] - (t/is (= 0 (:processed result)))) - - ;; query the list of file libraries of a after hard deletion (let [data {::th/type :get-file-libraries ::rpc/profile-id (:id profile1) :file-id (:id file)} out (th/command! data)] ;; (th/print-result! out) - (t/is (nil? (:error out))) - (let [result (:result out)] - (t/is (= 0 (count result))))) + + (let [error (:error out) + error-data (ex-data error)] + (t/is (th/ex-info? error)) + (t/is (= (:type error-data) :not-found)))) + + ;; run permanent deletion (should be noop) + (let [result (th/run-task! :objects-gc {})] + (t/is (= 0 (:processed result)))) ;; run permanent deletion (let [result (th/run-task! :objects-gc {:deletion-threshold (cf/get-deletion-delay)})] - (t/is (= 1 (:processed result)))) + (t/is (= 3 (:processed result)))) ;; query the list of file libraries of a after hard deletion (let [data {::th/type :get-file-libraries @@ -972,7 +963,6 @@ (t/is (th/ex-info? error)) (t/is (= (:type error-data) :not-found)))))) - (t/deftest object-thumbnails-ops (let [prof (th/create-profile* 1 {:is-active true}) file (th/create-file* 1 {:profile-id (:id prof) @@ -1282,17 +1272,19 @@ :is-shared false}) page-id (uuid/random) - shape-id (uuid/random)] + shape-id (uuid/random) + sobject (volatile! nil)] - ;; Preventive file-gc - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + ;; Preventive file-gc + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) - ;; Preventive objects-gc + ;; Preventive objects-gc (let [result (th/run-task! :objects-gc {})] + ;; deletes the fragment created by file-gc (t/is (= 1 (:processed result)))) - ;; Check the number of fragments before adding the page - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + ;; Check the number of fragments before adding the page + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] (t/is (= 1 (count rows))) (t/is (every? #(some? (:data %)) rows))) @@ -1301,35 +1293,42 @@ {:has-media-trimmed false} {:id (:id file)}) - ;; Run FileGC again, with tiered storage activated + ;; Run FileGC again, with tiered storage activated (with-redefs [app.config/flags (conj app.config/flags :tiered-file-data-storage)] - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)})))) - ;; The FileGC task will schedule an inner taskq - (th/run-pending-tasks!)) + ;; The FileGC task will schedule an inner taskq + (th/run-pending-tasks!) - ;; Clean objects after file-gc + (let [res (th/run-task! :storage-gc-touched {:min-age 0})] + (t/is (= 2 (:freeze res))) + (t/is (= 0 (:delete res)))) + + ;; Clean objects after file-gc (let [result (th/run-task! :objects-gc {})] (t/is (= 1 (:processed result)))) - ;; Check the number of fragments before adding the page - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + ;; Check the number of fragments before adding the page + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] + ;; (pp/pprint rows) (t/is (= 1 (count rows))) (t/is (every? #(nil? (:data %)) rows)) - (t/is (every? #(uuid? (:data-ref-id %)) rows)) - (t/is (every? #(= "objects-storage" (:data-backend %)) rows))) + (t/is (every? #(= "storage" (:backend %)) rows))) - (let [file (th/db-get :file {:id (:id file)}) + (let [file (-> (th/db-get :file-data {:id (:id file) :type "main"}) + (update :metadata fdata/decode-metadata)) storage (sto/resolve th/*system*)] - (t/is (= "objects-storage" (:data-backend file))) + ;; (pp/pprint file) + (t/is (= "storage" (:backend file))) (t/is (nil? (:data file))) - (t/is (uuid? (:data-ref-id file))) - (let [sobj (sto/get-object storage (:data-ref-id file))] + (let [sobj (sto/get-object storage (-> file :metadata :storage-ref-id))] + (vreset! sobject sobj) + ;; (pp/pprint (meta sobj)) (t/is (= "file-data" (:bucket (meta sobj)))) (t/is (= (:id file) (:file-id (meta sobj)))))) - ;; Add shape to page that should load from cold storage again into the hot storage (db) + ;; Add shape to page that should load from cold storage again into the hot storage (db) (update-file! :file-id (:id file) :profile-id (:id profile) @@ -1340,36 +1339,68 @@ :name "test" :id page-id}]) - ;; Check the number of fragments - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] - (t/is (= 2 (count rows)))) - - ;; Check the number of fragments + ;; Check the number of fragments (let [[row1 row2 :as rows] - (th/db-query :file-data-fragment + (th/db-query :file-data {:file-id (:id file) - :deleted-at nil} + :type "fragment"} {:order-by [:created-at]})] ;; (pp/pprint rows) (t/is (= 2 (count rows))) (t/is (nil? (:data row1))) - (t/is (= "objects-storage" (:data-backend row1))) + (t/is (= "storage" (:backend row1))) (t/is (bytes? (:data row2))) - (t/is (nil? (:data-backend row2)))) + (t/is (= "db" (:backend row2)))) - ;; The file-gc should mark for remove unused fragments - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) - ;; The objects-gc should remove unused fragments + ;; The file-gc should mark for remove unused fragments + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) + + ;; The file-gc task, recreates all fragments, so after it we have + ;; now the double of fragments, and the old ones are marked as + ;; deleted, and the new ones are on DB + (let [[row1 row2 row3 row4 :as rows] + (th/db-query :file-data + {:file-id (:id file) + :type "fragment"} + {:order-by [:created-at]})] + ;; (pp/pprint rows) + (t/is (= 4 (count rows))) + + (t/is (nil? (:data row1))) + (t/is (ct/inst? (:deleted-at row1))) + (t/is (= "storage" (:backend row1))) + + (t/is (bytes? (:data row2))) + (t/is (= "db" (:backend row2))) + (t/is (ct/inst? (:deleted-at row2))) + + (t/is (bytes? (:data row3))) + (t/is (= "db" (:backend row3))) + (t/is (nil? (:deleted-at row3))) + + (t/is (bytes? (:data row4))) + (t/is (= "db" (:backend row4))) + (t/is (nil? (:deleted-at row4)))) + + ;; The objects-gc should remove the marked to delete fragments (let [res (th/run-task! :objects-gc {})] (t/is (= 2 (:processed res)))) - ;; Check the number of fragments before adding the page - (let [rows (th/db-query :file-data-fragment {:file-id (:id file)})] + (let [rows (th/db-query :file-data {:file-id (:id file) :type "fragment"})] (t/is (= 2 (count rows))) (t/is (every? #(bytes? (:data %)) rows)) - (t/is (every? #(nil? (:data-ref-id %)) rows)) - (t/is (every? #(nil? (:data-backend %)) rows))))) + (t/is (every? #(= "db" (:backend %)) rows))) + + ;; we ensure that once object-gc is passed and marked two storage + ;; objects to delete + (let [res (th/run-task! :storage-gc-touched {:min-age 0})] + (t/is (= 0 (:freeze res))) + (t/is (= 2 (:delete res)))) + + (let [storage (sto/resolve th/*system*)] + (t/is (uuid? (:id @sobject))) + (t/is (nil? (sto/get-object storage (:id @sobject))))))) (t/deftest file-gc-with-components-1 (let [storage (:app.storage/storage th/*system*) @@ -1384,8 +1415,9 @@ page-id (first (get-in file [:data :pages]))] - (let [rows (th/db-query :file-data-fragment {:file-id (:id file) - :deleted-at nil})] + (let [rows (th/db-query :file-data {:file-id (:id file) + :type "fragment" + :deleted-at nil})] (t/is (= (count rows) 1))) ;; Update file inserting new component @@ -1437,11 +1469,8 @@ :id c-id :anotation nil}]) - ;; Run the file-gc task immediately without forced min-age - (t/is (false? (th/run-task! :file-gc {:file-id (:id file)}))) - ;; Run the task again - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file)}))) ;; Retrieve file and check trimmed attribute (let [row (th/db-get :file {:id (:id file)})] @@ -1651,8 +1680,7 @@ (t/is (some? (not-empty (:objects component)))))) ;; Re-run the file-gc task - (t/is (true? (th/run-task! :file-gc {:min-age 0 :file-id (:id file-1)}))) - (t/is (false? (th/run-task! :file-gc {:min-age 0 :file-id (:id file-2)}))) + (t/is (true? (th/run-task! :file-gc {:file-id (:id file-1)}))) ;; Check that component is still there after file-gc task (let [data {::th/type :get-file diff --git a/backend/test/backend_tests/rpc_management_test.clj b/backend/test/backend_tests/rpc_management_test.clj index 19c3acc827..2506d02de4 100644 --- a/backend/test/backend_tests/rpc_management_test.clj +++ b/backend/test/backend_tests/rpc_management_test.clj @@ -39,8 +39,6 @@ (t/is (nil? (:error out))) (:result out))) -;; TODO: migrate to commands - (t/deftest duplicate-file (let [storage (-> (:app.storage/storage th/*system*) (configure-storage-backend)) @@ -233,15 +231,7 @@ ;; check that the both files are equivalent (doseq [[fa fb] (map vector p1-files p2-files)] (t/is (not= (:id fa) (:id fb))) - (t/is (= (:name fa) (:name fb))) - - (when (= (:id fa) (:id file1)) - (t/is (false? (b/equals? (:data fa) - (:data fb))))) - - (when (= (:id fa) (:id file2)) - (t/is (false? (b/equals? (:data fa) - (:data fb))))))))))) + (t/is (= (:name fa) (:name fb))))))))) (t/deftest duplicate-project-with-deleted-files (let [storage (-> (:app.storage/storage th/*system*) @@ -297,15 +287,7 @@ ;; check that the both files are equivalent (doseq [[fa fb] (map vector (rest p1-files) p2-files)] (t/is (not= (:id fa) (:id fb))) - (t/is (= (:name fa) (:name fb))) - - (when (= (:id fa) (:id file1)) - (t/is (false? (b/equals? (:data fa) - (:data fb))))) - - (when (= (:id fa) (:id file2)) - (t/is (false? (b/equals? (:data fa) - (:data fb))))))))))) + (t/is (= (:name fa) (:name fb))))))))) (t/deftest move-file-on-same-team (let [profile (th/create-profile* 1 {:is-active true}) diff --git a/backend/test/backend_tests/rpc_profile_test.clj b/backend/test/backend_tests/rpc_profile_test.clj index 226df0dc61..eb700936dd 100644 --- a/backend/test/backend_tests/rpc_profile_test.clj +++ b/backend/test/backend_tests/rpc_profile_test.clj @@ -162,7 +162,7 @@ ;; execute permanent deletion task (let [result (th/run-task! :objects-gc {:min-age 0})] - (t/is (= 4 (:processed result)))) + (t/is (= 6 (:processed result)))) (let [row (th/db-get :team {:id (:default-team-id prof)} @@ -324,7 +324,7 @@ ;; execute permanent deletion task (let [result (th/run-task! :objects-gc {:min-age 0})] - (t/is (= 4 (:processed result)))) + (t/is (= 6 (:processed result)))) (let [row (th/db-get :team {:id (:default-team-id prof1)} @@ -363,7 +363,7 @@ ;; execute permanent deletion task (let [result (th/run-task! :objects-gc {:min-age 0})] - (t/is (= 8 (:processed result)))))) + (t/is (= 10 (:processed result)))))) (t/deftest email-blacklist-1 @@ -514,8 +514,7 @@ (t/is (= 0 (:call-count @mock)))))))) (t/deftest prepare-and-register-with-invitation-and-enabled-registration-1 - (let [sprops (:app.setup/props th/*system*) - itoken (tokens/generate sprops + (let [itoken (tokens/generate th/*system* {:iss :team-invitation :exp (ct/in-future "48h") :role :editor @@ -543,8 +542,7 @@ (t/is (string? (:invitation-token result)))))) (t/deftest prepare-and-register-with-invitation-and-enabled-registration-2 - (let [sprops (:app.setup/props th/*system*) - itoken (tokens/generate sprops + (let [itoken (tokens/generate th/*system* {:iss :team-invitation :exp (ct/in-future "48h") :role :editor @@ -565,8 +563,7 @@ (t/deftest prepare-and-register-with-invitation-and-disabled-registration-1 (with-redefs [app.config/flags [:disable-registration]] - (let [sprops (:app.setup/props th/*system*) - itoken (tokens/generate sprops + (let [itoken (tokens/generate th/*system* {:iss :team-invitation :exp (ct/in-future "48h") :role :editor @@ -586,8 +583,7 @@ (t/deftest prepare-and-register-with-invitation-and-disabled-registration-2 (with-redefs [app.config/flags [:disable-registration]] - (let [sprops (:app.setup/props th/*system*) - itoken (tokens/generate sprops + (let [itoken (tokens/generate th/*system* {:iss :team-invitation :exp (ct/in-future "48h") :role :editor @@ -608,8 +604,7 @@ (t/deftest prepare-and-register-with-invitation-and-disabled-login-with-password (with-redefs [app.config/flags [:disable-login-with-password]] - (let [sprops (:app.setup/props th/*system*) - itoken (tokens/generate sprops + (let [itoken (tokens/generate th/*system* {:iss :team-invitation :exp (ct/in-future "48h") :role :editor diff --git a/backend/test/backend_tests/rpc_team_test.clj b/backend/test/backend_tests/rpc_team_test.clj index 516abc824b..7df7ab7d95 100644 --- a/backend/test/backend_tests/rpc_team_test.clj +++ b/backend/test/backend_tests/rpc_team_test.clj @@ -208,8 +208,6 @@ profile2 (th/create-profile* 2 {:is-active true}) team (th/create-team* 1 {:profile-id (:id profile1)}) - - sprops (:app.setup/props th/*system*) pool (:app.db/pool th/*system*)] ;; Try to invite a not existing user @@ -226,7 +224,7 @@ (t/is (= 1 (-> out :result :total))) (let [token (-> out :result :invitations first) - claims (tokens/decode sprops token)] + claims (tokens/decode th/*system* token)] (t/is (= :team-invitation (:iss claims))) (t/is (= (:id profile1) (:profile-id claims))) (t/is (= :editor (:role claims))) @@ -250,7 +248,7 @@ (t/is (= 1 (-> out :result :total))) (let [token (-> out :result :invitations first) - claims (tokens/decode sprops token)] + claims (tokens/decode th/*system* token)] (t/is (= :team-invitation (:iss claims))) (t/is (= (:id profile1) (:profile-id claims))) (t/is (= :editor (:role claims))) @@ -266,10 +264,9 @@ team (th/create-team* 1 {:profile-id (:id profile1)}) - sprops (:app.setup/props th/*system*) pool (:app.db/pool th/*system*)] - (let [token (tokens/generate sprops + (let [token (tokens/generate th/*system* {:iss :team-invitation :exp (ct/in-future "1h") :profile-id (:id profile1) @@ -585,7 +582,7 @@ (t/is (ct/inst? (:deleted-at (first rows))))) (let [result (th/run-task! :objects-gc {:deletion-threshold (cf/get-deletion-delay)})] - (t/is (= 5 (:processed result)))))) + (t/is (= 7 (:processed result)))))) (t/deftest create-team-access-request (with-mocks [mock {:target 'app.email/send! :return nil}] diff --git a/common/deps.edn b/common/deps.edn index f15f313030..dcdf4fe0a8 100644 --- a/common/deps.edn +++ b/common/deps.edn @@ -6,26 +6,28 @@ org.clojure/data.fressian {:mvn/version "1.1.0"} org.clojure/clojurescript {:mvn/version "1.12.42"} + org.apache.commons/commons-pool2 {:mvn/version "2.12.1"} + ;; Logging - org.apache.logging.log4j/log4j-api {:mvn/version "2.24.3"} - org.apache.logging.log4j/log4j-core {:mvn/version "2.24.3"} - org.apache.logging.log4j/log4j-web {:mvn/version "2.24.3"} - org.apache.logging.log4j/log4j-jul {:mvn/version "2.24.3"} - org.apache.logging.log4j/log4j-slf4j2-impl {:mvn/version "2.24.3"} + org.apache.logging.log4j/log4j-api {:mvn/version "2.25.1"} + org.apache.logging.log4j/log4j-core {:mvn/version "2.25.1"} + org.apache.logging.log4j/log4j-web {:mvn/version "2.25.1"} + org.apache.logging.log4j/log4j-jul {:mvn/version "2.25.1"} + org.apache.logging.log4j/log4j-slf4j2-impl {:mvn/version "2.25.1"} org.slf4j/slf4j-api {:mvn/version "2.0.17"} - pl.tkowalcz.tjahzi/log4j2-appender {:mvn/version "0.9.32"} + pl.tkowalcz.tjahzi/log4j2-appender {:mvn/version "0.9.40"} selmer/selmer {:mvn/version "1.12.62"} criterium/criterium {:mvn/version "0.4.6"} metosin/jsonista {:mvn/version "0.3.13"} - metosin/malli {:mvn/version "0.18.0"} + metosin/malli {:mvn/version "0.19.1"} expound/expound {:mvn/version "0.9.0"} com.cognitect/transit-clj {:mvn/version "1.0.333"} com.cognitect/transit-cljs {:mvn/version "0.8.280"} java-http-clj/java-http-clj {:mvn/version "0.4.3"} - integrant/integrant {:mvn/version "0.13.1"} + integrant/integrant {:mvn/version "1.0.0"} funcool/tubax {:mvn/version "2021.05.20-0"} funcool/cuerdas {:mvn/version "2025.06.16-414"} @@ -47,7 +49,7 @@ org.la4j/la4j {:mvn/version "0.6.0"} ;; exception printing - fipp/fipp {:mvn/version "0.6.27"} + fipp/fipp {:mvn/version "0.6.29"} me.flowthing/pp {:mvn/version "2024-11-13.77"} @@ -59,7 +61,7 @@ {:dev {:extra-deps {org.clojure/tools.namespace {:mvn/version "RELEASE"} - thheller/shadow-cljs {:mvn/version "3.1.5"} + thheller/shadow-cljs {:mvn/version "3.2.0"} com.clojure-goes-fast/clj-async-profiler {:mvn/version "RELEASE"} com.bhauman/rebel-readline {:mvn/version "RELEASE"} criterium/criterium {:mvn/version "RELEASE"} @@ -68,7 +70,7 @@ :build {:extra-deps - {io.github.clojure/tools.build {:git/tag "v0.10.9" :git/sha "e405aac"}} + {io.github.clojure/tools.build {:mvn/version "0.10.10"}} :ns-default build} :test diff --git a/common/src/app/common/buffer.cljc b/common/src/app/common/buffer.cljc index c04bd46239..07cf5e6853 100644 --- a/common/src/app/common/buffer.cljc +++ b/common/src/app/common/buffer.cljc @@ -50,6 +50,13 @@ (let [target (with-meta target {:tag 'java.nio.ByteBuffer})] `(long (.getInt ~target (unchecked-int ~offset)))))) +(defmacro read-long + [target offset] + (if (:ns &env) + `(.getInt64 ~target ~offset true) + (let [target (with-meta target {:tag 'java.nio.ByteBuffer})] + `(.getLong ~target (unchecked-int ~offset))))) + (defmacro read-float [target offset] (if (:ns &env) @@ -75,6 +82,40 @@ (finally (.order ~target ByteOrder/LITTLE_ENDIAN)))))) +(defmacro read-bytes + "Get a byte array from buffer. It is potentially unsafe because on + JS/CLJS it returns a subarray without doing any copy of data." + [target offset size] + (if (:ns &env) + `(new js/Uint8Array + (.-buffer ~target) + (+ (.-byteOffset ~target) ~offset) + ~size) + (let [target (with-meta target {:tag 'java.nio.ByteBuffer}) + bbuf (with-meta (gensym "bbuf") {:tag bytes})] + `(let [~bbuf (byte-array ~size)] + (.get ~target + (unchecked-int ~offset) + ~bbuf + 0 + ~size) + ~bbuf)))) + +;; FIXME: implement in cljs +(defmacro write-bytes + ([target offset src size] + `(write-bytes ~target ~offset ~src 0 ~size)) + ([target offset src src-offset size] + (if (:ns &env) + (throw (ex-info "not implemented" {})) + (let [target (with-meta target {:tag 'java.nio.ByteBuffer}) + src (with-meta src {:tag 'bytes})] + `(.put ~target + (unchecked-int ~offset) + ~src + (unchecked-int ~src-offset) + (unchecked-int ~size)))))) + (defmacro write-byte [target offset value] (if (:ns &env) @@ -144,13 +185,15 @@ (.setUint32 ~target (+ ~offset 12) (aget barray# 3) true)) (let [target (with-meta target {:tag 'java.nio.ByteBuffer}) - value (with-meta value {:tag 'java.util.UUID})] - `(try - (.order ~target ByteOrder/BIG_ENDIAN) - (.putLong ~target (unchecked-int (+ ~offset 0)) (.getMostSignificantBits ~value)) - (.putLong ~target (unchecked-int (+ ~offset 8)) (.getLeastSignificantBits ~value)) - (finally - (.order ~target ByteOrder/LITTLE_ENDIAN)))))) + value (with-meta value {:tag 'java.util.UUID}) + prev (with-meta (gensym "prev-") {:tag 'java.nio.ByteOrder})] + `(let [~prev (.order ~target)] + (try + (.order ~target ByteOrder/BIG_ENDIAN) + (.putLong ~target (unchecked-int (+ ~offset 0)) (.getMostSignificantBits ~value)) + (.putLong ~target (unchecked-int (+ ~offset 8)) (.getLeastSignificantBits ~value)) + (finally + (.order ~target ~prev))))))) (defn wrap [data] @@ -160,7 +203,7 @@ (defn allocate [size] - #?(:clj (let [buffer (ByteBuffer/allocate (int size))] + #?(:clj (let [buffer (ByteBuffer/allocate (unchecked-int size))] (.order buffer ByteOrder/LITTLE_ENDIAN)) :cljs (new js/DataView (new js/ArrayBuffer size)))) @@ -181,6 +224,14 @@ (.set dst-view src-view) (js/DataView. dst-buff)))) +;; FIXME: cljs impl +#?(:clj + (defn copy-bytes + [src src-offset size dst dst-offset] + (let [tmp (byte-array size)] + (.get ^ByteBuffer src src-offset tmp 0 size) + (.put ^ByteBuffer dst dst-offset tmp 0 size)))) + (defn equals? [buffer-a buffer-b] #?(:clj @@ -208,3 +259,18 @@ [o] #?(:clj (instance? ByteBuffer o) :cljs (instance? js/DataView o))) + +(defn slice + [buffer offset size] + #?(:cljs + (let [offset (+ (.-byteOffset buffer) offset)] + (new js/DataView (.-buffer buffer) offset size)) + + :clj + (-> (.slice ^ByteBuffer buffer (unchecked-int offset) (unchecked-int size)) + (.order ByteOrder/LITTLE_ENDIAN)))) + +(defn size + [o] + #?(:cljs (.-byteLength ^js o) + :clj (.capacity ^ByteBuffer o))) diff --git a/common/src/app/common/data.cljc b/common/src/app/common/data.cljc index d06da2ae4c..ea81ca238d 100644 --- a/common/src/app/common/data.cljc +++ b/common/src/app/common/data.cljc @@ -1024,6 +1024,29 @@ :clj (sort comp-fn items)))) +(defn reorder + "Reorder a vector by moving one of their items from some position to some space between positions. + It clamps the position numbers to a valid range." + [v from-pos to-space-between-pos] + (let [max-space-pos (count v) + max-prop-pos (dec max-space-pos) + + from-pos (max 0 (min max-prop-pos from-pos)) + to-space-between-pos (max 0 (min max-space-pos to-space-between-pos))] + + (if (= from-pos to-space-between-pos) + v + (let [elem (nth v from-pos) + without-elem (-> [] + (into (subvec v 0 from-pos)) + (into (subvec v (inc from-pos)))) + insert-pos (if (< from-pos to-space-between-pos) + (dec to-space-between-pos) + to-space-between-pos)] + (-> [] + (into (subvec without-elem 0 insert-pos)) + (into [elem]) + (into (subvec without-elem insert-pos))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; String Functions diff --git a/common/src/app/common/features.cljc b/common/src/app/common/features.cljc index ab99a95d69..87d637cfed 100644 --- a/common/src/app/common/features.cljc +++ b/common/src/app/common/features.cljc @@ -51,6 +51,7 @@ "styles/v2" "layout/grid" "plugins/runtime" + "tokens/numeric-input" "design-tokens/v1" "text-editor/v2" "render-wasm/v1" @@ -75,6 +76,7 @@ #{"styles/v2" "plugins/runtime" "text-editor/v2" + "tokens/numeric-input" "render-wasm/v1"}) ;; Features that are mainly backend only or there are a proper @@ -98,17 +100,19 @@ "design-tokens/v1" "fdata/shape-data-type" "fdata/path-data" + "tokens/numeric-input" "variants/v1"} (into frontend-only-features) (into backend-only-features))) -(sm/register! - ^{::sm/type ::features} - [:schema - {:title "FileFeatures" - ::smdj/inline true - :gen/gen (smg/subseq supported-features)} - [::sm/set :string]]) +(def schema:features + (sm/register! + ^{::sm/type ::features} + [:schema + {:title "FileFeatures" + ::smdj/inline true + :gen/gen (smg/subseq supported-features)} + [::sm/set :string]])) (defn- flag->feature "Translate a flag to a feature name" @@ -122,6 +126,7 @@ :feature-text-editor-v2 "text-editor/v2" :feature-render-wasm "render-wasm/v1" :feature-variants "variants/v1" + :feature-token-input "tokens/numeric-input" nil)) (defn migrate-legacy-features diff --git a/common/src/app/common/files/builder.cljc b/common/src/app/common/files/builder.cljc index 181824c672..4536fb7cba 100644 --- a/common/src/app/common/files/builder.cljc +++ b/common/src/app/common/files/builder.cljc @@ -8,11 +8,11 @@ "Internal implementation of file builder. Mainly used as base impl for penpot library" (:require + ;; [app.common.features :as cfeat] [app.common.data :as d] [app.common.data.macros :as dm] [app.common.exceptions :as ex] [app.common.files.changes :as ch] - ;; [app.common.features :as cfeat] [app.common.files.helpers :as cph] [app.common.files.migrations :as fmig] [app.common.geom.shapes :as gsh] @@ -26,6 +26,7 @@ [app.common.types.path :as types.path] [app.common.types.shape :as types.shape] [app.common.types.typography :as types.typography] + [app.common.types.variant :as types.variant] [app.common.uuid :as uuid] [cuerdas.core :as str])) @@ -126,10 +127,12 @@ [:map [:component-id ::sm/uuid] [:file-id {:optional true} ::sm/uuid] - [:name {:optional true} ::sm/text] - [:path {:optional true} ::sm/text] + [:page-id {:optional true} ::sm/uuid] [:frame-id {:optional true} ::sm/uuid] - [:page-id {:optional true} ::sm/uuid]]) + [:name {:optional true} :string] + [:path {:optional true} :string] + [:variant-id {:optional true} ::sm/uuid] + [:variant-properties {:optional true} [:vector types.variant/schema:variant-property]]]) (def ^:private check-add-component (sm/check-fn schema:add-component @@ -200,7 +203,8 @@ "layout/grid" "components/v2" "plugins/runtime" - "design-tokens/v1"}) + "design-tokens/v1" + "variants/v1"}) ;; WORKAROUND: the same as features (def available-migrations @@ -443,7 +447,7 @@ (defn add-component [state params] - (let [{:keys [component-id file-id page-id frame-id name path]} + (let [{:keys [component-id file-id page-id frame-id name path variant-id variant-properties]} (-> (check-add-component params) (update :component-id default-uuid)) @@ -461,9 +465,11 @@ {:type :add-component :id component-id :name (or name "anonmous") - :path path + :path (d/nilv path "") :main-instance-id frame-id - :main-instance-page page-id}) + :main-instance-page page-id + :variant-id variant-id + :variant-properties variant-properties}) change2 {:type :mod-obj diff --git a/common/src/app/common/files/changes.cljc b/common/src/app/common/files/changes.cljc index 73f48f5661..0d12396f3c 100644 --- a/common/src/app/common/files/changes.cljc +++ b/common/src/app/common/files/changes.cljc @@ -317,17 +317,19 @@ [:type [:= :add-component]] [:id ::sm/uuid] [:name :string] - [:shapes {:optional true} [:vector {:gen/max 3} ::sm/any]] - [:path {:optional true} :string] + [:path :string] [:main-instance-id ::sm/uuid] - [:main-instance-page ::sm/uuid]]] + [:main-instance-page ::sm/uuid] + ;; Only used by external processes (like Penpot SDK) + [:variant-id {:optional true} ::sm/uuid] + [:variant-properties {:optional true} [:vector ctv/schema:variant-property]]]] [:mod-component - [:map {:title "ModCompoenentChange"} + [:map {:title "ModComponentChange"} [:type [:= :mod-component]] [:id ::sm/uuid] - [:shapes {:optional true} [:vector {:gen/max 3} ::sm/any]] [:name {:optional true} :string] + [:path {:optional true} :string] [:variant-id {:optional true} ::sm/uuid] [:variant-properties {:optional true} [:vector ctv/schema:variant-property]]]] @@ -366,9 +368,33 @@ [:type [:= :del-typography]] [:id ::sm/uuid]]] - [:update-active-token-themes - [:map {:title "UpdateActiveTokenThemes"} - [:type [:= :update-active-token-themes]] + [:set-tokens-lib + [:map {:title "SetTokensLib"} + [:type [:= :set-tokens-lib]] + [:tokens-lib ::sm/any]]] ;; TODO: we should define a plain object schema for tokens-lib + + [:set-token + [:map {:title "SetTokenChange"} + [:type [:= :set-token]] + [:set-id ::sm/uuid] + [:token-id ::sm/uuid] + [:attrs [:maybe ctob/schema:token-attrs]]]] + + [:set-token-set + [:map {:title "SetTokenSetChange"} + [:type [:= :set-token-set]] + [:id ::sm/uuid] + [:attrs [:maybe ctob/schema:token-set-attrs]]]] + + [:set-token-theme + [:map {:title "SetTokenThemeChange"} + [:type [:= :set-token-theme]] + [:id ::sm/uuid] + [:attrs [:maybe ctob/schema:token-theme-attrs]]]] + + [:set-active-token-themes + [:map {:title "SetActiveTokenThemes"} + [:type [:= :set-active-token-themes]] [:theme-paths [:set :string]]]] [:rename-token-set-group @@ -393,39 +419,6 @@ [:before-path [:maybe [:vector :string]]] [:before-group [:maybe :boolean]]]] - [:set-token-theme - [:map {:title "SetTokenThemeChange"} - [:type [:= :set-token-theme]] - [:theme-name :string] - [:group :string] - [:theme [:maybe ctob/schema:token-theme-attrs]]]] - - [:set-tokens-lib - [:map {:title "SetTokensLib"} - [:type [:= :set-tokens-lib]] - [:tokens-lib ::sm/any]]] - - [:set-token-set - [:map {:title "SetTokenSetChange"} - [:type [:= :set-token-set]] - [:set-name :string] - [:group? :boolean] - - ;; FIXME: we should not pass private types as part of changes - ;; protocol, the changes protocol should reflect a - ;; method/protocol for perform surgical operations on file data, - ;; this has nothing todo with internal types of a file data - ;; structure. - [:token-set {:gen/gen (sg/generator ctob/schema:token-set)} - [:maybe [:fn ctob/token-set?]]]]] - - [:set-token - [:map {:title "SetTokenChange"} - [:type [:= :set-token]] - [:set-name :string] - [:token-id ::sm/uuid] - [:token [:maybe ctob/schema:token-attrs]]]] - [:set-base-font-size [:map {:title "ModBaseFontSize"} [:type [:= :set-base-font-size]] @@ -978,64 +971,63 @@ [data {:keys [id]}] (ctyl/delete-typography data id)) -;; -- Tokens +;; -- Design Tokens (defmethod process-change :set-tokens-lib [data {:keys [tokens-lib]}] (assoc data :tokens-lib tokens-lib)) (defmethod process-change :set-token - [data {:keys [set-name token-id token]}] + [data {:keys [set-id token-id attrs]}] (update data :tokens-lib (fn [lib] (let [lib' (ctob/ensure-tokens-lib lib)] (cond - (not token) - (ctob/delete-token-from-set lib' set-name token-id) + (not attrs) + (ctob/delete-token lib' set-id token-id) - (not (ctob/get-token-in-set lib' set-name token-id)) - (ctob/add-token-in-set lib' set-name (ctob/make-token token)) + (not (ctob/get-token lib' set-id token-id)) + (ctob/add-token lib' set-id (ctob/make-token attrs)) :else - (ctob/update-token-in-set lib' set-name token-id (fn [prev-token] - (ctob/make-token (merge prev-token token))))))))) + (ctob/update-token lib' set-id token-id + (fn [prev-token] + (ctob/make-token (merge prev-token attrs))))))))) (defmethod process-change :set-token-set - [data {:keys [set-name group? token-set]}] + [data {:keys [id attrs]}] (update data :tokens-lib (fn [lib] (let [lib' (ctob/ensure-tokens-lib lib)] (cond - (not token-set) - (if group? - (ctob/delete-set-group lib' set-name) - (ctob/delete-set lib' set-name)) + (not attrs) + (ctob/delete-set lib' id) - (not (ctob/get-set lib' set-name)) - (ctob/add-set lib' token-set) + (not (ctob/get-set lib' id)) + (ctob/add-set lib' (ctob/make-token-set attrs)) :else - (ctob/update-set lib' set-name (fn [_] token-set))))))) + (ctob/update-set lib' id (fn [_] (ctob/make-token-set attrs)))))))) (defmethod process-change :set-token-theme - [data {:keys [group theme-name theme]}] + [data {:keys [id attrs]}] (update data :tokens-lib (fn [lib] (let [lib' (ctob/ensure-tokens-lib lib)] (cond - (not theme) - (ctob/delete-theme lib' group theme-name) + (not attrs) + (ctob/delete-theme lib' id) - (not (ctob/get-theme lib' group theme-name)) - (ctob/add-theme lib' (ctob/make-token-theme theme)) + (not (ctob/get-theme lib' id)) + (ctob/add-theme lib' (ctob/make-token-theme attrs)) :else (ctob/update-theme lib' - group theme-name + id (fn [prev-token-theme] - (ctob/make-token-theme (merge prev-token-theme theme))))))))) + (ctob/make-token-theme (merge prev-token-theme attrs))))))))) -(defmethod process-change :update-active-token-themes +(defmethod process-change :set-active-token-themes [data {:keys [theme-paths]}] (update data :tokens-lib #(-> % (ctob/ensure-tokens-lib) (ctob/set-active-themes theme-paths)))) @@ -1059,7 +1051,7 @@ (ctob/ensure-tokens-lib) (ctob/move-set-group from-path to-path before-path before-group)))) -;; === Base font size +;; === Design Tokens configuration (defmethod process-change :set-base-font-size [data {:keys [base-font-size]}] diff --git a/common/src/app/common/files/changes_builder.cljc b/common/src/app/common/files/changes_builder.cljc index 473bcf5bef..e27940ef1b 100644 --- a/common/src/app/common/files/changes_builder.cljc +++ b/common/src/app/common/files/changes_builder.cljc @@ -21,7 +21,8 @@ [app.common.types.path :as path] [app.common.types.shape.layout :as ctl] [app.common.types.tokens-lib :as ctob] - [app.common.uuid :as uuid])) + [app.common.uuid :as uuid] + [clojure.datafy :refer [datafy]])) ;; Auxiliary functions to help create a set of changes (undo + redo) ;; TODO: this is a duplicate schema @@ -717,6 +718,7 @@ (reduce resize-parent changes all-parents))) ;; Library changes + (defn add-color [changes color] (-> changes @@ -798,160 +800,6 @@ (update :undo-changes conj {:type :add-typography :typography prev-typography}) (apply-changes-local)))) -(defn update-active-token-themes - [changes active-theme-paths prev-active-theme-paths] - (-> changes - (update :redo-changes conj {:type :update-active-token-themes :theme-paths active-theme-paths}) - (update :undo-changes conj {:type :update-active-token-themes :theme-paths prev-active-theme-paths}) - (apply-changes-local))) - -(defn set-token-theme [changes group theme-name theme] - (assert-library! changes) - (let [library-data (::library-data (meta changes)) - prev-theme (some-> (get library-data :tokens-lib) - (ctob/get-theme group theme-name))] - (-> changes - (update :redo-changes conj {:type :set-token-theme - :theme-name theme-name - :group group - :theme theme}) - (update :undo-changes conj (if prev-theme - {:type :set-token-theme - :group group - :theme-name (or - ;; Undo of edit - (:name theme) - ;; Undo of delete - theme-name) - :theme prev-theme} - ;; Undo of create - {:type :set-token-theme - :group group - :theme-name theme-name - :theme nil})) - (apply-changes-local)))) - -(defn rename-token-set-group - [changes set-group-path set-group-fname] - (let [undo-path (ctob/replace-last-path-name set-group-path set-group-fname) - undo-fname (last set-group-path)] - (-> changes - (update :redo-changes conj {:type :rename-token-set-group :set-group-path set-group-path :set-group-fname set-group-fname}) - (update :undo-changes conj {:type :rename-token-set-group :set-group-path undo-path :set-group-fname undo-fname}) - (apply-changes-local)))) - -(defn move-token-set - [changes {:keys [from-path to-path before-path before-group? prev-before-path prev-before-group?] :as opts}] - (-> changes - (update :redo-changes conj {:type :move-token-set - :from-path from-path - :to-path to-path - :before-path before-path - :before-group before-group?}) - (update :undo-changes conj {:type :move-token-set - :from-path to-path - :to-path from-path - :before-path prev-before-path - :before-group prev-before-group?}) - (apply-changes-local))) - -(defn move-token-set-group - [changes {:keys [from-path to-path before-path before-group? prev-before-path prev-before-group?]}] - (-> changes - (update :redo-changes conj {:type :move-token-set-group - :from-path from-path - :to-path to-path - :before-path before-path - :before-group before-group?}) - (update :undo-changes conj {:type :move-token-set-group - :from-path to-path - :to-path from-path - :before-path prev-before-path - :before-group prev-before-group?}) - (apply-changes-local))) - -(defn set-tokens-lib - [changes tokens-lib] - (assert-library! changes) - (let [library-data (::library-data (meta changes)) - prev-tokens-lib (get library-data :tokens-lib)] - (-> changes - (update :redo-changes conj {:type :set-tokens-lib :tokens-lib tokens-lib}) - (update :undo-changes conj {:type :set-tokens-lib :tokens-lib prev-tokens-lib}) - (apply-changes-local)))) - -(defn set-token [changes set-name token-id token] - (assert-library! changes) - (let [library-data (::library-data (meta changes)) - prev-token (some-> (get library-data :tokens-lib) - (ctob/get-set set-name) - (ctob/get-token token-id))] - (-> changes - (update :redo-changes conj {:type :set-token - :set-name set-name - :token-id token-id - :token token}) - (update :undo-changes conj (if prev-token - {:type :set-token - :set-name set-name - :token-id (or - ;; Undo of edit - (:id token) - ;; Undo of delete - token-id) - :token prev-token} - ;; Undo of create token - {:type :set-token - :set-name set-name - :token-id token-id - :token nil})) - (apply-changes-local)))) - -(defn rename-token-set - [changes name new-name] - - (assert-library! changes) - (let [library-data (::library-data (meta changes)) - prev-token-set (some-> (get library-data :tokens-lib) - (ctob/get-set name))] - (-> changes - (update :redo-changes conj {:type :set-token-set - :set-name name - :token-set (ctob/rename prev-token-set new-name) - :group? false}) - (update :undo-changes conj {:type :set-token-set - :set-name new-name - :token-set prev-token-set - :group? false}) - (apply-changes-local)))) - -(defn set-token-set - [changes set-name group? token-set] - (assert-library! changes) - (let [library-data (::library-data (meta changes)) - prev-token-set (some-> (get library-data :tokens-lib) - (ctob/get-set set-name))] - (-> changes - (update :redo-changes conj {:type :set-token-set - :set-name set-name - :token-set token-set - :group? group?}) - (update :undo-changes conj (if prev-token-set - {:type :set-token-set - :set-name (if token-set - ;; Undo of edit - (ctob/get-name token-set) - ;; Undo of delete - set-name) - :token-set prev-token-set - :group? group?} - ;; Undo of create - {:type :set-token-set - :set-name set-name - :token-set nil - :group? group?})) - (apply-changes-local)))) - (defn add-component ([changes id path name updated-shapes main-instance-id main-instance-page] (add-component changes id path name updated-shapes main-instance-id main-instance-page nil nil nil)) @@ -1081,6 +929,144 @@ :id id :delta delta}))) +;; Design Tokens changes + +(defn set-tokens-lib + [changes tokens-lib] + (assert-library! changes) + (let [library-data (::library-data (meta changes)) + prev-tokens-lib (get library-data :tokens-lib)] + (-> changes + (update :redo-changes conj {:type :set-tokens-lib :tokens-lib tokens-lib}) + (update :undo-changes conj {:type :set-tokens-lib :tokens-lib prev-tokens-lib}) + (apply-changes-local)))) + +(defn set-token [changes set-id token-id token] + (assert-library! changes) + (let [library-data (::library-data (meta changes)) + prev-token (some-> (get library-data :tokens-lib) + (ctob/get-token set-id token-id))] + (-> changes + (update :redo-changes conj {:type :set-token + :set-id set-id + :token-id token-id + :attrs (datafy token)}) + (update :undo-changes conj {:type :set-token + :set-id set-id + :token-id token-id + :attrs (datafy prev-token)}) + (apply-changes-local)))) + +(defn set-token-set + [changes id token-set] + (assert-library! changes) + (let [library-data (::library-data (meta changes)) + prev-token-set (some-> (get library-data :tokens-lib) + (ctob/get-set id))] + (-> changes + (update :redo-changes conj {:type :set-token-set + :id id + :attrs (datafy token-set)}) + (update :undo-changes conj {:type :set-token-set + :id id + :attrs (datafy prev-token-set)}) + (apply-changes-local)))) + +(defn rename-token-set + [changes id new-name] + (assert-library! changes) + (let [library-data (::library-data (meta changes)) + prev-token-set (some-> (get library-data :tokens-lib) + (ctob/get-set id))] + (-> changes + (update :redo-changes conj {:type :set-token-set + :id id + :attrs (datafy (ctob/rename prev-token-set new-name))}) + (update :undo-changes conj {:type :set-token-set + :id id + :attrs (datafy prev-token-set)}) + (apply-changes-local)))) + +(defn set-token-theme [changes id theme] + (assert-library! changes) + (let [library-data (::library-data (meta changes)) + prev-theme (some-> (get library-data :tokens-lib) + (ctob/get-theme id))] + (-> changes + (update :redo-changes conj {:type :set-token-theme + :id id + :attrs (datafy theme)}) + (update :undo-changes conj {:type :set-token-theme + :id id + :attrs (datafy prev-theme)}) + (apply-changes-local)))) + +(defn set-active-token-themes + [changes active-theme-paths] + (assert-library! changes) + (let [library-data (::library-data (meta changes)) + prev-active-theme-paths (d/nilv (some-> (get library-data :tokens-lib) + (ctob/get-active-theme-paths)) + #{})] + (-> changes + (update :redo-changes conj {:type :set-active-token-themes :theme-paths active-theme-paths}) + (update :undo-changes conj {:type :set-active-token-themes :theme-paths prev-active-theme-paths}) + (apply-changes-local)))) + +(defn rename-token-set-group + [changes set-group-path set-group-fname] + (let [undo-path (ctob/replace-last-path-name set-group-path set-group-fname) + undo-fname (last set-group-path)] + (-> changes + (update :redo-changes conj {:type :rename-token-set-group :set-group-path set-group-path :set-group-fname set-group-fname}) + (update :undo-changes conj {:type :rename-token-set-group :set-group-path undo-path :set-group-fname undo-fname}) + (apply-changes-local)))) + +(defn move-token-set + [changes {:keys [from-path to-path before-path before-group? prev-before-path prev-before-group?] :as opts}] + (-> changes + (update :redo-changes conj {:type :move-token-set + :from-path from-path + :to-path to-path + :before-path before-path + :before-group before-group?}) + (update :undo-changes conj {:type :move-token-set + :from-path to-path + :to-path from-path + :before-path prev-before-path + :before-group prev-before-group?}) + (apply-changes-local))) + +(defn move-token-set-group + [changes {:keys [from-path to-path before-path before-group? prev-before-path prev-before-group?]}] + (-> changes + (update :redo-changes conj {:type :move-token-set-group + :from-path from-path + :to-path to-path + :before-path before-path + :before-group before-group?}) + (update :undo-changes conj {:type :move-token-set-group + :from-path to-path + :to-path from-path + :before-path prev-before-path + :before-group prev-before-group?}) + (apply-changes-local))) + +(defn set-base-font-size + [changes new-base-font-size] + (assert-file-data! changes) + (let [file-data (::file-data (meta changes)) + previous-font-size (ctf/get-base-font-size file-data)] + (-> changes + (update :redo-changes conj {:type :set-base-font-size + :base-font-size new-base-font-size}) + + (update :undo-changes conj {:type :set-base-font-size + :base-font-size previous-font-size}) + (apply-changes-local)))) + +;; Misc changes + (defn reorder-children [changes id children] (assert-page-id! changes) @@ -1163,15 +1149,3 @@ [changes] (::page-id (meta changes))) -(defn set-base-font-size - [changes new-base-font-size] - (assert-file-data! changes) - (let [file-data (::file-data (meta changes)) - previous-font-size (ctf/get-base-font-size file-data)] - (-> changes - (update :redo-changes conj {:type :set-base-font-size - :base-font-size new-base-font-size}) - - (update :undo-changes conj {:type :set-base-font-size - :base-font-size previous-font-size}) - (apply-changes-local)))) diff --git a/common/src/app/common/files/helpers.cljc b/common/src/app/common/files/helpers.cljc index fe16c9daa4..2e6ae5dc5f 100644 --- a/common/src/app/common/files/helpers.cljc +++ b/common/src/app/common/files/helpers.cljc @@ -692,129 +692,9 @@ (walk/postwalk process-form data))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; SHAPES ORGANIZATION (PATH MANAGEMENT) +;; SHAPES ORGANIZATION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defn split-path - "Decompose a string in the form 'one / two / three' into - a vector of strings, normalizing spaces." - [path] - (let [xf (comp (map str/trim) - (remove str/empty?))] - (->> (str/split path "/") - (into [] xf)))) - -(defn join-path - "Regenerate a path as a string, from a vector." - [path-vec] - (str/join " / " path-vec)) - -(defn join-path-with-dot - "Regenerate a path as a string, from a vector." - [path-vec] - (str/join "\u00A0\u2022\u00A0" path-vec)) - -(defn clean-path - "Remove empty items from the path." - [path] - (->> (split-path path) - (join-path))) - -(defn parse-path-name - "Parse a string in the form 'group / subgroup / name'. - Retrieve the path and the name in separated values, normalizing spaces." - [path-name] - (let [path-name-split (split-path path-name) - path (str/join " / " (butlast path-name-split)) - name (or (last path-name-split) "")] - [path name])) - -(defn merge-path-item - "Put the item at the end of the path." - [path name] - (if-not (empty? path) - (if-not (empty? name) - (str path " / " name) - path) - name)) - -(defn merge-path-item-with-dot - "Put the item at the end of the path." - [path name] - (if-not (empty? path) - (if-not (empty? name) - (str path "\u00A0\u2022\u00A0" name) - path) - name)) - -(defn compact-path - "Separate last item of the path, and truncate the others if too long: - 'one' -> ['' 'one' false] - 'one / two / three' -> ['one / two' 'three' false] - 'one / two / three / four' -> ['one / two / ...' 'four' true] - 'one-item-but-very-long / two' -> ['...' 'two' true] " - [path max-length dot?] - (let [path-split (split-path path) - last-item (last path-split) - merge-path (if dot? - merge-path-item-with-dot - merge-path-item)] - (loop [other-items (seq (butlast path-split)) - other-path ""] - (if-let [item (first other-items)] - (let [full-path (-> other-path - (merge-path item) - (merge-path last-item))] - (if (> (count full-path) max-length) - [(merge-path other-path "...") last-item true] - (recur (next other-items) - (merge-path other-path item)))) - [other-path last-item false])))) - -(defn butlast-path - "Remove the last item of the path." - [path] - (let [split (split-path path)] - (if (= 1 (count split)) - "" - (join-path (butlast split))))) - -(defn butlast-path-with-dots - "Remove the last item of the path." - [path] - (let [split (split-path path)] - (if (= 1 (count split)) - "" - (join-path-with-dot (butlast split))))) - -(defn last-path - "Returns the last item of the path." - [path] - (last (split-path path))) - -(defn compact-name - "Append the first item of the path and the name." - [path name] - (let [path-split (split-path path)] - (merge-path-item (first path-split) name))) - -(defn inside-path? [child parent] - (let [child-path (split-path child) - parent-path (split-path parent)] - (and (<= (count parent-path) (count child-path)) - (= parent-path (take (count parent-path) child-path))))) - - - -(defn split-by-last-period - "Splits a string into two parts: - the text before and including the last period, - and the text after the last period." - [s] - (if-let [last-period (str/last-index-of s ".")] - [(subs s 0 (inc last-period)) (subs s (inc last-period))] - [s ""])) - (defn get-frame-objects "Retrieves a new objects map only with the objects under frame-id (with frame-id)" [objects frame-id] diff --git a/common/src/app/common/files/migrations.cljc b/common/src/app/common/files/migrations.cljc index e5cb43386c..87c9c90da5 100644 --- a/common/src/app/common/files/migrations.cljc +++ b/common/src/app/common/files/migrations.cljc @@ -33,6 +33,7 @@ [app.common.types.shape.shadow :as ctss] [app.common.types.shape.text :as ctst] [app.common.types.text :as types.text] + [app.common.types.tokens-lib :as types.tokens-lib] [app.common.uuid :as uuid] [clojure.set :as set] [cuerdas.core :as str])) @@ -74,7 +75,9 @@ data (-> data (assoc :id id) - (dissoc :version :libs))] + (dissoc :version) + (dissoc :libs) + (ctf/check-file-data))] (-> file (assoc :data data) @@ -1538,6 +1541,13 @@ (update :pages-index d/update-vals update-container) (d/update-when :components d/update-vals update-container)))) +(defmethod migrate-data "0013-fix-component-path" + [data _] + (let [update-component + (fn [component] + (update component :path #(d/nilv % "")))] + (d/update-when data :components d/update-vals update-component))) + (def ^:private valid-stroke? (sm/lazy-validator cts/schema:stroke)) @@ -1608,6 +1618,10 @@ (update :pages-index d/update-vals update-container) (d/update-when :components d/update-vals update-container)))) +(defmethod migrate-data "0014-fix-tokens-lib-duplicate-ids" + [data _] + (d/update-when data :tokens-lib types.tokens-lib/fix-duplicate-token-set-ids)) + (defmethod migrate-data "0014-clear-components-nil-objects" [data _] ;; Because of a bug in migrations, several files have migrations @@ -1684,5 +1698,7 @@ "0010-fix-swap-slots-pointing-non-existent-shapes" "0011-fix-invalid-text-touched-flags" "0012-fix-position-data" + "0013-fix-component-path" "0013-clear-invalid-strokes-and-fills" + "0014-fix-tokens-lib-duplicate-ids" "0014-clear-components-nil-objects"])) diff --git a/common/src/app/common/files/repair.cljc b/common/src/app/common/files/repair.cljc index 945b0c1f57..eaa70209a2 100644 --- a/common/src/app/common/files/repair.cljc +++ b/common/src/app/common/files/repair.cljc @@ -320,6 +320,31 @@ (pcb/with-file-data file-data) (pcb/update-shapes shape-ids detach-shape)))))) +(defmethod repair-error :ref-shape-is-not-head + [_ {:keys [shape page-id] :as error} file-data _] + (let [repair-shape + (fn [shape] + ; Convert shape in a normal copy, removing nested copy status + (log/debug :hint " -> unhead shape") + (ctk/unhead-shape shape))] + + (log/dbg :hint "repairing shape :shape-ref-is-not-head" :id (:id shape) :name (:name shape) :page-id page-id) + (-> (pcb/empty-changes nil page-id) + (pcb/with-file-data file-data) + (pcb/update-shapes [(:id shape)] repair-shape)))) + +(defmethod repair-error :ref-shape-is-head + [_ {:keys [shape page-id args] :as error} file-data _] + (let [repair-shape + (fn [shape] + ; Convert shape in a nested head, adding component info + (log/debug :hint " -> reroot shape") + (ctk/rehead-shape shape (:component-file args) (:component-id args)))] + + (log/dbg :hint "repairing shape :shape-ref-is-head" :id (:id shape) :name (:name shape) :page-id page-id) + (-> (pcb/empty-changes nil page-id) + (pcb/with-file-data file-data) + (pcb/update-shapes [(:id shape)] repair-shape)))) (defmethod repair-error :shape-ref-cycle [_ {:keys [shape args] :as error} file-data _] diff --git a/common/src/app/common/files/validate.cljc b/common/src/app/common/files/validate.cljc index 44a98ee8f8..5b0e1d74d4 100644 --- a/common/src/app/common/files/validate.cljc +++ b/common/src/app/common/files/validate.cljc @@ -11,6 +11,7 @@ [app.common.exceptions :as ex] [app.common.files.helpers :as cfh] [app.common.files.variant :as cfv] + [app.common.path-names :as cpn] [app.common.schema :as sm] [app.common.types.component :as ctk] [app.common.types.components-list :as ctkl] @@ -47,6 +48,8 @@ :should-be-component-root :should-not-be-component-root :ref-shape-not-found + :ref-shape-is-head + :ref-shape-is-not-head :shape-ref-in-main :root-main-not-allowed :nested-main-not-allowed @@ -301,6 +304,28 @@ "Shape inside main instance should not have shape-ref" shape file page))) +(defn- check-ref-is-not-head + "Validate that the referenced shape is not a nested copy root." + [shape file page libraries] + (let [ref-shape (ctf/find-ref-shape file page libraries shape :include-deleted? true)] + (when (and (some? ref-shape) + (ctk/instance-head? ref-shape)) + (report-error :ref-shape-is-head + (str/ffmt "Referenced shape % is a component, so the copy must also be" (:shape-ref shape)) + shape file page)))) + +(defn- check-ref-is-head + "Validate that the referenced shape is a nested copy root." + [shape file page libraries] + (let [ref-shape (ctf/find-ref-shape file page libraries shape :include-deleted? true)] + (when (and (some? ref-shape) + (not (ctk/instance-head? ref-shape))) + (report-error :ref-shape-is-not-head + (str/ffmt "Referenced shape % of a head copy must also be a head" (:shape-ref shape)) + shape file page + :component-file (:component-file ref-shape) + :component-id (:component-id ref-shape))))) + (defn- check-empty-swap-slot "Validate that this shape does not have any swap slot." [shape file page] @@ -378,6 +403,7 @@ (check-component-not-main-head shape file page libraries) (check-component-root shape file page) (check-component-ref shape file page libraries) + (check-ref-is-head shape file page libraries) (check-empty-swap-slot shape file page) (check-duplicate-swap-slot shape file page) (check-valid-touched shape file page) @@ -395,7 +421,8 @@ ;; We can have situations where the nested copy and the ancestor copy come from different libraries and some of them have been dettached ;; so we only validate the shape-ref if the ancestor is from a valid library (when library-exists - (check-component-ref shape file page libraries)) + (check-component-ref shape file page libraries) + (check-ref-is-head shape file page libraries)) (run! #(check-shape % file page libraries :context :copy-nested) (:shapes shape))) (defn- check-shape-main-not-root @@ -413,6 +440,7 @@ (check-component-not-main-not-head shape file page) (check-component-not-root shape file page) (check-component-ref shape file page libraries) + (check-ref-is-not-head shape file page libraries) (check-empty-swap-slot shape file page) (check-valid-touched shape file page) (run! #(check-shape % file page libraries :context :copy-any) (:shapes shape))) @@ -481,7 +509,7 @@ (report-error :variant-bad-name (str/ffmt "Variant % has an invalid name" (:id shape)) shape file page)) - (when-not (= (:name parent) (cfh/merge-path-item (:path component) (:name component))) + (when-not (= (:name parent) (cpn/merge-path-item (:path component) (:name component))) (report-error :variant-component-bad-name (str/ffmt "Component % has an invalid name" (:id shape)) shape file page)) @@ -540,7 +568,7 @@ ;; mains can't be nested into mains (if (or (= context :not-component) (= context :main-top)) (report-error :nested-main-not-allowed - "Nested main component only allowed inside other component" + "Component main not allowed inside other component" shape file page) (check-shape-main-root-nested shape file page libraries)) @@ -606,6 +634,20 @@ (str/ffmt "Shape % should be a variant" (:id main-component)) main-component file component-page)))) +(defn- check-main-inside-main + [component file] + (let [component-page (ctf/get-component-page (:data file) component) + main-instance (ctst/get-shape component-page (:main-instance-id component)) + main-parents? (->> main-instance + :id + (cfh/get-parents (:objects component-page)) + (some ctk/main-instance?) + boolean)] + (when main-parents? + (report-error :nested-main-not-allowed + "Component main not allowed inside other component" + main-instance file component-page)))) + (defn- check-component "Validate semantic coherence of a component. Report all errors found." [component file] @@ -613,6 +655,8 @@ (report-error :component-nil-objects-not-allowed "Objects list cannot be nil" component file nil)) + (when-not (:deleted component) + (check-main-inside-main component file)) (when (:deleted component) (check-component-duplicate-swap-slot component file) (check-ref-cycles component file)) diff --git a/common/src/app/common/flags.cljc b/common/src/app/common/flags.cljc index c8ce46085b..37e6268b3d 100644 --- a/common/src/app/common/flags.cljc +++ b/common/src/app/common/flags.cljc @@ -120,6 +120,7 @@ :tiered-file-data-storage :token-units :token-base-font-size + :token-color :token-typography-types :token-typography-composite :transit-readable-response @@ -133,8 +134,19 @@ :hide-release-modal :subscriptions :subscriptions-old - :frontend-binary-fills - :inspect-styles}) + :inspect-styles + + ;; Security layer middleware that filters request by fetch + ;; metadata headers + :sec-fetch-metadata-middleware + + ;; Security layer middleware that check the precense of x-client + ;; http headers and enables an addtional csrf protection + :client-header-check-middleware + + ;; A temporal flag, enables backend code use more extensivelly + ;; redis for caching data + :redis-cache}) (def all-flags (set/union email login varia)) @@ -159,6 +171,7 @@ :enable-render-wasm-dpr :enable-token-units :enable-token-typography-types + :enable-token-typography-composite :enable-feature-fdata-objects-map]) (defn parse diff --git a/common/src/app/common/generic_pool.clj b/common/src/app/common/generic_pool.clj new file mode 100644 index 0000000000..bccf0b06ec --- /dev/null +++ b/common/src/app/common/generic_pool.clj @@ -0,0 +1,58 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.common.generic-pool + (:refer-clojure :exclude [get]) + (:import + java.lang.AutoCloseable + org.apache.commons.pool2.ObjectPool + org.apache.commons.pool2.PooledObject + org.apache.commons.pool2.PooledObjectFactory + org.apache.commons.pool2.impl.DefaultPooledObject + org.apache.commons.pool2.impl.SoftReferenceObjectPool)) + +(defn pool? + [o] + (instance? ObjectPool o)) + +(defn create + [& {:keys [create-fn destroy-fn validate-fn dispose-fn]}] + (SoftReferenceObjectPool. + (reify PooledObjectFactory + (activateObject [_ _]) + (destroyObject [_ o] + (let [object (.getObject ^PooledObject o)] + (destroy-fn object))) + + (destroyObject [_ o _] + (let [object (.getObject ^PooledObject o)] + (destroy-fn object))) + + (passivateObject [_ o] + (when (fn? dispose-fn) + (let [object (.getObject ^PooledObject o)] + (dispose-fn object)))) + + (validateObject [_ o] + (if (fn? validate-fn) + (let [object (.getObject ^PooledObject o)] + (validate-fn object)) + true)) + + (makeObject [_] + (let [object (create-fn)] + (DefaultPooledObject. object)))))) + +(defn get + [^ObjectPool pool] + (let [object (.borrowObject pool)] + (reify + clojure.lang.IDeref + (deref [_] object) + + AutoCloseable + (close [_] + (.returnObject pool object))))) diff --git a/common/src/app/common/geom/shapes/bounds.cljc b/common/src/app/common/geom/shapes/bounds.cljc index 3117e20adf..a6a6608ba4 100644 --- a/common/src/app/common/geom/shapes/bounds.cljc +++ b/common/src/app/common/geom/shapes/bounds.cljc @@ -88,8 +88,11 @@ ([shape] (get-shape-filter-bounds shape false)) ([shape ignore-shadow-margin?] - (if (and (cfh/svg-raw-shape? shape) - (not= :svg (dm/get-in shape [:content :tag]))) + (if (or (and (cfh/svg-raw-shape? shape) + (not= :svg (dm/get-in shape [:content :tag]))) + ;; If no shadows or blur, we return the selrect as is + (and (empty? (-> shape :shadow)) + (zero? (-> shape :blur :value (or 0))))) (dm/get-prop shape :selrect) (let [filters (shape->filters shape) blur-value (or (-> shape :blur :value) 0) diff --git a/common/src/app/common/logging.cljc b/common/src/app/common/logging.cljc index 7a4df8ebef..e678152b12 100644 --- a/common/src/app/common/logging.cljc +++ b/common/src/app/common/logging.cljc @@ -49,6 +49,7 @@ [app.common.exceptions :as ex] [app.common.pprint :as pp] [app.common.schema :as sm] + [app.common.time :as ct] [app.common.uuid :as uuid] [cuerdas.core :as str] [promesa.exec :as px] @@ -221,36 +222,42 @@ #?(:clj (inst-ms (java.time.Instant/now)) :cljs (js/Date.now))) +(defn emit-log + [props cause context logger level sync?] + (let [props (cond-> props sync? deref) + ts (current-timestamp) + gcontext *context* + logfn (fn [] + (let [props (if sync? props (deref props)) + props (into (d/ordered-map) props) + context (if (and (empty? gcontext) + (empty? context)) + {} + (d/without-nils (merge gcontext context))) + + lrecord {::id (uuid/next) + ::timestamp ts + ::message (delay (build-message props)) + ::props props + ::context context + ::level level + ::logger logger} + lrecord (cond-> lrecord + (some? cause) + (assoc ::cause cause + ::trace (delay (build-stack-trace cause))))] + (swap! log-record (constantly lrecord))))] + (if sync? + (logfn) + (px/exec! *default-executor* logfn)))) + (defmacro log! "Emit a new log record to the global log-record state (asynchronously). " [& props] (let [{:keys [::level ::logger ::context ::sync? cause] :or {sync? false}} props props (into [] msg-props-xf props)] `(when (enabled? ~logger ~level) - (let [props# (cond-> (delay ~props) ~sync? deref) - ts# (current-timestamp) - context# *context* - logfn# (fn [] - (let [props# (if ~sync? props# (deref props#)) - props# (into (d/ordered-map) props#) - cause# ~cause - context# (d/without-nils - (merge context# ~context)) - lrecord# {::id (uuid/next) - ::timestamp ts# - ::message (delay (build-message props#)) - ::props props# - ::context context# - ::level ~level - ::logger ~logger} - lrecord# (cond-> lrecord# - (some? cause#) - (assoc ::cause cause# - ::trace (delay (build-stack-trace cause#))))] - (swap! log-record (constantly lrecord#))))] - (if ~sync? - (logfn#) - (px/exec! *default-executor* logfn#)))))) + (emit-log (delay ~props) ~cause ~context ~logger ~level ~sync?)))) #?(:clj (defn slf4j-log-handler @@ -276,7 +283,8 @@ (when (enabled? logger level) (let [hstyles (str/ffmt "font-weight: 600; color: %" (level->color level)) mstyles (str/ffmt "font-weight: 300; color: %" (level->color level)) - header (str/concat "%c" (level->name level) " [" logger "] ") + ts (ct/format-inst (ct/now) "kk:mm:ss.SSSS") + header (str/concat "%c" (level->name level) " " ts " [" logger "] ") message (str/concat header "%c" @message)] (js/console.group message hstyles mstyles) diff --git a/common/src/app/common/logic/libraries.cljc b/common/src/app/common/logic/libraries.cljc index 7beec359cb..95a87057be 100644 --- a/common/src/app/common/logic/libraries.cljc +++ b/common/src/app/common/logic/libraries.cljc @@ -11,11 +11,13 @@ [app.common.data.macros :as dm] [app.common.files.changes-builder :as pcb] [app.common.files.helpers :as cfh] + [app.common.files.variant :as cfv] [app.common.geom.point :as gpt] [app.common.geom.shapes :as gsh] [app.common.logging :as log] [app.common.logic.shapes :as cls] [app.common.logic.variant-properties :as clvp] + [app.common.path-names :as cpn] [app.common.spec :as us] [app.common.types.component :as ctk] [app.common.types.components-list :as ctkl] @@ -553,13 +555,20 @@ (pcb/with-objects (:objects container)))] (if-let [shape (first shapes)] (recur (next shapes) - (generate-sync-shape asset-type - changes - library-id - container - shape - libraries - current-file-id)) + (let [objects' (pcb/get-objects changes) + shape' (get objects' (:id shape))] + ;; The shape could have been deleted in previous changes, if this nested component + ;; comes from components-v1 era or if there has been some error with the swap slot. + ;; In that case, we just skip it. + (if shape' + (generate-sync-shape asset-type + changes + library-id + container + shape' + libraries + current-file-id) + changes))) changes)))) (defmulti uses-assets? @@ -655,7 +664,8 @@ (if (= new-content old-content) changes - changes'))) + (-> changes' + (pcb/apply-changes-local))))) ;; ---- Component synchronization helpers ---- @@ -985,7 +995,7 @@ (defn generate-rename-component "Generate the changes for rename the component with the given id, in the current file library." [changes id new-name library-data] - (let [[path name] (cfh/parse-path-name new-name)] + (let [[path name] (cpn/split-group-name new-name)] (-> changes (pcb/with-library-data library-data) (pcb/update-component id #(assoc % :path path :name name))))) @@ -1178,6 +1188,7 @@ (let [child-inst (first children-inst) child-main (first children-main)] (shape-log :trace (:id shape-inst) container-inst + :msg "Comparing" :main (str (:name child-main) " " (pretty-uuid (:id child-main))) :inst (str (:name child-inst) " " (pretty-uuid (:id child-inst)))) (cond @@ -1192,7 +1203,8 @@ :else (if (or (ctk/is-main-of? child-main child-inst) - (and (ctf/match-swap-slot? child-main child-inst container-inst container-main file libraries) (not reset?))) + (and (ctf/match-swap-slot? child-main child-inst container-inst container-main file libraries) + (not reset?))) (recur (next children-inst) (next children-main) (if (ctk/is-main-of? child-main child-inst) @@ -1200,10 +1212,12 @@ (swapped-cb changes child-inst child-main))) (let [child-inst' (d/seek #(or (ctk/is-main-of? child-main %) - (and (ctf/match-swap-slot? child-main % container-inst container-main file libraries) (not reset?))) + (and (ctf/match-swap-slot? child-main % container-inst container-main file libraries) + (not reset?))) children-inst) child-main' (d/seek #(or (ctk/is-main-of? % child-inst) - (and (ctf/match-swap-slot? % child-inst container-inst container-main file libraries) (not reset?))) + (and (ctf/match-swap-slot? % child-inst container-inst container-main file libraries) + (not reset?))) children-main)] (cond (nil? child-inst') @@ -1313,7 +1327,8 @@ (if (and (ctk/touched-group? parent-shape :shapes-group) omit-touched?) changes - changes'))) + (-> changes' + (pcb/apply-changes-local))))) (defn- add-shape-to-main [changes shape index component component-container page root-instance root-main] @@ -1417,7 +1432,8 @@ changes' (reduce mod-obj-change changes' updated-shapes) changes' (reduce del-obj-change changes' new-shapes)] - changes')) + (-> changes' + (pcb/apply-changes-local)))) (defn- remove-shape [changes shape container omit-touched?] @@ -1470,7 +1486,8 @@ (if (and (ctk/touched-group? parent :shapes-group) omit-touched?) changes - changes'))) + (-> changes' + (pcb/apply-changes-local))))) (defn- move-shape [changes shape index-before index-after container omit-touched?] @@ -1507,7 +1524,8 @@ (if (and (ctk/touched-group? parent :shapes-group) omit-touched?) changes - changes'))) + (-> changes' + (pcb/apply-changes-local))))) (defn change-touched [changes dest-shape origin-shape container @@ -1551,7 +1569,8 @@ :id (:id dest-shape) :operations [{:type :set-touched - :touched (:touched dest-shape)}]}))))))) + :touched (:touched dest-shape)}]})) + (pcb/apply-changes-local)))))) (defn- change-remote-synced [changes shape container remote-synced?] @@ -1580,7 +1599,8 @@ :id (:id shape) :operations [{:type :set-remote-synced - :remote-synced (:remote-synced shape)}]})))))) + :remote-synced (:remote-synced shape)}]})) + (pcb/apply-changes-local))))) (defn- update-tokens "Token synchronization algorithm. Copy the applied tokens that have changed @@ -1618,10 +1638,12 @@ :operations [{:type :set :attr :applied-tokens :val dest-tokens - :ignore-touched true}]})))))) + :ignore-touched true}]})) + (pcb/apply-changes-local))))) (defn- generate-update-tokens - [changes container dest-shape origin-shape touched omit-touched?] + [changes container dest-shape origin-shape touched omit-touched? valid-attrs] + ;; valid-attrs is a set of attrs to consider on the update. If it is nil, it will consider all the attrs (let [attrs (->> (seq (keys ctk/sync-attrs)) ;; We don't update the flex-child attrs (remove #(= :layout-grid-cells %))) @@ -1629,8 +1651,8 @@ applied-tokens (reduce (fn [applied-tokens attr] (let [attr-group (get ctk/sync-attrs attr) token-attrs (cto/shape-attr->token-attrs attr)] - (if (not (and (touched attr-group) - omit-touched?)) + (if (and (or (not omit-touched?) (not (touched attr-group))) + (or (empty? valid-attrs) (contains? valid-attrs attr))) (into applied-tokens token-attrs) applied-tokens))) #{} @@ -1661,7 +1683,8 @@ (update :undo-changes concat [(make-change container {:type :reg-objects - :shapes all-parents})])))) + :shapes all-parents})]) + (pcb/apply-changes-local)))) (defn- text-change-value @@ -1733,6 +1756,17 @@ [(conj roperations roperation) (conj uoperations uoperation)])) +(defn- check-detached-main + [changes dest-shape origin-shape] + ;; Only for direct updates (from main to copy). Check if the main shape + ;; has been detached. If so, the copy shape must be unheaded (i.e. converted + ;; into a normal copy and not a nested instance). + (if (and (= (:shape-ref dest-shape) (:id origin-shape)) + (ctk/subcopy-head? dest-shape) + (not (ctk/instance-head? origin-shape))) + (pcb/update-shapes changes [(:id dest-shape)] ctk/unhead-shape {:ignore-touched true}) + changes)) + (defn- update-attrs "The main function that implements the attribute sync algorithm. Copy attributes that have changed in the origin shape to the dest shape. @@ -1773,7 +1807,9 @@ (seq roperations) (add-update-attr-changes dest-shape container roperations uoperations) :always - (generate-update-tokens container dest-shape origin-shape touched omit-touched?)) + (check-detached-main dest-shape origin-shape) + :always + (generate-update-tokens container dest-shape origin-shape touched omit-touched? nil)) (let [attr-group (get ctk/sync-attrs attr) ;; position-data is a special case because can be affected by @@ -1796,7 +1832,6 @@ (= :content attr) (touched attr-group)) - skip-operations? (or (= (get origin-shape attr) (get dest-shape attr)) (and (touched attr-group) @@ -1995,10 +2030,14 @@ reset-pos-data? (and (not skip-operations?) (cfh/text-shape? previous-shape) - (= attr :position-data) + (or (= attr :position-data) (= attr :selrect)) (not= (:position-data previous-shape) (:position-data current-shape)) (touched :geometry-group)) + skip-operations? (or skip-operations? + ;; If we are going to reset the position data, skip the selrect attr + (and reset-pos-data? (= attr :selrect))) + attr-val (when-not skip-operations? (cond @@ -2044,12 +2083,14 @@ (recur (next attrs) roperations' uoperations')) - (cond-> changes - (> (count roperations) 1) - (add-update-attr-changes current-shape container roperations uoperations) - :always - (generate-update-tokens container current-shape previous-shape touched false)))))) + (let [updated-attrs (into #{} (comp (filter #(= :set (:type %))) + (map :attr)) + roperations)] + (cond-> changes + (> (count roperations) 1) + (-> (add-update-attr-changes current-shape container roperations uoperations) + (generate-update-tokens container current-shape previous-shape touched false updated-attrs)))))))) (defn- propagate-attrs "Helper that puts the origin attributes (attrs) into dest but only if @@ -2222,7 +2263,7 @@ variant-id (when (ctk/is-variant? root) (:parent-id root)) props (when (ctk/is-variant? root) (get variant-props (:component-id root))) - [path name] (cfh/parse-path-name name) + [path name] (cpn/split-group-name name) [root-shape updated-shapes] (ctn/convert-shape-in-component root objects file-id) @@ -2514,9 +2555,10 @@ frames))) (defn- duplicate-variant - [changes library component base-pos parent-id page-id] + [changes library component base-pos parent page-id into-new-variant?] (let [component-page (ctpl/get-page (:data library) (:main-instance-page component)) - component-shape (dm/get-in component-page [:objects (:main-instance-id component)]) + objects (:objects component-page) + component-shape (get objects (:main-instance-id component)) orig-pos (gpt/point (:x component-shape) (:y component-shape)) delta (gpt/subtract base-pos orig-pos) new-component-id (uuid/next) @@ -2526,11 +2568,27 @@ new-component-id {:apply-changes-local-library? true :delta delta - :new-variant-id parent-id - :page-id page-id})] + :new-variant-id (if into-new-variant? nil (:id parent)) + :page-id page-id}) + value (when into-new-variant? + (str ctv/value-prefix + (-> (cfv/extract-properties-values (:data library) objects (:id parent)) + last + :value + count + inc)))] + [shape - (-> changes - (pcb/change-parent parent-id [shape]))])) + (cond-> changes + into-new-variant? + (clvp/generate-make-shapes-variant [shape] parent) + + ;; If it has the same parent, update the value of the last property + (and into-new-variant? (= (:variant-id component) (:id parent))) + (clvp/generate-update-property-value new-component-id (-> component :variant-properties count dec) value) + + :always + (pcb/change-parent (:id parent) [shape] 0))])) (defn generate-duplicate-component-change @@ -2542,11 +2600,13 @@ pos (as-> (gsh/move main delta) $ (gpt/point (:x $) (:y $))) + parent (get objects parent-id) + + ;; When we duplicate a variant alone, we will instanciate it ;; When we duplicate a variant along with its variant-container, we will duplicate it in-variant-container? (contains? ids-map (:variant-id main)) - restore-component #(let [{:keys [shape changes]} (prepare-restore-component changes @@ -2559,29 +2619,42 @@ frame-id)] [shape changes]) - [_shape changes] - (if (nil? component) - (restore-component) - (if (and (ctk/is-variant? main) in-variant-container?) - (duplicate-variant changes - (get libraries file-id) - component - pos - parent-id - (:id page)) - (generate-instantiate-component changes - objects - file-id - component-id - pos - page - libraries - main-id - parent-id - frame-id - ids-map - {})))] + [_shape changes] + (cond + (nil? component) + (restore-component) + + (and (ctk/is-variant? main) in-variant-container?) + (duplicate-variant changes + (get libraries file-id) + component + pos + parent + (:id page) + false) + + (ctk/is-variant-container? parent) + (duplicate-variant changes + (get libraries file-id) + component + pos + parent + (:id page) + true) + :else + (generate-instantiate-component changes + objects + file-id + component-id + pos + page + libraries + main-id + parent-id + frame-id + ids-map + {}))] changes)) (defn generate-duplicate-shape-change @@ -2728,7 +2801,7 @@ (defn generate-duplicate-changes "Prepare objects to duplicate: generate new id, give them unique names, move to the desired position, and recalculate parents and frames as needed." - [changes all-objects page ids delta libraries library-data file-id & {:keys [variant-props]}] + [changes all-objects page ids delta libraries library-data file-id & {:keys [variant-props alt-duplication?]}] (let [shapes (map (d/getf all-objects) ids) unames (volatile! (cfh/get-used-names (:objects page))) update-unames! (fn [new-name] (vswap! unames conj new-name)) @@ -2738,9 +2811,22 @@ ;; we calculate a new one because the components will have created new shapes. ids-map (into {} (map #(vector % (uuid/next))) all-ids) + + ;; If there is an alt-duplication of a variant, change its parent to root + ;; so the copy is made as a child of root + ;; This is because inside a variant-container can't be a copy + shapes (map (fn [shape] + (if (and alt-duplication? (ctk/is-variant? shape)) + (assoc shape :parent-id uuid/zero :frame-id nil) + shape)) + shapes) + + changes (-> changes (pcb/with-page page) - (pcb/with-objects all-objects)) + (pcb/with-objects all-objects) + (pcb/with-library-data library-data)) + changes (->> shapes (reduce #(generate-duplicate-shape-change %1 diff --git a/common/src/app/common/logic/shapes.cljc b/common/src/app/common/logic/shapes.cljc index bad3065ef4..d0958ccacd 100644 --- a/common/src/app/common/logic/shapes.cljc +++ b/common/src/app/common/logic/shapes.cljc @@ -185,15 +185,17 @@ interactions))) (vals objects)) + id-to-delete? (set ids-to-delete) changes - (reduce (fn [changes {:keys [id] :as flow}] - (if (contains? ids-to-delete (:starting-frame flow)) - (-> changes - (pcb/with-page page) - (pcb/set-flow id nil)) - changes)) - changes - (:flows page)) + (->> (:flows page) + (reduce + (fn [changes [id flow]] + (if (id-to-delete? (:starting-frame flow)) + (-> changes + (pcb/with-page page) + (pcb/set-flow id nil)) + changes)) + changes)) all-parents diff --git a/common/src/app/common/logic/tokens.cljc b/common/src/app/common/logic/tokens.cljc index b594d3c0aa..e5d6c086c7 100644 --- a/common/src/app/common/logic/tokens.cljc +++ b/common/src/app/common/logic/tokens.cljc @@ -17,18 +17,16 @@ Use this for managing sets active state without having to modify a user created theme (\"no themes selected\" state in the ui)." [changes tokens-lib update-theme-fn] - (let [prev-active-token-themes (ctob/get-active-theme-paths tokens-lib) - active-token-set-names (ctob/get-active-themes-set-names tokens-lib) + (let [active-token-set-names (ctob/get-active-themes-set-names tokens-lib) - prev-hidden-theme (ctob/get-hidden-theme tokens-lib) - - hidden-theme (-> (some-> prev-hidden-theme (ctob/set-sets active-token-set-names)) - (update-theme-fn))] + hidden-theme (ctob/get-hidden-theme tokens-lib) + hidden-theme' (-> (some-> hidden-theme + (ctob/set-sets active-token-set-names)) + (update-theme-fn))] (-> changes - (pcb/update-active-token-themes #{(ctob/theme-path hidden-theme)} prev-active-token-themes) - (pcb/set-token-theme (:group prev-hidden-theme) - (:name prev-hidden-theme) - hidden-theme)))) + (pcb/set-active-token-themes #{(ctob/get-theme-path hidden-theme')}) + (pcb/set-token-theme (ctob/get-id hidden-theme) + hidden-theme')))) (defn generate-toggle-token-set "Toggle a token set at `set-name` in `tokens-lib` without modifying a @@ -139,3 +137,12 @@ (if-let [params (calculate-move-token-set-or-set-group tokens-lib params)] (pcb/move-token-set-group changes params) changes)) + +(defn generate-delete-token-set-group + "Create changes for deleting a token set group." + [changes tokens-lib path] + (let [sets (ctob/get-sets-at-path tokens-lib path)] + (reduce (fn [changes set] + (pcb/set-token-set changes (ctob/get-id set) nil)) + changes + sets))) \ No newline at end of file diff --git a/common/src/app/common/logic/variant_properties.cljc b/common/src/app/common/logic/variant_properties.cljc index e446fd84e9..5c2fddd44a 100644 --- a/common/src/app/common/logic/variant_properties.cljc +++ b/common/src/app/common/logic/variant_properties.cljc @@ -7,8 +7,8 @@ (:require [app.common.data :as d] [app.common.files.changes-builder :as pcb] - [app.common.files.helpers :as cfh] [app.common.files.variant :as cfv] + [app.common.path-names :as cpn] [app.common.types.component :as ctk] [app.common.types.components-list :as ctcl] [app.common.types.variant :as ctv] @@ -28,11 +28,7 @@ (pcb/update-component changes (:id component) (fn [component] - (d/update-in-when component [:variant-properties pos] - (fn [property] - (-> property - (assoc :name new-name) - (with-meta nil))))) + (d/update-in-when component [:variant-properties pos] #(assoc % :name new-name))) {:apply-changes-local-library? true})) changes related-components))) @@ -81,6 +77,26 @@ #(assoc % :variant-error value)))))) +(defn generate-reorder-variant-poperties + [changes variant-id from-pos to-space-between-pos] + (let [data (pcb/get-library-data changes) + objects (pcb/get-objects changes) + related-components (cfv/find-variant-components data objects variant-id)] + (reduce (fn [changes component] + (let [props (:variant-properties component) + props (d/reorder props from-pos to-space-between-pos) + main-id (:main-instance-id component) + name (ctv/properties-to-name props)] + (-> changes + (pcb/update-component (:id component) + #(assoc % :variant-properties props) + {:apply-changes-local-library? true}) + (pcb/update-shapes [main-id] + #(assoc % :variant-name name))))) + changes + related-components))) + + (defn generate-add-new-property [changes variant-id & {:keys [fill-values? editing? property-name property-value]}] (let [data (pcb/get-library-data changes) @@ -127,7 +143,7 @@ (defn- generate-make-shape-no-variant [changes shape] (let [new-name (ctv/variant-name-to-name shape) - [cpath cname] (cfh/parse-path-name new-name)] + [cpath cname] (cpn/split-group-name new-name)] (-> changes (pcb/update-component (:component-id shape) #(-> (dissoc % :variant-id :variant-properties) @@ -146,8 +162,8 @@ (defn- create-new-properties-from-variant [shape min-props data container-name base-properties] (let [component (ctcl/get-component data (:component-id shape) true) - - add-name? (not= (:name component) container-name) + component-full-name (cpn/merge-path-item (:path component) (:name component)) + add-name? (not= component-full-name container-name) props (ctv/merge-properties base-properties (:variant-properties component)) new-props (- min-props @@ -188,7 +204,7 @@ (map #(assoc % :value ""))) num-base-props (count base-props) - [cpath cname] (cfh/parse-path-name (:name variant-container)) + [cpath cname] (cpn/split-group-name (:name variant-container)) container-name (:name variant-container) create-new-properties diff --git a/common/src/app/common/logic/variants.cljc b/common/src/app/common/logic/variants.cljc index e8c14d5405..c0dc0409d0 100644 --- a/common/src/app/common/logic/variants.cljc +++ b/common/src/app/common/logic/variants.cljc @@ -11,7 +11,8 @@ [app.common.types.container :as ctn] [app.common.types.file :as ctf] [app.common.types.variant :as ctv] - [app.common.uuid :as uuid])) + [app.common.uuid :as uuid] + [clojure.set :as set])) (defn generate-add-new-variant [changes shape variant-id new-component-id new-shape-id prop-num] @@ -67,7 +68,6 @@ [[] {}] shapes)))) - (defn- keep-swapped-item "As part of the keep-touched process on a switch, given a child on the original copy that was swapped (orig-swapped-child), and its related shape on the new copy @@ -88,7 +88,6 @@ current-parent (get objects (:parent-id related-shape-in-new)) pos (d/index-of (:shapes current-parent) (:id related-shape-in-new))] - (-> (pcb/concat-changes before-changes changes) ;; Move the previous shape to the new parent @@ -122,6 +121,44 @@ (subvec (vec ancestors) 1 (dec num-ancestors)))] (some ctk/get-swap-slot ancestors))) +(defn- find-shape-ref-child-of + "Get the shape referenced by the shape-ref of the near main of the shape, + recursively repeated until find a shape-ref with parent-id as ancestor. + It will return the shape or nil if it doesn't found any" + [container libraries shape parent-id] + (let [ref-shape (ctf/find-ref-shape nil container libraries shape + :with-context? true) + + ref-shape-container (when ref-shape (:container (meta ref-shape))) + ref-shape-parents-set (when ref-shape + (->> (cfh/get-parents (:objects ref-shape-container) (:id ref-shape)) + (into #{} d/xf:map-id)))] + + (if (or (nil? ref-shape) (contains? ref-shape-parents-set parent-id)) + ref-shape + (find-shape-ref-child-of ref-shape-container libraries ref-shape parent-id)))) + +(defn- get-ref-chain + "Returns a vector with the shape ref chain including itself" + [container libraries shape] + (loop [chain [shape] + current shape] + (if-let [ref (ctf/find-ref-shape nil container libraries current :with-context? true)] + (recur (conj chain ref) ref) + chain))) + +(defn- add-touched-from-ref-chain + "Adds to the :touched attr of a shape the content of + the :touched of all its chain of ref shapes" + [container libraries shape] + (let [chain (get-ref-chain container libraries shape) + more-touched (->> chain + (map :touched) + (remove nil?) + (apply set/union) + (remove ctk/swap-slot?) + set)] + (update shape :touched #(set/union (or % #{}) more-touched)))) (defn generate-keep-touched "This is used as part of the switch process, when you switch from @@ -141,7 +178,10 @@ ;; Ignore children of swapped items, because ;; they will be moved without change when ;; managing their swapped ancestor - orig-touched (->> (filter (comp seq :touched) original-shapes) + orig-touched (->> original-shapes + ;; Add to each shape also the touched of its ref chain + (map #(add-touched-from-ref-chain container libraries %)) + (filter (comp seq :touched)) (remove #(child-of-swapped? % page-objects @@ -158,7 +198,7 @@ ;; The original-shape is in a copy. For the relation rules, we need the referenced ;; shape on the main component - orig-ref-shape (ctf/find-ref-shape nil container libraries original-shape {:with-context? true}) + orig-ref-shape (ctf/find-remote-shape container libraries original-shape {:with-context? true}) orig-ref-objects (:objects (:container (meta orig-ref-shape))) ;; Adds a :shape-path attribute to the children of the orig-ref-shape, @@ -171,7 +211,6 @@ ;; Creates a map to quickly find a child of the orig-ref-shape by its shape-path o-ref-shapes-p-map (into {} (map (juxt :id :shape-path)) o-ref-shapes-wp) - ;; Process each touched children of the original-shape [changes parents-of-swapped] (reduce @@ -182,8 +221,7 @@ ;; orig-child-touched is in a copy. Get the referenced shape on the main component ;; If there is a swap slot, we will get the referenced shape in another way orig-ref-shape (when-not swap-slot - ;; TODO Maybe just get it from o-ref-shapes-wp - (ctf/find-ref-shape nil container libraries orig-child-touched)) + (find-shape-ref-child-of container libraries orig-child-touched (:id orig-ref-shape))) orig-ref-id (if swap-slot ;; If there is a swap slot, find the referenced shape id @@ -196,6 +234,7 @@ ;; Get its related shape in the children of new-shape: the one that ;; has the same shape-path related-shape-in-new (get new-shapes-map shape-path) + parents-of-swapped (if related-shape-in-new (conj parent-of-swapped (:parent-id related-shape-in-new)) parent-of-swapped) diff --git a/common/src/app/common/path_names.cljc b/common/src/app/common/path_names.cljc new file mode 100644 index 0000000000..6fdf1d1525 --- /dev/null +++ b/common/src/app/common/path_names.cljc @@ -0,0 +1,134 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.common.path-names + (:require + [cuerdas.core :as str])) + +"Functions to manipulate entity names that represent groups with paths, + e.g. 'Group / Subgroup / Name'. + +Some naming conventions: + - Path string: the full string with groups and name, e.g. 'Group / Subgroup / Name'. + - Path: a vector of strings with the full path, e.g. ['Group' 'Subgroup' 'Name']. + - Group string: the group part of the path string, e.g. 'Group / Subgroup'. + - Group: a vector of strings with the group part of the path, e.g. ['Group' 'Subgroup']. + - Name: the final name part of the path, e.g. 'Name'." + +(defn split-path + "Decompose a path string in the form 'one / two / three' into a vector + of strings, trimming spaces (e.g. ['one' 'two' 'three'])." + [path-str & {:keys [separator] :or {separator "/"}}] + (let [xf (comp (map str/trim) + (remove str/empty?))] + (->> (str/split path-str separator) + (into [] xf)))) + +(defn join-path + "Regenerate a path as a string, from a vector. + (e.g. ['one' 'two' 'three'] -> 'one / two / three')" + [path & {:keys [separator with-spaces?] :or {separator "/" with-spaces? true}}] + (if with-spaces? + (str/join (str " " separator " ") path) + (str/join separator path))) + +(defn split-group-name + "Parse a path string. Retrieve the group and the name in separated values, + normalizing spaces (e.g. 'group / subgroup / name' -> ['group / subgroup' 'name'])." + [path-str & {:keys [separator with-spaces?] :or {separator "/" with-spaces? true}}] + (let [path (split-path path-str :separator separator) + group-str (join-path (butlast path) :separator separator :with-spaces? with-spaces?) + name (or (last path) "")] + [group-str name])) + +(defn join-path-with-dot + "Regenerate a path as a string, from a vector." + [path-vec] + (str/join "\u00A0\u2022\u00A0" path-vec)) + +(defn clean-path + "Remove empty items from the path." + [path] + (->> (split-path path) + (join-path))) + +(defn merge-path-item + "Put the item at the end of the path." + [path name] + (if-not (empty? path) + (if-not (empty? name) + (str path " / " name) + path) + name)) + +(defn merge-path-item-with-dot + "Put the item at the end of the path." + [path name] + (if-not (empty? path) + (if-not (empty? name) + (str path "\u00A0\u2022\u00A0" name) + path) + name)) + +(defn compact-path + "Separate last item of the path, and truncate the others if too long: + 'one' -> ['' 'one' false] + 'one / two / three' -> ['one / two' 'three' false] + 'one / two / three / four' -> ['one / two / ...' 'four' true] + 'one-item-but-very-long / two' -> ['...' 'two' true] " + [path max-length dot?] + (let [path-split (split-path path) + last-item (last path-split) + merge-path (if dot? + merge-path-item-with-dot + merge-path-item)] + (loop [other-items (seq (butlast path-split)) + other-path ""] + (if-let [item (first other-items)] + (let [full-path (-> other-path + (merge-path item) + (merge-path last-item))] + (if (> (count full-path) max-length) + [(merge-path other-path "...") last-item true] + (recur (next other-items) + (merge-path other-path item)))) + [other-path last-item false])))) + +(defn butlast-path + "Remove the last item of the path." + [path] + (let [split (split-path path)] + (if (= 1 (count split)) + "" + (join-path (butlast split))))) + +(defn butlast-path-with-dots + "Remove the last item of the path." + [path] + (let [split (split-path path)] + (if (= 1 (count split)) + "" + (join-path-with-dot (butlast split))))) + +(defn last-path + "Returns the last item of the path." + [path] + (last (split-path path))) + +(defn inside-path? [child parent] + (let [child-path (split-path child) + parent-path (split-path parent)] + (and (<= (count parent-path) (count child-path)) + (= parent-path (take (count parent-path) child-path))))) + +(defn split-by-last-period + "Splits a string into two parts: + the text before and including the last period, + and the text after the last period." + [s] + (if-let [last-period (str/last-index-of s ".")] + [(subs s 0 (inc last-period)) (subs s (inc last-period))] + [s ""])) diff --git a/common/src/app/common/schema.cljc b/common/src/app/common/schema.cljc index 3bdaed2b88..c2523c8149 100644 --- a/common/src/app/common/schema.cljc +++ b/common/src/app/common/schema.cljc @@ -861,6 +861,11 @@ ;; ::oapi/type "string" ;; ::oapi/format "number"}}) +#?(:clj + (register! + {:type ::atom + :pred #(instance? clojure.lang.Atom %)})) + (register! {:type ::fn :pred fn?}) @@ -922,6 +927,8 @@ :gen/gen (sg/uri) :decode/string decode-uri :decode/json decode-uri + :encode/json str + :encode/string str ::oapi/type "string" ::oapi/format "uri"}}) diff --git a/common/src/app/common/test_helpers/components.cljc b/common/src/app/common/test_helpers/components.cljc index 4e82acd647..712f25f647 100644 --- a/common/src/app/common/test_helpers/components.cljc +++ b/common/src/app/common/test_helpers/components.cljc @@ -12,6 +12,7 @@ [app.common.files.helpers :as cfh] [app.common.geom.point :as gpt] [app.common.logic.libraries :as cll] + [app.common.path-names :as cpn] [app.common.test-helpers.files :as thf] [app.common.test-helpers.ids-map :as thi] [app.common.test-helpers.shapes :as ths] @@ -36,7 +37,7 @@ updated-root (first updated-shapes) ; Can't use new-root because it has a new id - [path name] (cfh/parse-path-name (:name updated-root))] + [path name] (cpn/split-group-name (:name updated-root))] (thi/set-id! label (:component-id updated-root)) (ctf/update-file-data @@ -72,6 +73,10 @@ [file id] (ctkl/get-component (:data file) id)) +(defn get-components + [file] + (ctkl/components (:data file))) + (defn- set-children-labels! [file shape-label children-labels] (doseq [[label id] diff --git a/common/src/app/common/test_helpers/files.cljc b/common/src/app/common/test_helpers/files.cljc index 5420a0c377..a80675b65a 100644 --- a/common/src/app/common/test_helpers/files.cljc +++ b/common/src/app/common/test_helpers/files.cljc @@ -108,7 +108,8 @@ page (if (some? page-label) (:id (get-page file page-label)) (current-page-id file)) - libraries (or libraries {})] + libraries (or libraries + {(:id file) file})] (ctf/dump-tree file page libraries params))) diff --git a/common/src/app/common/test_helpers/tokens.cljc b/common/src/app/common/test_helpers/tokens.cljc index e2c6cee4d1..5de4b827cf 100644 --- a/common/src/app/common/test_helpers/tokens.cljc +++ b/common/src/app/common/test_helpers/tokens.cljc @@ -28,12 +28,10 @@ (ctf/update-file-data file #(update % :tokens-lib f))) (defn get-token - [file set-name token-id] + [file set-id token-id] (let [tokens-lib (:tokens-lib (:data file))] (when tokens-lib - (-> tokens-lib - (ctob/get-set set-name) - (ctob/get-token token-id))))) + (ctob/get-token tokens-lib set-id token-id)))) (defn token-data-eq? "Compare token data without comparing unstable fields." diff --git a/common/src/app/common/time.cljc b/common/src/app/common/time.cljc index d32ecfbefe..53a44a23d9 100644 --- a/common/src/app/common/time.cljc +++ b/common/src/app/common/time.cljc @@ -52,6 +52,7 @@ [cuerdas.core :as str]) #?(:clj (:import + java.time.Clock java.time.Duration java.time.Instant java.time.OffsetDateTime @@ -63,9 +64,11 @@ java.time.temporal.TemporalAmount java.time.temporal.TemporalUnit))) +#?(:clj (def ^:dynamic *clock* (Clock/systemDefaultZone))) + (defn now [] - #?(:clj (Instant/now) + #?(:clj (Instant/now *clock*) :cljs (new js/Date))) ;; --- DURATION @@ -130,7 +133,6 @@ ms-or-obj (integer? ms-or-obj) - (Duration/ofMillis ms-or-obj) :else @@ -433,4 +435,4 @@ #?(:cljs (extend-protocol cljs.core/IEncodeJS js/Date - (-clj->js [x] x))) \ No newline at end of file + (-clj->js [x] x))) diff --git a/common/src/app/common/types/component.cljc b/common/src/app/common/types/component.cljc index a97c1d3b78..130bece565 100644 --- a/common/src/app/common/types/component.cljc +++ b/common/src/app/common/types/component.cljc @@ -23,7 +23,7 @@ [:map [:id ::sm/uuid] [:name :string] - [:path {:optional true} [:maybe :string]] + [:path :string] [:modified-at {:optional true} ::ct/inst] [:objects {:gen/max 10 :optional true} ctp/schema:objects] [:main-instance-id ::sm/uuid] @@ -145,9 +145,12 @@ (defn component-attr? "Check if some attribute is one that is involved in component syncrhonization. Note that design tokens also are involved, although they go by an alternate - route and thus they are not part of :sync-attrs." + route and thus they are not part of :sync-attrs. + Also when detaching a nested copy it also needs to trigger a synchronization, + even though :shape-ref is not a synced attribute per se" [attr] (or (get sync-attrs attr) + (= :shape-ref attr) (= :applied-tokens attr))) (defn instance-root? @@ -217,19 +220,16 @@ (and (= shape-id (:main-instance-id component)) (= page-id (:main-instance-page component)))) - (defn is-variant? "Check if this shape or component is a variant component" [item] (some? (:variant-id item))) - (defn is-variant-container? "Check if this shape is a variant container" [shape] (:is-variant-container shape)) - (defn set-touched-group [touched group] (when group @@ -256,7 +256,7 @@ (defn group->swap-slot [group] - (parse-uuid (subs (name group) 10))) + (parse-uuid (subs (name group) 10))) ;; 10 is the length of "swap-slot-" (defn get-swap-slot "If the shape has a :touched group in the form :swap-slot-, get the id." @@ -286,7 +286,7 @@ (fn [touched] (into #{} (remove #(str/starts-with? (name %) "swap-slot-") touched))))) -(defn get-component-root +(defn get-deleted-component-root [component] (if (some? (:main-instance-id component)) (get-in component [:objects (:main-instance-id component)]) @@ -310,6 +310,22 @@ :shape-ref :touched)) +(defn unhead-shape + "Make the shape not be a component head, but keep its :shape-ref and :touched if it was a nested copy" + [shape] + (dissoc shape + :component-root + :component-file + :component-id + :main-instance)) + +(defn rehead-shape + "Make the shape a component head, by adding component info" + [shape component-file component-id] + (assoc shape + :component-file component-file + :component-id component-id)) + (defn- extract-ids [shape] (if (map? shape) (let [current-id (:id shape) diff --git a/common/src/app/common/types/components_list.cljc b/common/src/app/common/types/components_list.cljc index fd75341681..c4f3a66063 100644 --- a/common/src/app/common/types/components_list.cljc +++ b/common/src/app/common/types/components_list.cljc @@ -8,7 +8,6 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] - [app.common.features :as cfeat] [app.common.time :as dt] [app.common.types.component :as ctk] [clojure.set :as set])) @@ -35,7 +34,7 @@ (defn add-component [fdata {:keys [id name path main-instance-id main-instance-page annotation variant-id variant-properties]}] - (let [fdata (update fdata :components assoc id (touch {:id id :name name :path path}))] + (let [fdata (update fdata :components assoc id (touch {:id id :name name :path path}))] (cond-> (update-in fdata [:components id] assoc :main-instance-id main-instance-id :main-instance-page main-instance-page) annotation (update-in [:components id] assoc :annotation annotation) variant-id (update-in [:components id] assoc :variant-id variant-id) @@ -43,53 +42,53 @@ (defn mod-component [file-data {:keys [id name path main-instance-id main-instance-page objects annotation variant-id variant-properties modified-at]}] - (let [wrap-objects-fn cfeat/*wrap-with-objects-map-fn*] - (d/update-in-when file-data [:components id] - (fn [component] - (let [objects (some-> objects wrap-objects-fn) - new-comp (cond-> component - (some? name) - (assoc :name name) + (d/update-in-when file-data [:components id] + (fn [component] + (let [new-comp (cond-> component + (some? name) + (assoc :name name) - (some? path) - (assoc :path path) + (some? path) + (assoc :path path) - (some? main-instance-id) - (assoc :main-instance-id main-instance-id) + (some? main-instance-id) + (assoc :main-instance-id main-instance-id) - (some? main-instance-page) - (assoc :main-instance-page main-instance-page) + (some? main-instance-page) + (assoc :main-instance-page main-instance-page) - (some? objects) - (assoc :objects objects) + (some? objects) + (assoc :objects objects) - (some? modified-at) - (assoc :modified-at modified-at) + (some? modified-at) + (assoc :modified-at modified-at) - (some? annotation) - (assoc :annotation annotation) + (some? annotation) + (assoc :annotation annotation) - (nil? annotation) - (dissoc :annotation) + (nil? annotation) + (dissoc :annotation) - (some? variant-id) - (assoc :variant-id variant-id) + (some? variant-id) + (assoc :variant-id variant-id) - (nil? variant-id) - (dissoc :variant-id) + (nil? variant-id) + (dissoc :variant-id) - (some? variant-properties) - (assoc :variant-properties variant-properties) + (some? variant-properties) + (assoc :variant-properties variant-properties) - (nil? variant-properties) - (dissoc :variant-properties)) - diff (set/difference - (ctk/diff-components component new-comp) - #{:annotation :modified-at :variant-id :variant-properties})] ;; The set of properties that doesn't mark a component as touched + (nil? variant-properties) + (dissoc :variant-properties)) - (if (empty? diff) - new-comp - (touch new-comp))))))) + ;; The set of properties that doesn't mark a component as touched + diff (set/difference + (ctk/diff-components component new-comp) + #{:annotation :modified-at :variant-id :variant-properties})] + + (if (empty? diff) + new-comp + (touch new-comp)))))) (defn get-component ([file-data component-id] diff --git a/common/src/app/common/types/container.cljc b/common/src/app/common/types/container.cljc index 5e030ffb56..13daa4949c 100644 --- a/common/src/app/common/types/container.cljc +++ b/common/src/app/common/types/container.cljc @@ -7,7 +7,6 @@ (ns app.common.types.container (:require [app.common.data :as d] - [app.common.data.macros :as dm] [app.common.files.helpers :as cfh] [app.common.geom.point :as gpt] [app.common.geom.shapes :as gsh] @@ -77,11 +76,8 @@ (defn get-shape [container shape-id] - - (assert (check-container container)) (assert (uuid? shape-id) "expected valid uuid for `shape-id`") - (-> container (get :objects) (get shape-id))) @@ -494,29 +490,40 @@ all-main? (every? ctk/main-instance? top-children) + ascendants (cfh/get-parents-with-self objects parent-id) + any-main-ascendant (some ctk/main-instance? ascendants) + any-variant-container-ascendant (some ctk/is-variant-container? ascendants) + + get-variant-id (fn [shape] + (when (:component-id shape) + (-> (get-component-from-shape shape libraries) + :variant-id))) + + descendants (mapcat #(cfh/get-children-with-self objects %) children-ids) + any-variant-container-descendant (some ctk/is-variant-container? descendants) + descendants-variant-ids-set (->> descendants + (map get-variant-id) + set) any-main-descendant (some (fn [shape] (some ctk/main-instance? (cfh/get-children-with-self objects (:id shape)))) - children) + children)] - ;; Are all the top-children a main-instance of a cutted component? - all-comp-cut? - (when all-main? - (->> top-children - (map #(ctkl/get-component (dm/get-in libraries [(:component-file %) :data]) - (:component-id %) - true)) - (every? :deleted)))] (if (or no-changes? (and (not (invalid-structure-for-component? objects parent children pasting? libraries)) - ;; If we are moving into a main component, no descendant can be main - (or (nil? any-main-descendant) (not (ctk/main-instance? parent))) - ;; If we are moving into a variant-container, all the items should be main - ;; so if we are pasting, only allow main instances that are cut-and-pasted - (or (not (ctk/is-variant-container? parent)) - (and (not pasting?) all-main?) - all-comp-cut?))) + ;; If we are moving (not pasting) into a main component, no descendant can be main + (or pasting? (nil? any-main-descendant) (not (ctk/main-instance? parent))) + ;; Don't allow variant-container inside variant container nor main + (or (not any-variant-container-descendant) + (and (not any-variant-container-ascendant) (not any-main-ascendant))) + ;; If the parent is a variant-container, all the items should be main + (or (not (ctk/is-variant-container? parent)) all-main?) + ;; If we are pasting, the parent can't be a "brother" of any of the pasted items, + ;; so not have the same variant-id of any descendant + (or (not pasting?) + (not (ctk/is-variant? parent)) + (not (contains? descendants-variant-ids-set (:variant-id parent)))))) [parent-id (get-frame parent-id)] (recur (:parent-id parent) objects children pasting? libraries)))))) diff --git a/common/src/app/common/types/file.cljc b/common/src/app/common/types/file.cljc index 066f048526..5a2deaabaa 100644 --- a/common/src/app/common/types/file.cljc +++ b/common/src/app/common/types/file.cljc @@ -114,10 +114,10 @@ (sm/register! ::typographies schema:typographies) (def check-file - (sm/check-fn schema:file :hint "check error on validating file")) + (sm/check-fn schema:file :hint "invalid file")) (def check-file-data - (sm/check-fn schema:data)) + (sm/check-fn schema:data :hint "invalid file data")) (def check-file-media (sm/check-fn schema:media)) @@ -155,7 +155,7 @@ (defn make-file [{:keys [id project-id name revn is-shared features migrations - ignore-sync-until created-at modified-at deleted-at] + metadata backend ignore-sync-until created-at modified-at deleted-at] :as params} & {:keys [create-page with-data page-id] @@ -186,8 +186,9 @@ :data data :features features :migrations migrations + :metadata metadata + :backend backend :ignore-sync-until ignore-sync-until - :has-media-trimmed false :created-at created-at :modified-at modified-at :deleted-at deleted-at})] @@ -275,7 +276,7 @@ (-> file-data (get-component-page component) (ctn/get-shape (:main-instance-id component))) - (ctk/get-component-root component))) + (ctk/get-deleted-component-root component))) (defn get-component-shape "Retrieve one shape in the component by id. If with-context? is true, add the @@ -354,7 +355,7 @@ (defn find-remote-shape "Recursively go back by the :shape-ref of the shape until find the correct shape of the original component" - [container libraries shape] + [container libraries shape & {:keys [with-context?] :or {with-context? false}}] (let [top-instance (ctn/get-component-shape (:objects container) shape) component-file (get-in libraries [(:component-file top-instance) :data]) component (ctkl/get-component component-file (:component-id top-instance) true) @@ -374,8 +375,12 @@ (if (nil? remote-shape) nil (if (nil? (:shape-ref remote-shape)) - remote-shape - (find-remote-shape component-container libraries remote-shape))))) + (cond-> remote-shape + (and remote-shape with-context?) + (with-meta {:file {:id (:id file-data) + :data file-data} + :container component-container})) + (find-remote-shape component-container libraries remote-shape :with-context? with-context?))))) (defn direct-copy? "Check if the shape is in a direct copy of the component (i.e. the shape-ref points to shapes inside @@ -900,7 +905,7 @@ (println)) (when (seq (:objects component)) - (let [root (ctk/get-component-root component)] + (let [root (ctk/get-deleted-component-root component)] (dump-shape (:id root) 1 (:objects component) diff --git a/common/src/app/common/types/text.cljc b/common/src/app/common/types/text.cljc index 651aee21fc..8f62324959 100644 --- a/common/src/app/common/types/text.cljc +++ b/common/src/app/common/types/text.cljc @@ -249,12 +249,16 @@ (defn equal-attrs? "Given a text structure, and a map of attrs, check that all the internal attrs in paragraphs and sentences have the same attrs" - [item attrs] - (let [item-attrs (dissoc item :text :type :key :children)] - (and - (or (empty? item-attrs) - (= attrs (dissoc item :text :type :key :children))) - (every? #(equal-attrs? % attrs) (:children item))))) + ([item attrs] + ;; Ignore the root attrs of the content. We only want to check paragraphs and sentences + (equal-attrs? item attrs true)) + ([item attrs ignore?] + (let [item-attrs (dissoc item :text :type :key :children)] + (and + (or ignore? + (empty? item-attrs) + (= attrs (dissoc item :text :type :key :children))) + (every? #(equal-attrs? % attrs false) (:children item)))))) (defn get-first-paragraph-text-attrs "Given a content text structure, extract it's first paragraph diff --git a/common/src/app/common/types/token.cljc b/common/src/app/common/types/token.cljc index 02904bdbee..41b0149e44 100644 --- a/common/src/app/common/types/token.cljc +++ b/common/src/app/common/types/token.cljc @@ -26,6 +26,27 @@ (mu/keys) (into #{}))) +(defn find-token-value-references + "Returns set of token references found in `token-value`. + + Used for checking if a token has a reference in the value. + Token references are strings delimited by curly braces. + E.g.: {foo.bar.baz} -> foo.bar.baz" + [token-value] + (if (string? token-value) + (some->> (re-seq #"\{([^}]*)\}" token-value) + (map second) + (into #{})) + #{})) + +(defn token-value-self-reference? + "Check if the token is self referencing with its `token-name` in `token-value`. + Simple 1 level check, doesn't account for circular self refernces across multiple tokens." + [token-name token-value] + (let [token-references (find-token-value-references token-value) + self-reference? (get token-references token-name)] + self-reference?)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; SCHEMA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -52,7 +73,24 @@ :typography "typography"}) (def dtcg-token-type->token-type - (set/map-invert token-type->dtcg-token-type)) + (-> (set/map-invert token-type->dtcg-token-type) + ;; Allow these properties to be imported with singular key names for backwards compability + (assoc "fontWeight" :font-weight + "fontSize" :font-size + "fontFamily" :font-family))) + +(def composite-token-type->dtcg-token-type + "Custom set of conversion keys for composite typography token with `:line-height` available. + (Penpot doesn't support `:line-height` token)" + (assoc token-type->dtcg-token-type + :line-height "lineHeights")) + +(def composite-dtcg-token-type->token-type + "Custom set of conversion keys for composite typography token with `:line-height` available. + (Penpot doesn't support `:line-height` token)" + (assoc dtcg-token-type->token-type + "lineHeights" :line-height + "lineHeight" :line-height)) (def token-types (into #{} (keys token-type->dtcg-token-type))) @@ -217,7 +255,8 @@ text-case-keys text-decoration-keys font-weight-keys - typography-token-keys)) + typography-token-keys + #{:line-height})) ;; TODO: Created to extract the font-size feature from the typography feature flag. ;; Delete this once the typography feature flag is removed. @@ -289,6 +328,7 @@ (font-size-keys shape-attr) #{shape-attr :typography} (letter-spacing-keys shape-attr) #{shape-attr :typography} (font-family-keys shape-attr) #{shape-attr :typography} + (= :line-height shape-attr) #{:line-height :typography} (= :text-transform shape-attr) #{:text-case :typography} (text-decoration-keys shape-attr) #{shape-attr :typography} (font-weight-keys shape-attr) #{shape-attr :typography} @@ -468,3 +508,32 @@ (when (font-weight-values weight) (cond-> {:weight weight} italic? (assoc :style "italic"))))) + +(defn typography-composite-token-reference? + "Predicate if a typography composite token is a reference value - a string pointing to another reference token." + [token-value] + (string? token-value)) + +(def tokens-by-input + "A map from input name to applicable token for that input." + {:width #{:sizing :dimensions} + :height #{:sizing :dimensions} + :max-width #{:sizing :dimensions} + :max-height #{:sizing :dimensions} + :x #{:spacing :dimensions} + :y #{:spacing :dimensions} + :rotation #{:number :rotation} + :border-radius #{:border-radius :dimensions} + :row-gap #{:spacing :dimensions} + :column-gap #{:spacing :dimensions} + :horizontal-padding #{:spacing :dimensions} + :vertical-padding #{:spacing :dimensions} + :sided-paddings #{:spacing :dimensions} + :horizontal-margin #{:spacing :dimensions} + :vertical-margin #{:spacing :dimensions} + :sided-margins #{:spacing :dimensions} + :line-height #{:line-height :number} + :font-size #{:font-size} + :letter-spacing #{:letter-spacing} + :fill #{:color} + :stroke-color #{:color}}) diff --git a/common/src/app/common/types/tokens_lib.cljc b/common/src/app/common/types/tokens_lib.cljc index be0525be68..df7aa38cf2 100644 --- a/common/src/app/common/types/tokens_lib.cljc +++ b/common/src/app/common/types/tokens_lib.cljc @@ -11,6 +11,7 @@ [app.common.data :as d] [app.common.data.macros :as dm] [app.common.files.helpers :as cfh] + [app.common.path-names :as cpn] [app.common.schema :as sm] [app.common.schema.generators :as sg] [app.common.time :as ct] @@ -24,52 +25,34 @@ [clojure.walk :as walk] [cuerdas.core :as str])) -;; === Groups handling - -;; TODO: add again the removed functions and refactor the rest of the module to use them - -(def ^:private xf-map-trim - (comp - (map str/trim) - (remove str/empty?))) - -(defn split-path - "Decompose a string in the form 'one.two.three' into a vector of strings, removing spaces." - [path separator] - (->> (str/split path separator) - (into [] xf-map-trim) - (not-empty))) - -(defn join-path - "Regenerate a path as a string, from a vector." - [path separator] - (str/join separator path)) - -(defn split-path-name - "Decompose a string in the form 'one.two.three' into a vector with two elements: first the - path and second the name, removing spaces (e.g. ['one.two' 'three'])." - [path separator] - (let [pathv (split-path path separator)] - [(join-path (butlast pathv) separator) - (last pathv)])) - -(defn get-path - "Get the path of object by specified separator (E.g. with '.' separator, the - 'group.subgroup.name' -> ['group' 'subgroup'])" - [name separator] - (->> (split-path name separator) - (not-empty))) - ;; === Common +(defprotocol IValidation + (valid? [_] "check if this data structure is valid, returns true or false") + (check [_] "check if this data structure is valid, raises exception or self")) + (defprotocol INamedItem - "Protocol for items that have a name, a description and a modified date." + "Protocol for items that have an id, a name, a description and a modified date." + (get-id [_] "Get the id of the item.") (get-name [_] "Get the name of the item.") (get-description [_] "Get the description of the item.") (get-modified-at [_] "Get the description of the item.") - (rename [_ new-name] "Set the name of the item.") + (rename [_ new-name] "Change the name of the item.") + (reid [_ new-id] "Change the id of the item.") (set-description [_ new-description] "Set the description of the item.")) +;; Provide an implementation for nil type, so it works when functions are +;; called with nil as argument. +(extend-type nil + INamedItem + (get-id [_] nil) + (get-name [_] nil) + (get-description [_] nil) + (get-modified-at [_] nil) + (rename [_ _] nil) + (reid [_ _] nil) + (set-description [_ _] nil)) + ;; === Token (defrecord Token [id name type value description modified-at] @@ -77,6 +60,9 @@ (datafy [this] (into {} this)) INamedItem + (get-id [_] + id) + (get-name [_] name) @@ -89,6 +75,9 @@ (rename [this new-name] (assoc this :name new-name)) + (reid [this new-id] + (assoc this :id new-id)) + (set-description [this new-description] (assoc this :description new-description))) @@ -160,28 +149,7 @@ (defn get-token-path [token] - (get-path (:name token) token-separator)) - -(defn find-token-value-references - "Returns set of token references found in `token-value`. - - Used for checking if a token has a reference in the value. - Token references are strings delimited by curly braces. - E.g.: {foo.bar.baz} -> foo.bar.baz" - [token-value] - (if (string? token-value) - (some->> (re-seq #"\{([^}]*)\}" token-value) - (map second) - (into #{})) - #{})) - -(defn token-value-self-reference? - "Check if the token is self referencing with its `token-name` in `token-value`. - Simple 1 level check, doesn't account for circular self refernces across multiple tokens." - [token-name token-value] - (let [token-references (find-token-value-references token-value) - self-reference? (get token-references token-name)] - self-reference?)) + (cpn/split-path (:name token) :separator token-separator)) (defn group-by-type [tokens] (let [tokens' (if (or (map? tokens) @@ -193,14 +161,15 @@ ;; === Token Set (defprotocol ITokenSet - (token-by-id [_ id] "get a token by its id") - (token-by-name [_ id] "get a token by its name") - (add-token [_ token] "add a token at the end of the list") - (update-token [_ id f] "update a token in the list") - (delete-token [_ id] "delete a token from the list") - (get-token [_ id] "return token by id") - (get-tokens [_] "return an ordered sequence of all tokens in the set") - (get-tokens-map [_] "return a map of tokens in the set, indexed by token-name")) + ;; TODO: the tokens tree is planned to be moved to the TokensLib. So this protocol will be no + ;; longer needed. For now, it's kept but it should only be used internally in the TokensLib. + ;; The - suffix is to remind it. + (add-token- [_ token] "add a token at the end of the list") + (update-token- [_ id f] "update a token in the list") + (delete-token- [_ id] "delete a token from the list") + (get-token- [_ id] "get a token by its id") + (get-token-by-name- [_ name] "get a token by its name") + (get-tokens- [_] "return a map of tokens in the set, indexed by token-name")) ;; TODO: this structure is temporary. It's needed to be able to migrate TokensLib ;; from 1.2 to 1.3 when TokenSet datatype was changed to a deftype. This should @@ -233,6 +202,9 @@ (-write [this writter options] (json/-write (datafy this) writter options))]) INamedItem + (get-id [_] + id) + (get-name [_] name) @@ -249,6 +221,13 @@ (ct/now) tokens)) + (reid [_ new-id] + (TokenSet. new-id + name + description + (ct/now) + tokens)) + (set-description [_ new-description] (TokenSet. id name @@ -257,14 +236,7 @@ tokens)) ITokenSet - (token-by-id [_ id] - (some #(when (= (:id %) id) %) ;; TODO: this will be made in an efficient way when - (vals tokens))) ;; we refactor the tokens lib internal structure - - (token-by-name [_ name] - (get tokens name)) - - (add-token [_ token] + (add-token- [_ token] (let [token (check-token token)] (TokenSet. id name @@ -272,8 +244,9 @@ (ct/now) (assoc tokens (:name token) token)))) - (update-token [this id f] - (if-let [token (token-by-id this id)] + (update-token- [this token-id f] + (assert (uuid? token-id) "expected uuid for `token-id`") + (if-let [token (get-token- this token-id)] (let [token' (-> (make-token (f token)) (assoc :modified-at (ct/now)))] (TokenSet. id @@ -287,21 +260,25 @@ (dissoc (:name token)))))) this)) - (delete-token [this id] - (let [token (token-by-id this id)] + (delete-token- [this token-id] + (assert (uuid? token-id) "expected uuid for `token-id`") + (let [token (get-token- this token-id)] (TokenSet. id name description (ct/now) (dissoc tokens (:name token))))) - (get-token [this id] - (token-by-id this id)) + (get-token- [_ token-id] + (assert (uuid? token-id) "expected uuid for `token-id`") + (some #(when (= (:id %) token-id) %) ;; TODO: this will be made in an efficient way when + (vals tokens))) ;; we refactor the tokens lib internal structure - (get-tokens [_] - (vals tokens)) + (get-token-by-name- [_ name] + (assert (string? name) "expected string for `name`") + (get tokens name)) - (get-tokens-map [_] + (get-tokens- [_] tokens)) (defmethod pp/simple-dispatch TokenSet [^TokenSet obj] @@ -379,19 +356,23 @@ (def check-token-set (sm/check-fn schema:token-set :hint "expected valid token set")) +(defn map->token-set + [& {:as attrs}] + (TokenSet. (:id attrs) + (:name attrs) + (:description attrs) + (:modified-at attrs) + (:tokens attrs))) + (defn make-token-set [& {:as attrs}] - (let [attrs (-> attrs - (update :id #(or % (uuid/next))) - (update :modified-at #(or % (ct/now))) - (update :tokens #(into (d/ordered-map) %)) - (update :description d/nilv "") - (check-token-set-attrs))] - (TokenSet. (:id attrs) - (:name attrs) - (:description attrs) - (:modified-at attrs) - (:tokens attrs)))) + (-> attrs + (update :id #(or % (uuid/next))) + (update :modified-at #(or % (ct/now))) + (update :tokens #(into (d/ordered-map) %)) + (update :description d/nilv "") + (check-token-set-attrs) + (map->token-set))) (def ^:private set-prefix "S-") @@ -399,10 +380,39 @@ (def ^:private set-separator "/") -(defn join-set-path [path] - (join-path path set-separator)) +(defn get-set-path + [token-set] + (cpn/split-path (get-name token-set) :separator set-separator)) -(defn split-set-str-path-prefix +(defn split-set-name + [name] + (cpn/split-path name :separator set-separator)) + +(defn join-set-path [path] + (cpn/join-path path :separator set-separator :with-spaces? false)) + +(defn normalize-set-name + "Normalize a set name (ensure that there are no extra spaces, like ' group / set' -> 'group/set'). + + If `relative-to` is provided, the normalized name will preserve the same group prefix as reference name." + ([name] + (-> (split-set-name name) + (cpn/join-path :separator set-separator :with-spaces? false))) + ([name relative-to] + (-> (concat (butlast (split-set-name relative-to)) + (split-set-name name)) + (cpn/join-path :separator set-separator :with-spaces? false)))) + +(defn replace-last-path-name + "Replaces the last element in a `path` vector with `name`." + [path name] + (-> (into [] (drop-last path)) + (conj name))) + +;; The following functions will be removed after refactoring the internal structure of TokensLib, +;; since we'll no longer need group prefixes to differentiate between sets and set-groups. + +(defn- split-set-str-path-prefix "Split set-path E.g.: \"S-some-set\" -> [\"S-\" \"some-set\"] @@ -412,13 +422,13 @@ (re-matches #"^([SG]-)(.*)") (rest))) -(defn add-set-path-prefix [set-name-str] +(defn- add-set-path-prefix [set-name-str] (str set-prefix set-name-str)) -(defn add-set-path-group-prefix [group-path-str] +(defn- add-set-path-group-prefix [group-path-str] (str set-group-prefix group-path-str)) -(defn set-full-path->set-prefixed-full-path +(defn- set-full-path->set-prefixed-full-path "Returns token-set paths with prefixes to differentiate between sets and set-groups. Sets will be prefixed with `set-prefix` (S-). @@ -428,12 +438,12 @@ set-name (add-set-path-prefix (last full-path))] (conj set-path set-name))) -(defn set-group-path->set-group-prefixed-path +(defn- set-group-path->set-group-prefixed-path "Adds `set-group-prefix` (G-) to the `path` vector elements." [path] (mapv add-set-path-group-prefix path)) -(defn set-group-path->set-group-prefixed-path-str +(defn- set-group-path->set-group-prefixed-path-str [path] (-> (set-group-path->set-group-prefixed-path path) (join-set-path))) @@ -441,49 +451,14 @@ (defn add-set-group-prefix [group-path] (str set-group-prefix group-path)) -(defn get-set-path - [token-set] - (get-path (get-name token-set) set-separator)) - -(defn split-set-name - [name] - (split-path name set-separator)) - -(defn normalize-set-name - "Normalize a set name. - - If `relative-to` is provided, the normalized name will preserve the - same group prefix as reference name" - ([name] - (->> (split-set-name name) - (str/join set-separator))) - ([name relative-to] - (->> (concat (butlast (split-set-name relative-to)) - (split-set-name name)) - (str/join set-separator)))) - -(defn set-name->prefixed-full-path [name-str] +(defn- set-name->prefixed-full-path [name-str] (-> (split-set-name name-str) (set-full-path->set-prefixed-full-path))) -(defn get-set-prefixed-path [token-set] - (let [path (get-path (get-name token-set) set-separator)] +(defn- get-set-prefixed-path [token-set] + (let [path (cpn/split-path (get-name token-set) :separator set-separator)] (set-full-path->set-prefixed-full-path path))) -(defn prefixed-set-path-string->set-name-string [path-str] - (->> (split-set-name path-str) - (map (fn [path-part] - (or (-> (split-set-str-path-prefix path-part) - (second)) - path-part))) - (join-set-path))) - -(defn replace-last-path-name - "Replaces the last element in a `path` vector with `name`." - [path name] - (-> (into [] (drop-last path)) - (conj name))) - (defn tokens-tree "Convert tokens into a nested tree with their name as the path. Optionally use `update-token-fn` option to transform the token." @@ -513,35 +488,33 @@ ;; === TokenSets (collection) (defprotocol ITokenSets - "Collection of sets and set groups. - - Naming conventions: - Set name: the complete name as a string, without prefix \"some-group/some-subgroup/some-set\". - Set final name or fname: the last part of the name \"some-set\". - Set path: the groups part of the name, as a vector [\"some-group\" \"some-subgroup\"]. - Set path str: the set path as a string \"some-group/some-subgroup\". - Set full path: the path including the fname, as a vector [\"some-group\", \"some-subgroup\", \"some-set\"]. - Set full path str: the set full path as a string \"some-group/some-subgroup/some-set\". - - Set prefix: the two-characters prefix added to a full path item \"G-\" / \"S-\". - Prefixed set path or ppath: a path wit added prefixes [\"G-some-group\", \"G-some-subgroup\"]. - Prefixed set full path or pfpath: a full path wit prefixes [\"G-some-group\", \"G-some-subgroup\", \"S-some-set\"]. - Prefixed set final name or pfname: a final name with prefix \"S-some-set\"." - (add-set [_ token-set] "add a set to the library, at the end") - (update-set [_ set-name f] "modify a set in the library") - (delete-set-path [_ set-path] "delete a set in the library") - (delete-set [_ set-name] "delete a set at `set-name` in the library and disable the `set-name` in all themes") - (delete-set-group [_ set-group-name] "delete a set group at `set-group-name` in the library and disable its child sets in all themes") - (move-set [_ from-path to-path before-path before-group?] "Move token set at `from-path` to `to-path` and order it before `before-path` with `before-group?`.") - (move-set-group [_ from-path to-path before-path before-group?] "Move token set group at `from-path` to `to-path` and order it before `before-path` with `before-group?`.") - (set-count [_] "get the total number if sets in the library") - (get-set-tree [_] "get a nested tree of all sets in the library") - (get-sets [_] "get an ordered sequence of all sets in the library") - (get-sets-at-prefix-path [_ prefixed-path-str] "get an ordered sequence of sets at `prefixed-path-str` in the library") - (get-sets-at-path [_ path-str] "get an ordered sequence of sets at `path` in the library") - (rename-set-group [_ from-path-str to-path-str] "renames set groups and all child set names from `from-path-str` to `to-path-str`") - (get-ordered-set-names [_] "get an ordered sequence of all sets names in the library") - (get-set [_ set-name] "get one set looking for name")) + "Collection of sets and set groups." + (add-set [_ token-set] + "Add a set to the library, at the end of the list") + (update-set [_ id f] + "Modify a set in the library") + (delete-set [_ id] + "Delete a set in the library and remove it from all themes") + (move-set [_ from-path to-path before-path before-group?] + "Move token set at `from-path` to `to-path` and order it before `before-path` with `before-group?`") + (move-set-group [_ from-path to-path before-path before-group?] + "Move token set group at `from-path` to `to-path` and order it before `before-path` with `before-group?`.") + (rename-set-group [_ from-path-str to-path-str] + "Renames set groups and all child set names from `from-path-str` to `to-path-str`") + (set-count [_] + "Get the total number if sets in the library") + (get-set [_ id] + "Get a set looking by id") + (get-set-by-name [_ name] + "Get a set looking by name") + (get-sets [_] + "Get an ordered sequence of all sets in the library") + (get-set-names [_] + "Get an ordered sequence of all sets names in the library") + (get-set-tree [_] + "Get a nested tree of all sets in the library") + (get-sets-at-path [_ path-str] + "Get an ordered sequence of sets under `path` in the library")) (def ^:private schema:token-set-node [:schema {:registry {::node @@ -551,26 +524,37 @@ [:fn d/ordered-map?]]]}} [:ref ::node]]) +(defn- not-repeated-ids + [sets] + ;; TODO: this check will not be necessary after refactoring the internal structure of TokensLib + ;; since we'll use a map of sets indexed by id. Thus, it should be removed. + (let [ids (->> (tree-seq d/ordered-map? vals sets) + (filter (partial instance? TokenSet)) + (map get-id)) + ids' (set ids)] + (= (count ids) (count ids')))) + (def ^:private schema:token-sets [:and {:title "TokenSets"} [:map-of :string schema:token-set-node] - [:fn d/ordered-map?]]) - -(def ^:private check-token-sets - (sm/check-fn schema:token-sets :hint "expected valid token sets")) - -(def ^:private valid-token-sets? - (sm/validator schema:token-sets)) + [:fn d/ordered-map?] + [:fn not-repeated-ids]]) ;; === TokenTheme -(def ^:private theme-separator "/") +(defprotocol ITokenTheme + (set-sets [_ set-names] "set the active token sets") + (enable-set [_ set-name] "enable one set in theme") + (enable-sets [_ set-names] "enable several sets in theme") + (disable-set [_ set-name] "disable one set in theme") + (disable-sets [_ set-names] "disable several sets in theme") + (toggle-set [_ set-name] "toggle a set enabled / disabled in the theme") + (update-set-name [_ prev-set-name set-name] "update set-name when it exists") + (theme-matches-group-name [_ group name] "if a theme matches the given group & name") + (hidden-theme? [_] "if a theme is the (from the user ui) hidden temporary theme")) -(defn join-theme-path [group name] - (join-path [group name] theme-separator)) - -(defn split-theme-path [path] - (split-path-name path theme-separator)) +(def hidden-theme-id + uuid/zero) (def hidden-theme-group "") @@ -578,26 +562,14 @@ (def hidden-theme-name "__PENPOT__HIDDEN__TOKEN__THEME__") -(def hidden-theme-path - (join-theme-path hidden-theme-group hidden-theme-name)) - -(defprotocol ITokenTheme - (set-sets [_ set-names] "set the active token sets") - (enable-set [_ set-name] "enable set in theme") - (enable-sets [_ set-names] "enable sets in theme") - (disable-set [_ set-name] "disable set in theme") - (disable-sets [_ set-names] "disable sets in theme") - (toggle-set [_ set-name] "toggle a set enabled / disabled in the theme") - (update-set-name [_ prev-set-name set-name] "update set-name from `prev-set-name` to `set-name` when it exists") - (theme-path [_] "get `theme-path` from theme") - (theme-matches-group-name [_ group name] "if a theme matches the given group & name") - (hidden-theme? [_] "if a theme is the (from the user ui) hidden temporary theme")) - (defrecord TokenTheme [id name group description is-source external-id modified-at sets] cp/Datafiable (datafy [this] (into {} this)) INamedItem + (get-id [_] + id) + (get-name [_] name) @@ -610,6 +582,9 @@ (rename [this new-name] (assoc this :name new-name)) + (reid [this new-id] + (assoc this :id new-id)) + (set-description [this new-description] (assoc this :description new-description)) @@ -653,9 +628,6 @@ (conj (disj sets prev-set-name) set-name)) this)) - (theme-path [_] - (join-theme-path group name)) - (theme-matches-group-name [this group name] (and (= (:group this) group) (= (:name this) name))) @@ -751,24 +723,42 @@ (assoc :name hidden-theme-name) (make-token-theme))) +(def ^:private theme-separator "/") + +(defn- join-theme-path [group name] + (cpn/join-path [group name] :separator theme-separator :with-spaces? false)) + +(defn get-theme-path [theme] + (join-theme-path (:group theme) (:name theme))) + +(defn split-theme-path [path] + (cpn/split-group-name path + :separator theme-separator + :with-spaces? false)) + +(def hidden-theme-path + (join-theme-path hidden-theme-group hidden-theme-name)) + ;; === TokenThemes (collection) (defprotocol ITokenThemes + "Collection of themes in groups" (add-theme [_ token-theme] "add a theme to the library, at the end") - (update-theme [_ group name f] "modify a theme in the ilbrary") - (delete-theme [_ group name] "delete a theme in the library") + (update-theme [_ id f] "modify a theme in the ilbrary") + (delete-theme [_ id] "delete a theme in the library") (theme-count [_] "get the total number if themes in the library") (get-theme-tree [_] "get a nested tree of all themes in the library") (get-themes [_] "get an ordered sequence of all themes in the library") - (get-theme [_ group name] "get one theme looking for name") + (get-theme [_ id] "get one theme looking for id") + (get-theme-by-name [_ group name] "get one theme looking for group and name") (get-theme-groups [_] "get a sequence of group names by order") (get-active-theme-paths [_] "get the active theme paths") (get-active-themes [_] "get an ordered sequence of active themes in the library") (set-active-themes [_ active-themes] "set active themes in library") - (theme-active? [_ group name] "predicate if token theme is active") - (activate-theme [_ group name] "adds theme from the active-themes") - (deactivate-theme [_ group name] "removes theme from the active-themes") - (toggle-theme-active? [_ group name] "toggles theme in the active-themes") + (theme-active? [_ id] "predicate if token theme is active") + (activate-theme [_ id] "adds theme from the active-themes") + (deactivate-theme [_ id] "removes theme from the active-themes") + (toggle-theme-active? [_ id] "toggles theme in the active-themes") (get-hidden-theme [_] "get the hidden temporary theme")) (def schema:token-themes @@ -778,21 +768,9 @@ [:fn d/ordered-map?]]] [:fn d/ordered-map?]]) -(def ^:private check-token-themes - (sm/check-fn schema:token-themes :hint "expected valid token themes")) - -(def ^:private valid-token-themes? - (sm/validator schema:token-themes)) - (def ^:private schema:active-themes [:set :string]) -(def ^:private check-active-themes - (sm/check-fn schema:active-themes :hint "expected valid active themes")) - -(def ^:private valid-active-token-themes? - (sm/validator schema:active-themes)) - (defn walk-sets-tree-seq "Walk sets tree as a flat list. @@ -842,48 +820,52 @@ (walk (or nodes (d/ordered-map)) nil))) (defn sets-tree-seq - "Get tokens sets tree as a flat list + "Return a lazy sequence that walks through the tokens sets tree in a depth-first order. It returns a node for each + group and set. The nodes contain: + - is-group: true if the node is a group, false if it's a set. + - path: vector with the path of the group or set (without prefixes). + - depth: depth in the tree, starting from 0. + - index: index in the sequence, starting from 0. + - id: the uuid if it's a set, and the path string if it's a group. + - token-set: the TokenSet instance if it's a set. Options: - `:skip-children-pred`: predicate to skip iterating over a set groups children by checking the path of the set group - `:new-editing-set-path`: append a an item with `:new?` at the given path" + `:skip-children-pred`: predicate that is given a node path. If it returns true, the children of that node are skipped. + `:new-at-path`: append at the given path a node with `:is-new true` and a newly created set." [tree & {:keys [skip-children-pred new-at-path] :or {skip-children-pred (constantly false)}}] - (let [walk (fn walk [[k v :as node] parent depth] + (let [walk (fn walk [[k v :as node] parent-path depth] (lazy-seq (cond ;; New set (= :is-new k) - (let [tset (make-token-set :name (if (empty? parent) - "" - (join-set-path parent)))] + (let [token-set (make-token-set :name (if (empty? parent-path) + "" + (join-set-path parent-path)))] [{:is-new true :is-group false - :id "" ; FIXME: This is a calculated id, used for the sets tree in the sidear - :parent-path parent ; It may be refactored now to use the actual :id - :token-set tset - :depth depth}]) + :path (split-set-name (get-name token-set)) + :depth depth + :id (get-id token-set) + :token-set token-set}]) ;; Set (and v (instance? TokenSet v)) - (let [name (get-name v)] - [{:is-group false - :path (split-set-name name) - :id name - :parent-path parent - :depth depth - :token-set v}]) + [{:is-group false + :path (split-set-name (get-name v)) + :depth depth + :id (get-id v) + :token-set v}] ;; Set group (and v (d/ordered-map? v)) (let [unprefixed-path (last (split-set-str-path-prefix k)) - path (conj parent unprefixed-path) + path (conj parent-path unprefixed-path) item {:is-group true :path path - :id (join-set-path path) - :parent-path parent - :depth depth}] + :depth depth + :id (join-set-path path)}] (if (skip-children-pred path) [item] @@ -904,18 +886,20 @@ ;; === Tokens Lib (declare make-tokens-lib) +(declare ^:private check-tokens-lib-map) +(declare ^:private valid-tokens-lib-map?) (defprotocol ITokensLib "A library of tokens, sets and themes." (empty-lib? [_] "True if the lib does not contain any token, set or theme") (set-path-exists? [_ path] "if a set at `path` exists") (set-group-path-exists? [_ path] "if a set group at `path` exists") - (add-token-in-set [_ set-name token] "add token to a set") - (get-token-in-set [_ set-name token-id] "get token in a set") - (get-token-by-name [_ set-name token-name] "get token in a set searching by token name") - (update-token-in-set [_ set-name token-id f] "update a token in a set") - (delete-token-from-set [_ set-name token-id] "delete a token from a set") - (toggle-set-in-theme [_ group-name theme-name set-name] "toggle a set used / not used in a theme") + (add-token [_ set-id token] "add token to a set") + (get-token [_ set-id token-id] "get token in a set") + (get-token-by-name [_ set-name token-name] "get token in a set searching by set and token names") + (update-token [_ set-id token-id f] "update a token in a set") + (delete-token [_ set-id token-id] "delete a token from a set") + (toggle-set-in-theme [_ theme-id set-name] "toggle a set used / not used in a theme") (get-active-themes-set-names [_] "set of set names that are active in the the active themes") (sets-at-path-all-active? [_ group-path] "compute active state for child sets at `group-path`. Will return a value that matches this schema: @@ -924,7 +908,7 @@ Will return a value that matches this schema: `:partial` Mixed active state of nested sets") (get-tokens-in-active-sets [_] "set of set names that are active in the the active themes") (get-all-tokens [_] "all tokens in the lib") - (validate [_])) + (get-tokens [_ set-id] "return a map of tokens in the set, indexed by token-name")) (declare parse-multi-set-dtcg-json) (declare export-dtcg-json) @@ -942,6 +926,19 @@ Will return a value that matches this schema: (-write [this writter options] (json/-write (export-dtcg-json this) writter options))]) ITokenSets + ; Naming conventions: + ; (TODO: this will disappear after refactoring the internal structure of TokensLib). + ; Set name: the complete name as a string, without prefix \"some-group/some-subgroup/some-set\". + ; Set final name or fname: the last part of the name \"some-set\". + ; Set path: the groups part of the name, as a vector [\"some-group\" \"some-subgroup\"]. + ; Set path str: the set path as a string \"some-group/some-subgroup\". + ; Set full path: the path including the fname, as a vector [\"some-group\", \"some-subgroup\", \"some-set\"]. + ; Set full path str: the set full path as a string \"some-group/some-subgroup/some-set\". + + ; Set prefix: the two-characters prefix added to a full path item \"G-\" / \"S-\". + ; Prefixed set path or ppath: a path wit added prefixes [\"G-some-group\", \"G-some-subgroup\"]. + ; Prefixed set full path or pfpath: a full path wit prefixes [\"G-some-group\", \"G-some-subgroup\", \"S-some-set\"]. + ; Prefixed set final name or pfname: a final name with prefix \"S-some-set\". (add-set [_ token-set] (assert (token-set? token-set) "expected valid token-set") (let [path (get-set-prefixed-path token-set)] @@ -949,31 +946,36 @@ Will return a value that matches this schema: themes active-themes))) - (update-set [this set-name f] - (let [prefixed-full-path (set-name->prefixed-full-path set-name) - set (get-in sets prefixed-full-path)] + (update-set [this id f] + (assert (uuid? id) "expected uuid for `id`") + (let [set (get-set this id) + name (get-name set) + prefixed-full-path (set-name->prefixed-full-path name)] (if set (let [set' (f set) - prefixed-full-path' (get-set-prefixed-path set') - name-changed? (not= (get-name set) (get-name set'))] - (if name-changed? + name' (get-name set') + prefixed-full-path' (get-set-prefixed-path set')] + (if (= name name') + (TokensLib. (d/oassoc-in sets prefixed-full-path set') + themes + active-themes) (TokensLib. (-> sets (d/oassoc-in-before prefixed-full-path prefixed-full-path' set') (d/dissoc-in prefixed-full-path)) (walk/postwalk (fn [form] (if (instance? TokenTheme form) - (update-set-name form (get-name set) (get-name set')) + (update-set-name form name name') form)) themes) - active-themes) - (TokensLib. (d/oassoc-in sets prefixed-full-path set') - themes active-themes))) this))) - (delete-set [_ set-name] - (let [prefixed-path (set-name->prefixed-full-path set-name)] + (delete-set [this id] + (assert (uuid? id) "expected uuid for `id`") + (let [set (get-set this id) + set-name (get-name set) + prefixed-path (set-name->prefixed-full-path set-name)] (TokensLib. (d/dissoc-in sets prefixed-path) (walk/postwalk (fn [form] @@ -983,38 +985,6 @@ Will return a value that matches this schema: themes) active-themes))) - (delete-set-group [this set-group-name] - (let [path (split-set-name set-group-name) - prefixed-path (map add-set-group-prefix path) - child-set-names (->> (get-sets-at-path this path) - (map get-name) - (into #{}))] - (TokensLib. (d/dissoc-in sets prefixed-path) - (walk/postwalk - (fn [form] - (if (instance? TokenTheme form) - (disable-sets form child-set-names) - form)) - themes) - active-themes))) - - (delete-set-path [_ prefixed-set-name] - (let [prefixed-set-path (split-set-name prefixed-set-name) - set-node (get-in sets prefixed-set-path) - set-group? (not (instance? TokenSet set-node)) - set-name-string (prefixed-set-path-string->set-name-string prefixed-set-name)] - (TokensLib. (d/dissoc-in sets prefixed-set-path) - ;; TODO: When deleting a set-group, also deactivate the child sets - (if set-group? - themes - (walk/postwalk - (fn [form] - (if (instance? TokenTheme form) - (disable-set form set-name-string) - form)) - themes)) - active-themes))) - (move-set [_ from-path to-path before-path before-group?] (let [prefixed-from-path (set-full-path->set-prefixed-full-path from-path) prev-set (get-in sets prefixed-from-path)] @@ -1112,11 +1082,6 @@ Will return a value that matches this schema: (->> (tree-seq d/ordered-map? vals sets) (filter (partial instance? TokenSet)))) - (get-sets-at-prefix-path [_ prefixed-path-str] - (some->> (get-in sets (split-set-name prefixed-path-str)) - (tree-seq d/ordered-map? vals) - (filter (partial instance? TokenSet)))) - (get-sets-at-path [_ path] (some->> (map add-set-path-group-prefix path) (get-in sets) @@ -1130,18 +1095,24 @@ Will return a value that matches this schema: sets (get-sets-at-path this path)] (reduce (fn [lib set] - (update-set lib (get-name set) (fn [set'] - (rename set' (str to-path-str (str/strip-prefix (get-name set') from-path-str)))))) + (update-set lib (get-id set) (fn [set'] + (rename set' (str to-path-str (str/strip-prefix (get-name set') from-path-str)))))) this sets))) - (get-ordered-set-names [this] + (get-set-names [this] (map get-name (get-sets this))) (set-count [this] (count (get-sets this))) - (get-set [_ set-name] - (let [path (set-name->prefixed-full-path set-name)] + (get-set [this id] + (assert (uuid? id) "expected uuid for `id`") + (some #(when (= (get-id %) id) %) ;; TODO: this will be made in an efficient way when + (get-sets this))) ;; we refactor the tokens lib internal structure + + (get-set-by-name [_ name] + (assert (string? name) "expected string for `name`") + (let [path (set-name->prefixed-full-path name)] (get-in sets path))) ITokenThemes @@ -1151,31 +1122,37 @@ Will return a value that matches this schema: (update themes (:group token-theme) d/oassoc (:name token-theme) token-theme) active-themes))) - (update-theme [this group name f] - (let [theme (dm/get-in themes [group name])] - (if theme - (let [theme' (-> (make-token-theme (f theme)) - (assoc :modified-at (ct/now))) - group' (:group theme') - name' (:name theme') - same-group? (= group group') - same-name? (= name name') - same-path? (and same-group? same-name?)] - (TokensLib. sets - (if same-path? - (update themes group' assoc name' theme') - (-> themes - (d/oassoc-in-before [group name] [group' name'] theme') - (d/dissoc-in [group name]))) - (if same-path? - active-themes - (disj active-themes (join-theme-path group name))))) - this))) + (update-theme [this id f] + (if-let [theme (get-theme this id)] + (let [group (:group theme) + name (:name theme) + theme' (-> (make-token-theme (f theme)) + (assoc :modified-at (ct/now))) + group' (:group theme') + name' (:name theme') + same-group? (= group group') + same-name? (= name name') + same-path? (and same-group? same-name?)] + (TokensLib. sets + (if same-path? + (update themes group' assoc name' theme') + (-> themes + (d/oassoc-in-before [group name] [group' name'] theme') + (d/dissoc-in [group name]))) + (if same-path? + active-themes + (disj active-themes (join-theme-path group name))))) + this)) - (delete-theme [_ group name] - (TokensLib. sets - (d/dissoc-in themes [group name]) - (disj active-themes (join-theme-path group name)))) + + (delete-theme [this id] + (let [theme (get-theme this id) + [group name] [(:group theme) (:name theme)]] + (if theme + (TokensLib. sets + (d/dissoc-in themes [group name]) + (disj active-themes (join-theme-path group name))) + this))) (get-theme-tree [_] themes) @@ -1193,7 +1170,11 @@ Will return a value that matches this schema: (theme-count [this] (count (get-themes this))) - (get-theme [_ group name] + (get-theme [this id] + (->> (get-themes this) + (d/seek #(= (:id %) id)))) + + (get-theme-by-name [_ group name] (dm/get-in themes [group name])) (set-active-themes [_ active-themes] @@ -1201,30 +1182,34 @@ Will return a value that matches this schema: themes active-themes)) - (activate-theme [this group name] - (if-let [theme (get-theme this group name)] - (let [group-themes (->> (get themes group) - (map (comp theme-path val)) + (activate-theme [this id] + (if-let [theme (get-theme this id)] + (let [group (:group theme) + group-themes (->> (get themes group) + (map (comp get-theme-path val)) (into #{})) active-themes' (-> (set/difference active-themes group-themes) - (conj (theme-path theme)))] + (conj (get-theme-path theme)))] (TokensLib. sets themes active-themes')) this)) - (deactivate-theme [_ group name] - (TokensLib. sets - themes - (disj active-themes (join-theme-path group name)))) + (deactivate-theme [this id] + (if-let [theme (get-theme this id)] + (TokensLib. sets + themes + (disj active-themes (get-theme-path theme))) + this)) - (theme-active? [_ group name] - (contains? active-themes (join-theme-path group name))) + (theme-active? [this id] + (when-let [theme (get-theme this id)] + (contains? active-themes (get-theme-path theme)))) - (toggle-theme-active? [this group name] - (if (theme-active? this group name) - (deactivate-theme this group name) - (activate-theme this group name))) + (toggle-theme-active? [this id] + (if (theme-active? this id) + (deactivate-theme this id) + (activate-theme this id))) (get-active-theme-paths [_] active-themes) @@ -1234,11 +1219,11 @@ Will return a value that matches this schema: (list) (comp (filter (partial instance? TokenTheme)) - (filter #(theme-active? this (:group %) (:name %)))) + (filter #(theme-active? this (get-id %)))) (tree-seq d/ordered-map? vals themes))) (get-hidden-theme [this] - (get-theme this hidden-theme-group hidden-theme-name)) + (get-theme this hidden-theme-id)) ITokensLib (empty-lib? [this] @@ -1253,29 +1238,29 @@ Will return a value that matches this schema: (set-group-path-exists? [_ set-path] (some? (get-in sets (set-group-path->set-group-prefixed-path set-path)))) - (add-token-in-set [this set-name token] - (update-set this set-name #(add-token % token))) + (add-token [this set-id token] + (update-set this set-id #(add-token- % token))) - (get-token-in-set [this set-name token-id] + (get-token [this set-id token-id] (some-> this - (get-set set-name) - (get-token token-id))) + (get-set set-id) + (get-token- token-id))) (get-token-by-name [this set-name token-name] (some-> this - (get-set set-name) - (token-by-name token-name))) + (get-set-by-name set-name) + (get-token-by-name- token-name))) - (update-token-in-set [this set-name token-id f] - (update-set this set-name #(update-token % token-id f))) + (update-token [this set-id token-id f] + (update-set this set-id #(update-token- % token-id f))) - (delete-token-from-set [this set-name token-id] - (update-set this set-name #(delete-token % token-id))) + (delete-token [this set-id token-id] + (update-set this set-id #(delete-token- % token-id))) - (toggle-set-in-theme [this theme-group theme-name set-name] - (if-let [_theme (get-in themes theme-group theme-name)] + (toggle-set-in-theme [this theme-id set-name] + (if-let [theme (get-theme this theme-id)] (TokensLib. sets - (d/oupdate-in themes [theme-group theme-name] + (d/oupdate-in themes [(:group theme) (:name theme)] #(toggle-set % set-name)) active-themes) this)) @@ -1288,10 +1273,13 @@ Will return a value that matches this schema: (sets-at-path-all-active? [this group-path] (let [active-set-names (get-active-themes-set-names this) prefixed-path-str (set-group-path->set-group-prefixed-path-str group-path)] + (if (seq active-set-names) - (let [path-active-set-names (->> (get-sets-at-prefix-path this prefixed-path-str) - (map get-name) - (into #{})) + (let [path-active-set-names (some->> (get-in sets (split-set-name prefixed-path-str)) + (tree-seq d/ordered-map? vals) + (filter (partial instance? TokenSet)) + (map get-name) + (into #{})) difference (set/difference path-active-set-names active-set-names)] (cond (empty? difference) :all @@ -1301,11 +1289,11 @@ Will return a value that matches this schema: (get-tokens-in-active-sets [this] (let [theme-set-names (get-active-themes-set-names this) - all-set-names (get-ordered-set-names this) + all-set-names (get-set-names this) active-set-names (filter theme-set-names all-set-names) tokens (reduce (fn [tokens set-name] - (let [set (get-set this set-name)] - (merge tokens (get-tokens-map set)))) + (let [set (get-set-by-name this set-name)] + (merge tokens (get-tokens- set)))) (d/ordered-map) active-set-names)] tokens)) @@ -1313,18 +1301,26 @@ Will return a value that matches this schema: (get-all-tokens [this] (reduce (fn [tokens' set] - (into tokens' (map (fn [x] [(:name x) x]) (get-tokens set)))) + (into tokens' (map (fn [x] [(:name x) x]) (vals (get-tokens- set))))) {} (get-sets this))) - (validate [_] - (and (valid-token-sets? sets) - (valid-token-themes? themes) - (valid-active-token-themes? active-themes)))) + (get-tokens [this set-id] + (some-> this + (get-set set-id) + (get-tokens-))) + + IValidation + (valid? [this] + (valid-tokens-lib-map? (datafy this))) + + (check [this] + (check-tokens-lib-map (datafy this)) + this)) (defmethod pp/simple-dispatch TokensLib [^TokensLib obj] - (.write *out* "#penpot/token-lib ") + (.write *out* "#penpot/tokens-lib ") (pp/pprint-newline :miser) (pp/pprint (export-dtcg-json obj))) @@ -1332,7 +1328,7 @@ Will return a value that matches this schema: (do (defmethod print-method TokensLib [^TokensLib obj ^java.io.Writer w] - (.write w "#penpot/token-lib ") + (.write w "#penpot/tokens-lib ") (print-method (export-dtcg-json obj) w)) (defmethod print-dup TokensLib @@ -1343,16 +1339,29 @@ Will return a value that matches this schema: (extend-type TokensLib cljs.core/IPrintWithWriter (-pr-writer [this writer opts] - (-write writer "#penpot/token-lib ") + (-write writer "#penpot/tokens-lib ") (-pr-writer (export-dtcg-json this) writer opts)) cljs.core/IEncodeJS (-clj->js [this] (clj->js (datafy this))))) +(def ^:private schema:tokens-lib-map + "Internal data structure schema" + [:map {:title "TokensLib"} + [:sets schema:token-sets] + [:themes schema:token-themes] + [:active-themes schema:active-themes]]) + +(def ^:private valid-tokens-lib-map? + (sm/lazy-validator schema:tokens-lib-map)) + +(def ^:private check-tokens-lib-map + (sm/check-fn schema:tokens-lib-map :hint "invalid tokens-lib internal data structure")) + (defn valid-tokens-lib? [o] (and (instance? TokensLib o) - (validate o))) + (valid? o))) (defn- ensure-hidden-theme "A helper that is responsible to ensure that the hidden theme always @@ -1364,17 +1373,23 @@ Will return a value that matches this schema: data (d/oassoc data hidden-theme-name (make-hidden-theme)))))) -(defn make-tokens-lib - "Create an empty or prepopulated tokens library." +(defn map->tokens-lib + "Make a new instance of TokensLib from a map, but skiping all + validation; it is used for create new instances from trusted + sources" [& {:keys [sets themes active-themes]}] - (let [sets (or sets (d/ordered-map)) - themes (-> (or themes (d/ordered-map)) - (ensure-hidden-theme)) - active-themes (or active-themes #{hidden-theme-path})] - (TokensLib. - (check-token-sets sets) - (check-token-themes themes) - (check-active-themes active-themes)))) + (TokensLib. sets themes active-themes)) + +(defn make-tokens-lib + "Make a new instance of TokensLib from a map and validates the input" + [& {:as params}] + (-> params + (update :sets #(or % (d/ordered-map))) + (update :themes #(-> (or % (d/ordered-map)) + (ensure-hidden-theme))) + (update :active-themes #(or % #{hidden-theme-path})) + (check-tokens-lib-map) + (map->tokens-lib))) (defn ensure-tokens-lib [tokens-lib] @@ -1391,12 +1406,18 @@ Will return a value that matches this schema: {:encode/json #(export-dtcg-json %) :decode/json #(parse-multi-set-dtcg-json %)}})) -(defn duplicate-set [set-name lib & {:keys [suffix]}] - (let [sets (get-sets lib) - unames (map get-name sets) - copy-name (cfh/generate-unique-name set-name unames :suffix suffix)] - (some-> (get-set lib set-name) - (rename copy-name)))) +(defn duplicate-set + "Make a new set with a unique name, copying data from the given set in the lib." + [set-id lib & {:keys [suffix]}] + (let [sets (get-sets lib) + unames (map get-name sets) + set (get-set lib set-id) + copy-name (when set + (cfh/generate-unique-name (get-name set) unames :suffix suffix))] + (when set + (-> set + (rename copy-name) + (reid (uuid/next)))))) ;; === Import / Export from JSON format @@ -1508,6 +1529,29 @@ Will return a value that matches this schema: (and (not (contains? decoded-json "$metadata")) (not (contains? decoded-json "$themes")))) +(defn- convert-dtcg-font-family + "Convert font-family token value from DTCG format to internal format. + - If value is a string, split it into a collection of font families + - If value is already an array, keep it as is + - Otherwise keep as is" + [value] + (cond + (string? value) (cto/split-font-family value) + (sequential? value) value + :else value)) + +(defn- convert-dtcg-typography-composite + "Convert typography token value keys from DTCG format to internal format." + [value] + (if (map? value) + (-> value + (set/rename-keys cto/composite-dtcg-token-type->token-type) + (select-keys cto/typography-keys) + ;; Convert font-family values within typography composite tokens + (d/update-when :font-family convert-dtcg-font-family)) + ;; Reference value + value)) + (defn- flatten-nested-tokens-json "Convert a tokens tree in the decoded json fragment into a flat map, being the keys the token paths after joining the keys with '.'." @@ -1525,16 +1569,12 @@ Will return a value that matches this schema: (assoc tokens child-path (make-token :name child-path :type token-type - :value (cond-> (get v "$value") - ;; Split string of font-families - (and (= :font-family token-type) - (string? (get v "$value"))) - cto/split-font-family - - ;; Keep array of font-families - (and (= :font-family token-type) - (sequential? (get v "$value"))) - identity) + :value + (let [token-value (get v "$value")] + (case token-type + :font-family (convert-dtcg-font-family token-value) + :typography (convert-dtcg-typography-composite token-value) + token-value)) :description (get v "$description"))) ;; Discard unknown type tokens tokens))))) @@ -1635,7 +1675,7 @@ Will return a value that matches this schema: ordered-set-names) library - (update-theme library hidden-theme-group hidden-theme-name + (update-theme library hidden-theme-id #(assoc % :sets active-set-names)) library @@ -1643,8 +1683,9 @@ Will return a value that matches this schema: library (reduce (fn [library theme-path] - (let [[group name] (split-theme-path theme-path)] - (activate-theme library group name))) + (let [[group name] (split-theme-path theme-path) + theme (get-theme-by-name library group name)] + (activate-theme library (get-id theme)))) library active-theme-names)] @@ -1687,8 +1728,22 @@ Will return a value that matches this schema: :else (parse-multi-set-dtcg-json decoded-json)))) +(defn- typography-token->dtcg-token + [value] + (if (map? value) + (reduce-kv + (fn [acc k v] + (if (contains? cto/typography-keys k) + (assoc acc (cto/composite-token-type->dtcg-token-type k) v) + acc)) + {} value) + value)) + (defn- token->dtcg-token [token] - (cond-> {"$value" (:value token) + (cond-> {"$value" (cond-> (:value token) + ;; Transform typography token values + (= :typography (:type token)) + typography-token->dtcg-token) "$type" (cto/token-type->dtcg-token-type (:type token))} (:description token) (assoc "$description" (:description token)))) @@ -1728,12 +1783,12 @@ Will return a value that matches this schema: sets (->> (get-sets tokens-lib) (map (fn [token-set] (let [name (get-name token-set) - tokens (get-tokens-map token-set)] + tokens (get-tokens- token-set)] [(str name ".json") (tokens-tree tokens :update-token-fn token->dtcg-token)]))) (into {}))] (-> sets (assoc "$themes.json" themes) - (assoc "$metadata.json" {"tokenSetOrder" (get-ordered-set-names tokens-lib) + (assoc "$metadata.json" {"tokenSetOrder" (get-set-names tokens-lib) "activeThemes" active-themes "activeSets" (get-active-themes-set-names tokens-lib)})))) @@ -1748,7 +1803,7 @@ Will return a value that matches this schema: (filter (partial instance? TokenSet)) (map (fn [set] [(get-name set) - (tokens-tree (get-tokens-map set) :update-token-fn token->dtcg-token)]))) + (tokens-tree (get-tokens- set) :update-token-fn token->dtcg-token)]))) ordered-set-names (mapv first name-set-tuples) @@ -1793,7 +1848,12 @@ Will return a value that matches this schema: nil decoded-json))) -;; === Serialization handlers for RPC API (transit) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; SERIALIZATION (TRANSIT) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Serialization used for communicate data in transit between backend +;; and the frontend (t/add-handlers! {:id "penpot/tokens-lib" @@ -1816,18 +1876,51 @@ Will return a value that matches this schema: :wfn datafy :rfn #(map->Token %)}) -;; === Serialization handlers for database (fressian) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; MIGRATIONS HELPERS +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defn fix-duplicate-token-set-ids + "Given an instance of TokensLib fixes it internal sets data sturcture + for ensure each set has unique id; + + Specific function for file data migrations" + [tokens-lib] + (let [seen-ids + (volatile! #{}) + + migrate-set-node + (fn recurse [node] + (if (token-set? node) + (if (contains? @seen-ids (get-id node)) + (-> (datafy node) + (assoc :id (uuid/next)) + (map->token-set)) + (do + (vswap! seen-ids conj (get-id node)) + node)) + (d/update-vals node recurse)))] + + (some-> tokens-lib + (-> (datafy) + (update :sets d/update-vals migrate-set-node) + (map->tokens-lib) + (check))))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; SERIALIZATION (FRESIAN) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Serialization used for the internal storage on the file data, it +;; uses and, space and cpu efficient fresian serialization. #?(:clj - (defn- read-tokens-lib-v1-1 - "Reads the tokens lib data structure and ensures that hidden - theme exists and adds missing ID on themes" - [r] - (let [sets (fres/read-object! r) - themes (fres/read-object! r) - active-themes (fres/read-object! r) + (defn- migrate-to-v1-2 + "Migrate the TokensLib data structure internals to v1.2 version; it + expects input from v1.1 version" + [{:keys [themes] :as params}] - ;; Ensure we have at least a hidden theme + (let [;; Ensure we have at least a hidden theme themes (ensure-hidden-theme themes) @@ -1846,22 +1939,18 @@ Will return a value that matches this schema: (keys themes))))) themes (keys themes))] - - (->TokensLib sets themes active-themes)))) + (assoc params :themes themes)))) #?(:clj - (defn- read-tokens-lib-v1-2 - "Reads the tokens lib data structure and add ids to tokens, sets and themes." - [r] - (let [sets (fres/read-object! r) - themes (fres/read-object! r) - active-themes (fres/read-object! r) - - migrate-token + (defn- migrate-to-v1-3 + "Migrate the TokensLib data structure internals to v1.3 version; it + expects input from v1.2 version" + [{:keys [sets themes] :as params}] + (let [migrate-token (fn [token] (assoc token :id (uuid/next))) - migrate-sets-node + migrate-set-node (fn recurse [node] (if (token-set-legacy? node) (make-token-set @@ -1871,7 +1960,7 @@ Will return a value that matches this schema: (d/update-vals node recurse))) sets - (d/update-vals sets migrate-sets-node) + (d/update-vals sets migrate-set-node) migrate-theme (fn [theme] @@ -1881,9 +1970,12 @@ Will return a value that matches this schema: (assoc theme :id uuid/zero :external-id "") - (assoc theme ;; Rename the :id field to :external-id, and add - :id (or (uuid/parse* (:id theme)) ;; a new :id that is the same as the old if if - (uuid/next)) ;; this is an uuid, else a new uuid is generated. + ;; Rename the :id field to :external-id, and add a + ;; new :id that is the same as the old if if this is an + ;; uuid, else a new uuid is generated. + (assoc theme + :id (or (uuid/parse* (:id theme)) + (uuid/next)) :external-id (:id theme))))) migrate-theme-group @@ -1893,7 +1985,54 @@ Will return a value that matches this schema: themes (d/update-vals themes migrate-theme-group)] - (->TokensLib sets themes active-themes)))) + (assoc params + :themes themes + :sets sets)))) + +#?(:clj + (defn- migrate-to-v1-4 + "Migrate the TokensLib data structure internals to v1.2 version; it + expects input from v1.3 version" + [params] + (let [migrate-set-node + (fn recurse [node] + (if (token-set-legacy? node) + (make-token-set node) + (d/update-vals node recurse)))] + + (update params :sets d/update-vals migrate-set-node)))) + +#?(:clj + (defn- read-tokens-lib-v1-1 + "Reads the tokens lib data structure and ensures that hidden + theme exists and adds missing ID on themes" + [r] + (let [sets (fres/read-object! r) + themes (fres/read-object! r) + active-themes (fres/read-object! r)] + + (-> {:sets sets + :themes themes + :active-themes active-themes} + (migrate-to-v1-2) + (migrate-to-v1-3) + (migrate-to-v1-4) + (map->tokens-lib))))) + +#?(:clj + (defn- read-tokens-lib-v1-2 + "Reads the tokens lib data structure and add ids to tokens, sets and themes." + [r] + (let [sets (fres/read-object! r) + themes (fres/read-object! r) + active-themes (fres/read-object! r)] + + (-> {:sets sets + :themes themes + :active-themes active-themes} + (migrate-to-v1-3) + (migrate-to-v1-4) + (map->tokens-lib))))) #?(:clj (defn- read-tokens-lib-v1-3 @@ -1902,18 +2041,13 @@ Will return a value that matches this schema: [r] (let [sets (fres/read-object! r) themes (fres/read-object! r) - active-themes (fres/read-object! r) + active-themes (fres/read-object! r)] - migrate-sets-node - (fn recurse [node] - (if (token-set-legacy? node) - (make-token-set node) - (d/update-vals node recurse))) - - sets - (d/update-vals sets migrate-sets-node)] - - (->TokensLib sets themes active-themes)))) + (-> {:sets sets + :themes themes + :active-themes active-themes} + (migrate-to-v1-4) + (map->tokens-lib))))) #?(:clj (defn- write-tokens-lib diff --git a/common/src/app/common/types/variant.cljc b/common/src/app/common/types/variant.cljc index abad9f4b5f..bbac03d24a 100644 --- a/common/src/app/common/types/variant.cljc +++ b/common/src/app/common/types/variant.cljc @@ -7,8 +7,8 @@ (ns app.common.types.variant (:require [app.common.data :as d] - [app.common.files.helpers :as cfh] [app.common.math :as math] + [app.common.path-names :as cpn] [app.common.schema :as sm] [cuerdas.core :as str])) @@ -50,7 +50,6 @@ (def property-max-length 60) (def value-prefix "Value ") - (defn properties-to-name "Transform the properties into a name, with the values separated by comma" [properties] @@ -59,7 +58,6 @@ (remove str/empty?) (str/join ", "))) - (defn next-property-number "Returns the next property number, to avoid duplicates on the property names" [properties] @@ -92,7 +90,7 @@ ([path properties] (path-to-properties path properties 0)) ([path properties min-props] - (let [cpath (cfh/split-path path) + (let [cpath (cpn/split-path path) total-props (max (count cpath) min-props) assigned (mapv #(assoc % :value (nth cpath %2 "")) properties (range)) ;; Add empty strings to the end of cpath to reach the minimum number of properties @@ -100,7 +98,6 @@ remaining (drop (count properties) cpath)] (add-new-props assigned remaining)))) - (defn properties-map->formula "Transforms a map of properties to a formula of properties omitting the empty ones" [properties] @@ -110,7 +107,6 @@ (str name "=" value)))) (str/join ", "))) - (defn properties-formula->map "Transforms a formula of properties to a map of properties" [s] @@ -121,7 +117,6 @@ {:name (str/trim k) :value (str/trim v)})))) - (defn valid-properties-formula? "Checks if a formula is valid" [s] @@ -138,21 +133,18 @@ (let [upd-names (set (map :name upd-props))] (filterv #(not (contains? upd-names (:name %))) prev-props))) - (defn find-properties-to-update "Compares two property maps to find which properties should be updated" [prev-props upd-props] (filterv #(some (fn [prop] (and (= (:name %) (:name prop)) (not= (:value %) (:value prop)))) prev-props) upd-props)) - (defn find-properties-to-add "Compares two property maps to find which properties should be added" [prev-props upd-props] (let [prev-names (set (map :name prev-props))] (filterv #(not (contains? prev-names (:name %))) upd-props))) - (defn- split-base-name-and-number "Extract the number in parentheses from an item, if present, and return both the base name and the number" [item] @@ -192,7 +184,6 @@ :value (:value prop)})) []))) - (defn find-index-for-property-name "Finds the index of a name in a property map" [props name] @@ -318,4 +309,4 @@ "Transforms a variant-name (its properties values) into a standard name: the real name of the shape joined by the properties values separated by '/'" [variant] - (cfh/merge-path-item (:name variant) (str/replace (:variant-name variant) #", " " / "))) + (cpn/merge-path-item (:name variant) (str/replace (:variant-name variant) #", " " / "))) diff --git a/common/src/app/common/weak.cljc b/common/src/app/common/weak.cljc index 87ae6cbc4b..f9efeb73e7 100644 --- a/common/src/app/common/weak.cljc +++ b/common/src/app/common/weak.cljc @@ -22,7 +22,7 @@ #?(:cljs (defn weak-map - "Create a WeakMap like instance what uses clojure equality + "Create a WeakMap-like instance what uses clojure equality semantics." [] (new wm/WeakEqMap #js {:hash hash :equals =}))) diff --git a/common/test/common_tests/data_test.cljc b/common/test/common_tests/data_test.cljc index 686ae8980c..f2885c07f7 100644 --- a/common/test/common_tests/data_test.cljc +++ b/common/test/common_tests/data_test.cljc @@ -102,3 +102,14 @@ (t/is (= (d/insert-at-index [:a :b :c :d] 1 [:a]) [:a :b :c :d]))) +(t/deftest reorder + (let [v ["a" "b" "c" "d"]] + (t/is (= (d/reorder v 0 2) ["b" "a" "c" "d"])) + (t/is (= (d/reorder v 0 3) ["b" "c" "a" "d"])) + (t/is (= (d/reorder v 0 4) ["b" "c" "d" "a"])) + (t/is (= (d/reorder v 3 0) ["d" "a" "b" "c"])) + (t/is (= (d/reorder v 3 2) ["a" "b" "d" "c"])) + (t/is (= (d/reorder v 0 5) ["b" "c" "d" "a"])) + (t/is (= (d/reorder v 3 -1) ["d" "a" "b" "c"])) + (t/is (= (d/reorder v 5 -1) ["d" "a" "b" "c"])) + (t/is (= (d/reorder v -1 5) ["b" "c" "d" "a"])))) diff --git a/common/test/common_tests/files_changes_test.cljc b/common/test/common_tests/files_changes_test.cljc index 5335df2e4d..51fc6556a0 100644 --- a/common/test/common_tests/files_changes_test.cljc +++ b/common/test/common_tests/files_changes_test.cljc @@ -14,7 +14,6 @@ [app.common.types.file :as ctf] [app.common.types.shape :as cts] [app.common.uuid :as uuid] - [clojure.pprint :refer [pprint]] [clojure.test :as t] [common-tests.types.shape-decode-encode-test :refer [json-roundtrip]])) diff --git a/common/test/common_tests/files_migrations_test.cljc b/common/test/common_tests/files_migrations_test.cljc index f5fe884ba8..d9de5e84f2 100644 --- a/common/test/common_tests/files_migrations_test.cljc +++ b/common/test/common_tests/files_migrations_test.cljc @@ -9,6 +9,7 @@ [app.common.data :as d] [app.common.files.migrations :as cfm] [app.common.pprint :as pp] + [app.common.types.file :as ctf] [clojure.test :as t])) (defmethod cfm/migrate-data "test/1" [data _] (update data :sum inc)) @@ -17,7 +18,8 @@ (t/deftest generic-migration-subsystem-1 (let [migrations (into (d/ordered-set) ["test/1" "test/2" "test/3"])] - (with-redefs [cfm/available-migrations migrations] + (with-redefs [cfm/available-migrations migrations + ctf/check-file-data identity] (let [file {:data {:sum 1} :id 1 :migrations (d/ordered-set "test/1")} diff --git a/common/test/common_tests/logic/comp_detach_with_nested_test.cljc b/common/test/common_tests/logic/comp_detach_with_nested_test.cljc index ac7d62d116..9460a3b91c 100644 --- a/common/test/common_tests/logic/comp_detach_with_nested_test.cljc +++ b/common/test/common_tests/logic/comp_detach_with_nested_test.cljc @@ -446,3 +446,35 @@ (t/is (= (count fills') 1)) (t/is (= (:fill-color fill') "#fabada")) (t/is (= (:fill-opacity fill') 1)))) + +(t/deftest test-detach-copy-in-main + (let [;; ==== Setup + file (-> (setup-file) + (thc/instantiate-component :c-big-board + :copy-big-board + :children-labels [:copy-h-board-with-ellipse + :copy-nested-h-ellipse + :copy-nested-ellipse])) + + page (thf/current-page file) + + ;; ==== Action + changes (cll/generate-detach-instance (-> (pcb/empty-changes nil) + (pcb/with-page page) + (pcb/with-objects (:objects page))) + page + {(:id file) file} + (thi/id :nested-h-ellipse)) + file' (-> (thf/apply-changes file changes) + (tho/propagate-component-changes :c-board-with-ellipse) + (tho/propagate-component-changes :c-big-board)) + + ;; ==== Get + nested2-h-ellipse (ths/get-shape file' :nested-h-ellipse) + copy-nested2-h-ellipse (ths/get-shape file' :copy-nested-h-ellipse)] + + ;; ==== Check + + ;; When the nested copy inside the main is detached, their copies are unheaded. + (t/is (not (ctk/subcopy-head? nested2-h-ellipse))) + (t/is (not (ctk/subcopy-head? copy-nested2-h-ellipse))))) \ No newline at end of file diff --git a/common/test/common_tests/logic/move_shapes_test.cljc b/common/test/common_tests/logic/move_shapes_test.cljc index 657b624623..38456a05eb 100644 --- a/common/test/common_tests/logic/move_shapes_test.cljc +++ b/common/test/common_tests/logic/move_shapes_test.cljc @@ -144,20 +144,21 @@ file (-> (thf/sample-file :file1) (tht/add-tokens-lib) (tht/update-tokens-lib #(-> % - (ctob/add-set (ctob/make-token-set :name "test-token-set")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) (ctob/add-theme (ctob/make-token-theme :name "test-theme" :sets #{"test-token-set"})) (ctob/set-active-themes #{"/test-theme"}) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-sizing) - :name "token-sizing" - :type :sizing - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-spacing) - :name "token-spacing" - :type :spacing - :value 30)))) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-sizing) + :name "token-sizing" + :type :sizing + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-spacing) + :name "token-spacing" + :type :spacing + :value 30)))) (tho/add-frame :frame-1 :layout :flex ;; TODO: those values come from main.data.workspace.shape_layout/default-layout-params :layout-flex-dir :row ;; it should be good to use it directly, but first it should be moved to common.logic diff --git a/common/test/common_tests/logic/token_apply_test.cljc b/common/test/common_tests/logic/token_apply_test.cljc index fd6f6d7f86..ff1f54d3d7 100644 --- a/common/test/common_tests/logic/token_apply_test.cljc +++ b/common/test/common_tests/logic/token_apply_test.cljc @@ -27,65 +27,66 @@ (-> (thf/sample-file :file1) (tht/add-tokens-lib) (tht/update-tokens-lib #(-> % - (ctob/add-set (ctob/make-token-set :name "test-token-set")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) (ctob/add-theme (ctob/make-token-theme :name "test-theme" :sets #{"test-token-set"})) (ctob/set-active-themes #{"/test-theme"}) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-radius) - :name "token-radius" - :type :border-radius - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-rotation) - :name "token-rotation" - :type :rotation - :value 30)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-opacity) - :name "token-opacity" - :type :opacity - :value 0.7)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-stroke-width) - :name "token-stroke-width" - :type :stroke-width - :value 2)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-color) - :name "token-color" - :type :color - :value "#00ff00")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-dimensions) - :name "token-dimensions" - :type :dimensions - :value 100)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-font-size) - :name "token-font-size" - :type :font-size - :value 24)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-letter-spacing) - :name "token-letter-spacing" - :type :letter-spacing - :value 2)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-font-family) - :name "token-font-family" - :type :font-family - :value ["Helvetica" "Arial" "sans-serif"])) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-sizing) - :name "token-sizing" - :type :sizing - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :token-spacing) - :name "token-spacing" - :type :spacing - :value 30)))) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-radius) + :name "token-radius" + :type :border-radius + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-rotation) + :name "token-rotation" + :type :rotation + :value 30)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-opacity) + :name "token-opacity" + :type :opacity + :value 0.7)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-stroke-width) + :name "token-stroke-width" + :type :stroke-width + :value 2)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-color) + :name "token-color" + :type :color + :value "#00ff00")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-dimensions) + :name "token-dimensions" + :type :dimensions + :value 100)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-font-size) + :name "token-font-size" + :type :font-size + :value 24)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-letter-spacing) + :name "token-letter-spacing" + :type :letter-spacing + :value 2)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-font-family) + :name "token-font-family" + :type :font-family + :value ["Helvetica" "Arial" "sans-serif"])) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-sizing) + :name "token-sizing" + :type :sizing + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :token-spacing) + :name "token-spacing" + :type :spacing + :value 30)))) (tho/add-frame :frame1 :layout :flex ;; TODO: those values come from main.data.workspace.shape_layout/default-layout-params :layout-flex-dir :row ;; it should be good to use it directly, but first it should be moved to common.logic @@ -131,17 +132,17 @@ frame1 (ths/get-shape file :frame1) text1 (ths/get-shape file :text1) circle1 (ths/get-shape file :circle1) - token-radius (tht/get-token file "test-token-set" (thi/id :token-radius)) - token-rotation (tht/get-token file "test-token-set" (thi/id :token-rotation)) - token-opacity (tht/get-token file "test-token-set" (thi/id :token-opacity)) - token-stroke-width (tht/get-token file "test-token-set" (thi/id :token-stroke-width)) - token-color (tht/get-token file "test-token-set" (thi/id :token-color)) - token-dimensions (tht/get-token file "test-token-set" (thi/id :token-dimensions)) - token-font-size (tht/get-token file "test-token-set" (thi/id :token-font-size)) - token-letter-spacing (tht/get-token file "test-token-set" (thi/id :token-letter-spacing)) - token-font-family (tht/get-token file "test-token-set" (thi/id :token-font-family)) - token-sizing (tht/get-token file "test-token-set" (thi/id :token-sizing)) - token-spacing (tht/get-token file "test-token-set" (thi/id :token-spacing)) + token-radius (tht/get-token file (thi/id :test-token-set) (thi/id :token-radius)) + token-rotation (tht/get-token file (thi/id :test-token-set) (thi/id :token-rotation)) + token-opacity (tht/get-token file (thi/id :test-token-set) (thi/id :token-opacity)) + token-stroke-width (tht/get-token file (thi/id :test-token-set) (thi/id :token-stroke-width)) + token-color (tht/get-token file (thi/id :test-token-set) (thi/id :token-color)) + token-dimensions (tht/get-token file (thi/id :test-token-set) (thi/id :token-dimensions)) + token-font-size (tht/get-token file (thi/id :test-token-set) (thi/id :token-font-size)) + token-letter-spacing (tht/get-token file (thi/id :test-token-set) (thi/id :token-letter-spacing)) + token-font-family (tht/get-token file (thi/id :test-token-set) (thi/id :token-font-family)) + token-sizing (tht/get-token file (thi/id :test-token-set) (thi/id :token-sizing)) + token-spacing (tht/get-token file (thi/id :test-token-set) (thi/id :token-spacing)) ;; ==== Action changes (-> (-> (pcb/empty-changes nil) diff --git a/common/test/common_tests/logic/token_test.cljc b/common/test/common_tests/logic/token_test.cljc index b99df0f8da..aa58adfa05 100644 --- a/common/test/common_tests/logic/token_test.cljc +++ b/common/test/common_tests/logic/token_test.cljc @@ -13,6 +13,7 @@ [app.common.test-helpers.tokens :as tht] [app.common.types.tokens-lib :as ctob] [app.common.uuid :as uuid] + [clojure.datafy :refer [datafy]] [clojure.test :as t])) (t/use-fixtures :each thi/test-fixture) @@ -33,6 +34,7 @@ (pcb/with-library-data (:data file)) (clt/generate-toggle-token-set (tht/get-tokens-lib file) "foo/bar")) + _ (prn "changes" changes) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) undo (thf/apply-undo-changes redo changes) @@ -83,127 +85,133 @@ (t/deftest set-token-theme-test (t/testing "delete token theme" - (let [theme-name "foo" - group "main" + (let [theme-id (uuid/next) file (setup-file #(-> % - (ctob/add-theme (ctob/make-token-theme :name theme-name - :group group)))) + (ctob/add-theme (ctob/make-token-theme :id theme-id + :name "foo" + :group "main")))) changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token-theme group theme-name nil)) + (pcb/set-token-theme theme-id nil)) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) undo (thf/apply-undo-changes redo changes) undo-lib (tht/get-tokens-lib undo)] ;; Redo - (t/is (nil? (ctob/get-theme redo-lib group theme-name))) + (t/is (nil? (ctob/get-theme redo-lib theme-id))) ;; Undo - (t/is (some? (ctob/get-theme undo-lib group theme-name))))) + (t/is (some? (ctob/get-theme undo-lib theme-id))))) (t/testing "add token theme" - (let [theme-name "foo" - group "main" - theme (ctob/make-token-theme :name theme-name - :group group) + (let [theme-id (uuid/next) + theme (ctob/make-token-theme :id theme-id + :name "foo" + :group "main") file (setup-file identity) changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token-theme group theme-name theme)) + (pcb/set-token-theme theme-id theme)) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) undo (thf/apply-undo-changes redo changes) undo-lib (tht/get-tokens-lib undo)] ;; Redo - (t/is (some? (ctob/get-theme redo-lib group theme-name))) + (t/is (some? (ctob/get-theme redo-lib theme-id))) ;; Undo - (t/is (nil? (ctob/get-theme undo-lib group theme-name))))) + (t/is (nil? (ctob/get-theme undo-lib theme-id))))) (t/testing "update token theme" - (let [theme-name "foo" - group "main" - prev-theme (ctob/make-token-theme :name theme-name - :group group) + (let [theme-id (uuid/next) + prev-theme-name "foo" + prev-theme (ctob/make-token-theme :id theme-id + :name prev-theme-name + :group "main") file (setup-file #(ctob/add-theme % prev-theme)) new-theme-name "foo1" changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token-theme group new-theme-name prev-theme)) + (pcb/set-token-theme theme-id (ctob/rename prev-theme new-theme-name))) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) + redo-theme (ctob/get-theme redo-lib theme-id) undo (thf/apply-undo-changes redo changes) - undo-lib (tht/get-tokens-lib undo)] + undo-lib (tht/get-tokens-lib undo) + undo-theme (ctob/get-theme undo-lib theme-id)] ;; Redo - (t/is (some? (ctob/get-theme redo-lib group theme-name))) - (t/is (nil? (ctob/get-theme redo-lib group new-theme-name))) + (t/is (= new-theme-name (ctob/get-name redo-theme))) ;; Undo - (t/is (some? (ctob/get-theme undo-lib group theme-name))) - (t/is (nil? (ctob/get-theme undo-lib group new-theme-name))))) + (t/is (= prev-theme-name (ctob/get-name undo-theme))))) (t/testing "toggling token theme updates using changes history" - (let [theme-name "foo-theme" - group "main" + (let [theme-id (uuid/next) + theme (ctob/make-token-theme :id theme-id + :name "foo-theme" + :group "main") set-name "bar-set" token-set (ctob/make-token-set :name set-name) - theme (ctob/make-token-theme :name theme-name - :group group) file (setup-file #(-> % (ctob/add-theme theme) (ctob/add-set token-set))) theme' (assoc theme :sets #{set-name}) changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token-theme group theme-name theme')) + (pcb/set-token-theme theme-id theme')) changed-file (-> file (thf/apply-changes changes) (thf/apply-undo-changes changes) (thf/apply-changes changes)) changed-lib (tht/get-tokens-lib changed-file)] (t/is (= #{set-name} - (-> changed-lib (ctob/get-theme group theme-name) :sets)))))) + (-> changed-lib (ctob/get-theme theme-id) :sets)))))) (t/deftest set-token-test (t/testing "delete token" (let [set-name "foo" + set-id (uuid/next) token-id (uuid/next) file (setup-file #(-> % - (ctob/add-set (ctob/make-token-set :name set-name)) - (ctob/add-token-in-set set-name (ctob/make-token {:name "to.delete.color.red" - :id token-id - :value "red" - :type :color})))) + (ctob/add-set (ctob/make-token-set :id set-id + :name set-name)) + (ctob/add-token set-id (ctob/make-token {:name "to.delete.color.red" + :id token-id + :value "red" + :type :color})))) changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token set-name token-id nil)) + (pcb/set-token set-id token-id nil)) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) undo (thf/apply-undo-changes redo changes) undo-lib (tht/get-tokens-lib undo)] - (t/is (nil? (ctob/get-token-in-set redo-lib set-name token-id))) + (t/is (nil? (ctob/get-token redo-lib set-id token-id))) ;; Undo - (t/is (some? (ctob/get-token-in-set undo-lib set-name token-id))))) + (t/is (some? (ctob/get-token undo-lib set-id token-id))))) (t/testing "add token" (let [set-name "foo" + set-id (uuid/next) token (ctob/make-token {:name "to.add.color.red" :value "red" :type :color}) - file (setup-file #(-> % (ctob/add-set (ctob/make-token-set :name set-name)))) + file (setup-file #(-> % (ctob/add-set (ctob/make-token-set :id set-id + :name set-name)))) changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token set-name (:id token) token)) + (pcb/set-token set-id (:id token) token)) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) undo (thf/apply-undo-changes redo changes) undo-lib (tht/get-tokens-lib undo)] - (t/is (= token (ctob/get-token-in-set redo-lib set-name (:id token)))) + (t/is (= token (ctob/get-token redo-lib set-id (:id token)))) ;; Undo - (t/is (nil? (ctob/get-token-in-set undo-lib set-name (:id token)))))) + (t/is (nil? (ctob/get-token undo-lib set-id (:id token)))))) (t/testing "update token" (let [set-name "foo" + set-id (uuid/next) prev-token (ctob/make-token {:name "to.update.color.red" :value "red" :type :color}) @@ -211,27 +219,29 @@ (assoc :name "color.red.changed") (assoc :value "blue")) file (setup-file #(-> % - (ctob/add-set (ctob/make-token-set :name set-name)) - (ctob/add-token-in-set set-name prev-token))) + (ctob/add-set (ctob/make-token-set :id set-id + :name set-name)) + (ctob/add-token set-id prev-token))) changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token set-name (:id prev-token) token)) + (pcb/set-token set-id (:id prev-token) token)) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) undo (thf/apply-undo-changes redo changes) undo-lib (tht/get-tokens-lib undo)] - (t/is (tht/token-data-eq? token (ctob/get-token-in-set redo-lib set-name (:id token)))) + (t/is (tht/token-data-eq? token (ctob/get-token redo-lib set-id (:id token)))) ;; Undo - (t/is (tht/token-data-eq? prev-token (ctob/get-token-in-set undo-lib set-name (:id prev-token))))))) + (t/is (tht/token-data-eq? prev-token (ctob/get-token undo-lib set-id (:id prev-token))))))) (t/deftest set-token-set-test (t/testing "delete token set" (let [set-name "foo" - file (setup-file #(ctob/add-set % (ctob/make-token-set :name set-name))) + set-id (uuid/next) + file (setup-file #(ctob/add-set % (ctob/make-token-set :id set-id :name set-name))) changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token-set set-name false nil)) + (pcb/set-token-set set-id nil)) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) @@ -243,11 +253,12 @@ (t/testing "add token set" (let [set-name "foo" - token-set (ctob/make-token-set :name set-name) + set-id (uuid/next) + token-set (ctob/make-token-set :id set-id :name set-name) file (setup-file identity) changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token-set set-name false token-set)) + (pcb/set-token-set set-id token-set)) redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) @@ -259,28 +270,26 @@ (t/testing "update token set" (let [set-name "foo" - token-name "bar" - token (ctob/make-token {:name token-name - :value "red" - :type :color}) - file (setup-file #(-> (ctob/add-set % (ctob/make-token-set :name set-name)) - (ctob/add-token-in-set set-name token))) - prev-token-set (-> file tht/get-tokens-lib (ctob/get-set set-name)) + set-id (uuid/next) + token-set (ctob/make-token-set :id set-id :name set-name) + file (setup-file #(-> (ctob/add-set % token-set))) new-set-name "foo1" + changes (-> (pcb/empty-changes) (pcb/with-library-data (:data file)) - (pcb/set-token-set set-name false (ctob/rename prev-token-set new-set-name))) + (pcb/set-token-set set-id (ctob/rename token-set new-set-name))) + redo (thf/apply-changes file changes) redo-lib (tht/get-tokens-lib redo) - undo (thf/apply-undo-changes redo changes) - undo-lib (tht/get-tokens-lib undo)] + redo-token-set (ctob/get-set redo-lib set-id) + undo (thf/apply-undo-changes redo changes) + undo-lib (tht/get-tokens-lib undo) + undo-token-set (ctob/get-set undo-lib set-id)] + + (t/is (= (ctob/get-name redo-token-set) new-set-name)) ;; Undo - (t/is (some? (ctob/get-token-in-set undo-lib set-name (:id token)))) - (t/is (nil? (ctob/get-token-in-set undo-lib new-set-name (:id token)))) - ;; Redo - (t/is (nil? (ctob/get-token-in-set redo-lib set-name (:id token)))) - (t/is (some? (ctob/get-token-in-set redo-lib new-set-name (:id token))))))) + (t/is (= (ctob/get-name undo-token-set) set-name))))) (t/deftest generate-toggle-token-set-group-test (t/testing "toggling set group with no active sets inside will activate all child sets" @@ -361,13 +370,13 @@ :position :top}) redo (thf/apply-changes file changes) redo-sets (-> (tht/get-tokens-lib redo) - (ctob/get-ordered-set-names)) + (ctob/get-set-names)) undo (thf/apply-undo-changes redo changes) undo-sets (-> (tht/get-tokens-lib undo) - (ctob/get-ordered-set-names))] + (ctob/get-set-names))] (t/is (= ["bar" "foo" "baz"] (vec redo-sets))) (t/testing "undo" - (t/is (= (ctob/get-ordered-set-names lib) undo-sets))))) + (t/is (= (ctob/get-set-names lib) undo-sets))))) (t/testing "at bottom" (let [file (setup-file #(-> % @@ -380,13 +389,13 @@ :position :bot}) redo (thf/apply-changes file changes) redo-sets (-> (tht/get-tokens-lib redo) - (ctob/get-ordered-set-names)) + (ctob/get-set-names)) undo (thf/apply-undo-changes redo changes) undo-sets (-> (tht/get-tokens-lib undo) - (ctob/get-ordered-set-names))] + (ctob/get-set-names))] (t/is (= ["bar" "baz" "foo"] (vec redo-sets))) (t/testing "undo" - (t/is (= (ctob/get-ordered-set-names lib) undo-sets))))) + (t/is (= (ctob/get-set-names lib) undo-sets))))) (t/testing "dropping out of set group" (let [file (setup-file #(-> % @@ -398,13 +407,13 @@ :position :top}) redo (thf/apply-changes file changes) redo-sets (-> (tht/get-tokens-lib redo) - (ctob/get-ordered-set-names)) + (ctob/get-set-names)) undo (thf/apply-undo-changes redo changes) undo-sets (-> (tht/get-tokens-lib undo) - (ctob/get-ordered-set-names))] + (ctob/get-set-names))] (t/is (= ["bar" "foo"] (vec redo-sets))) (t/testing "undo" - (t/is (= (ctob/get-ordered-set-names lib) undo-sets))))) + (t/is (= (ctob/get-set-names lib) undo-sets))))) (t/testing "into set group" (let [file (setup-file #(-> % @@ -416,13 +425,13 @@ :position :bot}) redo (thf/apply-changes file changes) redo-sets (-> (tht/get-tokens-lib redo) - (ctob/get-ordered-set-names)) + (ctob/get-set-names)) undo (thf/apply-undo-changes redo changes) undo-sets (-> (tht/get-tokens-lib undo) - (ctob/get-ordered-set-names))] + (ctob/get-set-names))] (t/is (= ["foo/bar" "foo/foo"] (vec redo-sets))) (t/testing "undo" - (t/is (= (ctob/get-ordered-set-names lib) undo-sets))))) + (t/is (= (ctob/get-set-names lib) undo-sets))))) (t/testing "edge-cases:" (t/testing "prevent overriding set to identical path" @@ -454,13 +463,13 @@ :collapsed-paths #{["foo"]}}) redo (thf/apply-changes file changes) redo-sets (-> (tht/get-tokens-lib redo) - (ctob/get-ordered-set-names)) + (ctob/get-set-names)) undo (thf/apply-undo-changes redo changes) undo-sets (-> (tht/get-tokens-lib undo) - (ctob/get-ordered-set-names))] + (ctob/get-set-names))] (t/is (= ["foo/bar" "foo"] (vec redo-sets))) (t/testing "undo" - (t/is (= (ctob/get-ordered-set-names lib) undo-sets)))))))) + (t/is (= (ctob/get-set-names lib) undo-sets)))))))) (t/deftest generate-move-token-group-test (t/testing "Ignore dropping set group to the same position" @@ -496,14 +505,14 @@ :position :top}) redo (thf/apply-changes file changes) redo-sets (-> (tht/get-tokens-lib redo) - (ctob/get-ordered-set-names)) + (ctob/get-set-names)) undo (thf/apply-undo-changes redo changes) undo-sets (-> (tht/get-tokens-lib undo) - (ctob/get-ordered-set-names))] + (ctob/get-set-names))] (t/is (= ["bar/bar" "foo/foo" "baz/baz"] (vec redo-sets))) (t/testing "undo" - (t/is (= (ctob/get-ordered-set-names lib) undo-sets))))) + (t/is (= (ctob/get-set-names lib) undo-sets))))) (t/testing "to bottom" (let [file (setup-file #(-> % @@ -515,14 +524,14 @@ :position :bot}) redo (thf/apply-changes file changes) redo-sets (-> (tht/get-tokens-lib redo) - (ctob/get-ordered-set-names)) + (ctob/get-set-names)) undo (thf/apply-undo-changes redo changes) undo-sets (-> (tht/get-tokens-lib undo) - (ctob/get-ordered-set-names))] + (ctob/get-set-names))] (t/is (= ["bar" "foo/foo"] (vec redo-sets))) (t/testing "undo" - (t/is (= (ctob/get-ordered-set-names lib) undo-sets))))) + (t/is (= (ctob/get-set-names lib) undo-sets))))) (t/testing "into set group" (let [file (setup-file #(-> % @@ -534,13 +543,13 @@ :position :bot}) redo (thf/apply-changes file changes) redo-sets (-> (tht/get-tokens-lib redo) - (ctob/get-ordered-set-names)) + (ctob/get-set-names)) undo (thf/apply-undo-changes redo changes) undo-sets (-> (tht/get-tokens-lib undo) - (ctob/get-ordered-set-names))] + (ctob/get-set-names))] (t/is (= ["bar/foo/foo" "bar/bar"] (vec redo-sets))) (t/testing "undo" - (t/is (= (ctob/get-ordered-set-names lib) undo-sets)))) + (t/is (= (ctob/get-set-names lib) undo-sets)))) (t/testing "edge-cases:" (t/testing "prevent overriding set to identical path" diff --git a/common/test/common_tests/logic/variants_switch_test.cljc b/common/test/common_tests/logic/variants_switch_test.cljc index 62d09bcec4..99a072b540 100644 --- a/common/test/common_tests/logic/variants_switch_test.cljc +++ b/common/test/common_tests/logic/variants_switch_test.cljc @@ -45,7 +45,6 @@ ;; The rect has width 15 after the switch (t/is (= (:width rect02') 15)))) - (t/deftest test-switch-with-override (let [;; ==== Setup file (-> (thf/sample-file :file1) @@ -125,12 +124,10 @@ ;; The rect has width 15 after the switch (t/is (= (:width rect02') 15)))) - (def font-size-path-paragraph [:content :children 0 :children 0 :font-size]) (def font-size-path-0 [:content :children 0 :children 0 :children 0 :font-size]) (def font-size-path-1 [:content :children 0 :children 0 :children 1 :font-size]) - (def text-path-0 [:content :children 0 :children 0 :children 0 :text]) (def text-path-1 [:content :children 0 :children 0 :children 1 :text]) (def text-lines-path [:content :children 0 :children 0 :children]) @@ -188,6 +185,8 @@ ;; The copy clean has no overrides + + copy-clean (ths/get-shape file :copy-clean) copy-clean-t (ths/get-shape file :copy-clean-t) @@ -209,6 +208,8 @@ ;; ==== Action: Switch all the copies + + file' (-> file (tho/swap-component copy-clean :c02 {:new-shape-label :copy-clean-2 :keep-touched? true}) (tho/swap-component copy-font-size :c02 {:new-shape-label :copy-font-size-2 :keep-touched? true}) @@ -234,6 +235,8 @@ ;; Before the switch: ;; * font size 14 ;; * text "hello world" + + (t/is (= (get-in copy-clean-t font-size-path-0) "14")) (t/is (= (get-in copy-clean-t text-path-0) "hello world")) @@ -248,6 +251,8 @@ ;; Before the switch: ;; * font size 25 ;; * text "hello world" + + (t/is (= (get-in copy-font-size-t font-size-path-0) "25")) (t/is (= (get-in copy-font-size-t text-path-0) "hello world")) @@ -306,6 +311,8 @@ ;; The copy clean has no overrides + + copy-clean (ths/get-shape file :copy-clean) copy-clean-t (ths/get-shape file :copy-clean-t) @@ -327,6 +334,8 @@ ;; ==== Action: Switch all the copies + + file' (-> file (tho/swap-component copy-clean :c02 {:new-shape-label :copy-clean-2 :keep-touched? true}) (tho/swap-component copy-font-size :c02 {:new-shape-label :copy-font-size-2 :keep-touched? true}) @@ -352,6 +361,8 @@ ;; Before the switch: ;; * font size 14 ;; * text "hello world" + + (t/is (= (get-in copy-clean-t font-size-path-0) "14")) (t/is (= (get-in copy-clean-t text-path-0) "hello world")) @@ -366,6 +377,8 @@ ;; Before the switch: ;; * font size 25 ;; * text "hello world" + + (t/is (= (get-in copy-font-size-t font-size-path-0) "25")) (t/is (= (get-in copy-font-size-t text-path-0) "hello world")) @@ -401,7 +414,6 @@ (t/is (= (get-in copy-both-t' font-size-path-0) "50")) (t/is (= (get-in copy-both-t' text-path-0) "text overriden")))) - (t/deftest test-switch-with-different-text-text-override (let [;; ==== Setup file (-> (thf/sample-file :file1) @@ -423,6 +435,8 @@ ;; The copy clean has no overrides + + copy-clean (ths/get-shape file :copy-clean) copy-clean-t (ths/get-shape file :copy-clean-t) @@ -444,6 +458,8 @@ ;; ==== Action: Switch all the copies + + file' (-> file (tho/swap-component copy-clean :c02 {:new-shape-label :copy-clean-2 :keep-touched? true}) (tho/swap-component copy-font-size :c02 {:new-shape-label :copy-font-size-2 :keep-touched? true}) @@ -469,6 +485,8 @@ ;; Before the switch: ;; * font size 14 ;; * text "hello world" + + (t/is (= (get-in copy-clean-t font-size-path-0) "14")) (t/is (= (get-in copy-clean-t text-path-0) "hello world")) @@ -483,6 +501,8 @@ ;; Before the switch: ;; * font size 25 ;; * text "hello world" + + (t/is (= (get-in copy-font-size-t font-size-path-0) "25")) (t/is (= (get-in copy-font-size-t text-path-0) "hello world")) @@ -518,7 +538,6 @@ (t/is (= (get-in copy-both-t' font-size-path-0) "25")) (t/is (= (get-in copy-both-t' text-path-0) "bye")))) - (t/deftest test-switch-with-different-text-and-prop-text-override (let [;; ==== Setup file (-> (thf/sample-file :file1) @@ -542,6 +561,8 @@ ;; The copy clean has no overrides + + copy-clean (ths/get-shape file :copy-clean) copy-clean-t (ths/get-shape file :copy-clean-t) @@ -563,6 +584,8 @@ ;; ==== Action: Switch all the copies + + file' (-> file (tho/swap-component copy-clean :c02 {:new-shape-label :copy-clean-2 :keep-touched? true}) (tho/swap-component copy-font-size :c02 {:new-shape-label :copy-font-size-2 :keep-touched? true}) @@ -588,6 +611,8 @@ ;; Before the switch: ;; * font size 14 ;; * text "hello world" + + (t/is (= (get-in copy-clean-t font-size-path-0) "14")) (t/is (= (get-in copy-clean-t text-path-0) "hello world")) @@ -602,6 +627,8 @@ ;; Before the switch: ;; * font size 25 ;; * text "hello world" + + (t/is (= (get-in copy-font-size-t font-size-path-0) "25")) (t/is (= (get-in copy-font-size-t text-path-0) "hello world")) @@ -637,7 +664,6 @@ (t/is (= (get-in copy-both-t' font-size-path-0) "50")) (t/is (= (get-in copy-both-t' text-path-0) "bye")))) - (t/deftest test-switch-with-identical-structure-text-override (let [;; ==== Setup file (-> (thf/sample-file :file1) @@ -657,6 +683,8 @@ ;; Duplicate a text line in copy-structure-clean + + file (change-structure file :copy-structure-clean-t) copy-structure-clean (ths/get-shape file :copy-structure-clean) copy-structure-clean-t (ths/get-shape file :copy-structure-clean-t) @@ -678,6 +706,8 @@ ;; ==== Action: Switch all the copies + + file' (-> file (tho/swap-component copy-structure-clean :c02 {:new-shape-label :copy-structure-clean-2 :keep-touched? true}) (tho/swap-component copy-structure-unif :c02 {:new-shape-label :copy-structure-unif-2 :keep-touched? true}) @@ -763,7 +793,6 @@ (t/is (= (get-in copy-structure-mixed-t' font-size-path-1) "40")) (t/is (= (get-in copy-structure-mixed-t' text-path-1) "new line 2")))) - (t/deftest test-switch-with-different-prop-structure-text-override (let [;; ==== Setup file (-> (thf/sample-file :file1) @@ -784,6 +813,8 @@ ;; Duplicate a text line in copy-structure-clean + + file (change-structure file :copy-structure-clean-t) copy-structure-clean (ths/get-shape file :copy-structure-clean) copy-structure-clean-t (ths/get-shape file :copy-structure-clean-t) @@ -805,6 +836,8 @@ ;; ==== Action: Switch all the copies + + file' (-> file (tho/swap-component copy-structure-clean :c02 {:new-shape-label :copy-structure-clean-2 :keep-touched? true}) (tho/swap-component copy-structure-unif :c02 {:new-shape-label :copy-structure-unif-2 :keep-touched? true}) @@ -906,6 +939,8 @@ ;; Duplicate a text line in copy-structure-clean + + file (change-structure file :copy-structure-clean-t) copy-structure-clean (ths/get-shape file :copy-structure-clean) copy-structure-clean-t (ths/get-shape file :copy-structure-clean-t) @@ -927,6 +962,8 @@ ;; ==== Action: Switch all the copies + + file' (-> file (tho/swap-component copy-structure-clean :c02 {:new-shape-label :copy-structure-clean-2 :keep-touched? true}) (tho/swap-component copy-structure-unif :c02 {:new-shape-label :copy-structure-unif-2 :keep-touched? true}) @@ -971,6 +1008,8 @@ ;; Second line: ;; * font size 25 ;; * text "new line 2" + + (t/is (= (get-in copy-structure-unif-t font-size-path-0) "25")) (t/is (= (get-in copy-structure-unif-t text-path-0) "new line 1")) (t/is (= (get-in copy-structure-unif-t font-size-path-1) "25")) @@ -992,6 +1031,8 @@ ;; Before the switch, second line: ;; * font size 40 ;; * text "new line 2" + + (t/is (= (get-in copy-structure-mixed-t font-size-path-0) "35")) (t/is (= (get-in copy-structure-mixed-t text-path-0) "new line 1")) (t/is (= (get-in copy-structure-mixed-t font-size-path-1) "40")) @@ -1025,6 +1066,8 @@ ;; Duplicate a text line in copy-structure-clean + + file (change-structure file :copy-structure-clean-t) copy-structure-clean (ths/get-shape file :copy-structure-clean) copy-structure-clean-t (ths/get-shape file :copy-structure-clean-t) @@ -1046,6 +1089,8 @@ ;; ==== Action: Switch all the copies + + file' (-> file (tho/swap-component copy-structure-clean :c02 {:new-shape-label :copy-structure-clean-2 :keep-touched? true}) (tho/swap-component copy-structure-unif :c02 {:new-shape-label :copy-structure-unif-2 :keep-touched? true}) @@ -1090,6 +1135,8 @@ ;; Second line: ;; * font size 25 ;; * text "new line 2" + + (t/is (= (get-in copy-structure-unif-t font-size-path-0) "25")) (t/is (= (get-in copy-structure-unif-t text-path-0) "new line 1")) (t/is (= (get-in copy-structure-unif-t font-size-path-1) "25")) @@ -1111,6 +1158,8 @@ ;; Before the switch, second line: ;; * font size 40 ;; * text "new line 2" + + (t/is (= (get-in copy-structure-mixed-t font-size-path-0) "35")) (t/is (= (get-in copy-structure-mixed-t text-path-0) "new line 1")) (t/is (= (get-in copy-structure-mixed-t font-size-path-1) "40")) @@ -1124,7 +1173,6 @@ (t/is (= (get-in copy-structure-mixed-t' text-path-0) "bye")) (t/is (nil? (get-in copy-structure-mixed-t' font-size-path-1))))) - (t/deftest test-switch-variant-for-other-with-same-nested-component (let [;; ==== Setup file (-> (thf/sample-file :file1) @@ -1144,6 +1192,8 @@ ;; On :copy-cp01, change the width of the rect + + changes (cls/generate-update-shapes (pcb/empty-changes nil (:id page)) #{copy-cp01-rect-id} (fn [shape] @@ -1166,8 +1216,6 @@ ;; The width of copy-cp02-rect' is 25 (change is preserved) (t/is (= (:width copy-cp02-rect') 25)))) - - (t/deftest test-switch-variant-that-has-swaped-copy (let [;; ==== Setup file (-> (thf/sample-file :file1) @@ -1193,7 +1241,6 @@ ;; Switch :c01 for :c02 file' (tho/swap-component file copy01 :c02 {:new-shape-label :copy02 :keep-touched? true}) - copy02' (ths/get-shape file' :copy02) copy-cp02' (ths/get-shape file' :copy-cp02)] (thf/dump-file file') @@ -1207,7 +1254,6 @@ ;;copy-02' had copy-cp02' as child (t/is (= (-> copy02' :shapes first) (:id copy-cp02'))))) - (t/deftest test-switch-variant-that-has-swaped-copy-with-changed-attr (let [;; ==== Setup file (-> (thf/sample-file :file1) @@ -1244,7 +1290,6 @@ ;; Switch :c01 for :c02 file' (tho/swap-component file copy01 :c02 {:new-shape-label :copy02 :keep-touched? true}) - copy02' (ths/get-shape file' :copy02) copy-cp02' (ths/get-shape file' :copy-cp02) copy-cp02-rect' (ths/get-shape-by-id file' (-> copy-cp02' :shapes first))] @@ -1262,3 +1307,58 @@ (t/is (= (-> copy02' :shapes first) (:id copy-cp02'))) ;; The width of copy-cp02-rect' is 25 (change is preserved) (t/is (= (:width copy-cp02-rect') 25)))) + +(t/deftest test-switch-variant-without-touched-but-touched-parent + (let [;; ==== Setup + file (-> (thf/sample-file :file1) + (thv/add-variant-with-child + :v01 :c01 :m01 :c02 :m02 :r01 :r02 + {:child1-params {:width 5} + :child2-params {:width 5}}) + (tho/add-simple-component :external01 :external01-root :external01-child) + + (thc/instantiate-component :c01 + :c01-in-root + :children-labels [:r01-in-c01-in-root] + :parent-label :external01-root)) + + ;; Make a change on r01-in-c01-in-root so it is touched + page (thf/current-page file) + r01-in-c01-in-root (ths/get-shape file :r01-in-c01-in-root) + + changes (cls/generate-update-shapes (pcb/empty-changes nil (:id page)) + #{(:id r01-in-c01-in-root)} + (fn [shape] + (assoc shape :width 25)) + (:objects page) + {}) + + file (thf/apply-changes file changes) + + + ;; Instantiate the component :external01 + + + file (thc/instantiate-component file + :external01 + :external-copy01 + :children-labels [:external-copy01-rect :c01-in-copy]) + page (thf/current-page file) + c01-in-copy (ths/get-shape file :c01-in-copy) + rect01 (get-in page [:objects (-> c01-in-copy :shapes first)]) + + + ;; ==== Action + + + file' (tho/swap-component file c01-in-copy :c02 {:new-shape-label :c02-in-copy :keep-touched? true}) + + page' (thf/current-page file') + c02-in-copy' (ths/get-shape file' :c02-in-copy) + rect02' (get-in page' [:objects (-> c02-in-copy' :shapes first)])] + + (thf/dump-file file :keys [:width :touched]) + ;; The rect had width 25 before the switch + (t/is (= (:width rect01) 25)) + ;; The rect still has width 25 after the switch + (t/is (= (:width rect02') 25)))) diff --git a/common/test/common_tests/pages_helpers_test.cljc b/common/test/common_tests/pages_helpers_test.cljc deleted file mode 100644 index a15f677bbc..0000000000 --- a/common/test/common_tests/pages_helpers_test.cljc +++ /dev/null @@ -1,19 +0,0 @@ -;; This Source Code Form is subject to the terms of the Mozilla Public -;; License, v. 2.0. If a copy of the MPL was not distributed with this -;; file, You can obtain one at http://mozilla.org/MPL/2.0/. -;; -;; Copyright (c) KALEIDOS INC - -(ns common-tests.pages-helpers-test - (:require - [app.common.files.helpers :as cfh] - [clojure.pprint :refer [pprint]] - [clojure.test :as t])) - -(t/deftest parse-path-name - (t/is (= ["foo" "bar"] (cfh/parse-path-name "foo/bar"))) - (t/is (= ["" "foo"] (cfh/parse-path-name "foo"))) - (t/is (= ["" "foo"] (cfh/parse-path-name "/foo"))) - (t/is (= ["" ""] (cfh/parse-path-name ""))) - (t/is (= ["" ""] (cfh/parse-path-name nil)))) - diff --git a/common/test/common_tests/path_names_test.cljc b/common/test/common_tests/path_names_test.cljc new file mode 100644 index 0000000000..e52806f21b --- /dev/null +++ b/common/test/common_tests/path_names_test.cljc @@ -0,0 +1,33 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns common-tests.path-names-test + (:require + [app.common.path-names :as cpn] + [clojure.test :as t])) + +(t/deftest split-group-name + (t/is (= ["foo" "bar"] (cpn/split-group-name "foo/bar"))) + (t/is (= ["" "foo"] (cpn/split-group-name "foo"))) + (t/is (= ["" "foo"] (cpn/split-group-name "/foo"))) + (t/is (= ["" ""] (cpn/split-group-name ""))) + (t/is (= ["" ""] (cpn/split-group-name nil)))) + +(t/deftest split-and-join-path + (let [name "group/subgroup/name" + path (cpn/split-path name :separator "/") + name' (cpn/join-path path :separator "/" :with-spaces? false)] + (t/is (= (first path) "group")) + (t/is (= (second path) "subgroup")) + (t/is (= (nth path 2) "name")) + (t/is (= name' name)))) + +(t/deftest split-and-join-path-with-spaces + (let [name "group / subgroup / name" + path (cpn/split-path name :separator "/")] + (t/is (= (first path) "group")) + (t/is (= (second path) "subgroup")) + (t/is (= (nth path 2) "name")))) diff --git a/common/test/common_tests/runner.cljc b/common/test/common_tests/runner.cljc index a657e096f0..1b469eb1d4 100644 --- a/common/test/common_tests/runner.cljc +++ b/common/test/common_tests/runner.cljc @@ -30,7 +30,7 @@ [common-tests.logic.swap-as-override-test] [common-tests.logic.token-test] [common-tests.media-test] - [common-tests.pages-helpers-test] + [common-tests.path-names-test] [common-tests.record-test] [common-tests.schema-test] [common-tests.svg-path-test] @@ -82,7 +82,7 @@ 'common-tests.logic.swap-as-override-test 'common-tests.logic.token-test 'common-tests.media-test - 'common-tests.pages-helpers-test + 'common-tests.path-names-test 'common-tests.record-test 'common-tests.schema-test 'common-tests.svg-path-test diff --git a/common/test/common_tests/types/data/tokens-font-family-example.json b/common/test/common_tests/types/data/tokens-font-family-example.json new file mode 100644 index 0000000000..b4d23dec2c --- /dev/null +++ b/common/test/common_tests/types/data/tokens-font-family-example.json @@ -0,0 +1,26 @@ +{ + "fonts": { + "string-font-family": { + "$value": "Arial, Helvetica, sans-serif", + "$type": "fontFamilies", + "$description": "A font family defined as a string" + }, + "array-font-family": { + "$value": ["Inter", "system-ui", "sans-serif"], + "$type": "fontFamilies", + "$description": "A font family defined as an array" + }, + "single-font-family": { + "$value": "Georgia", + "$type": "fontFamilies" + }, + "complex-font-family": { + "$value": "Times New Roman, serif", + "$type": "fontFamilies" + }, + "font-with-spaces": { + "$value": "Source Sans Pro, Arial, sans-serif", + "$type": "fontFamilies" + } + } +} \ No newline at end of file diff --git a/common/test/common_tests/types/data/tokens-typography-example.json b/common/test/common_tests/types/data/tokens-typography-example.json new file mode 100644 index 0000000000..94a48ecb80 --- /dev/null +++ b/common/test/common_tests/types/data/tokens-typography-example.json @@ -0,0 +1,53 @@ +{ + "test": { + "typo": { + "$value": { + "fontWeight": "100", + "fontSize": "16px", + "letterSpacing": "0.1em" + }, + "$type": "typography" + }, + "typo2": { + "$value": "{typo}", + "$type": "typography" + }, + "font-weight": { + "$value": "200", + "$type": "fontWeights" + }, + "typo-to-single": { + "$value": "{font-weight}", + "$type": "typography" + }, + "test-empty": { + "$value": {}, + "$type": "typography" + }, + "font-size": { + "$value": "18px", + "$type": "fontSizes" + }, + "typo-complex": { + "$value": { + "fontWeight": "bold", + "fontSize": "24px", + "letterSpacing": "0.05em", + "lineHeights": "100%", + "fontFamilies": ["Arial", "sans-serif"], + "textCase": "uppercase" + }, + "$type": "typography", + "$description": "A complex typography token" + }, + "typo-with-string-font-family": { + "$value": { + "fontWeight": "600", + "fontSize": "20px", + "fontFamilies": "Roboto, Helvetica, sans-serif" + }, + "$type": "typography", + "$description": "Typography token with string font family" + } + } +} \ No newline at end of file diff --git a/common/test/common_tests/types/tokens_lib_test.cljc b/common/test/common_tests/types/tokens_lib_test.cljc index cd7fab3a65..f036c821df 100644 --- a/common/test/common_tests/types/tokens_lib_test.cljc +++ b/common/test/common_tests/types/tokens_lib_test.cljc @@ -11,9 +11,11 @@ #?(:clj [app.common.test-helpers.tokens :as tht]) #?(:clj [clojure.datafy :refer [datafy]]) [app.common.data :as d] + [app.common.path-names :as cpn] [app.common.test-helpers.ids-map :as thi] [app.common.time :as ct] [app.common.transit :as tr] + [app.common.types.token :as cto] [app.common.types.tokens-lib :as ctob] [app.common.uuid :as uuid] [clojure.test :as t])) @@ -62,13 +64,13 @@ (t/deftest find-token-value-references (t/testing "finds references inside curly braces in a string" - (t/is (= #{"foo" "bar"} (ctob/find-token-value-references "{foo} + {bar}"))) + (t/is (= #{"foo" "bar"} (cto/find-token-value-references "{foo} + {bar}"))) (t/testing "ignores extra text" - (t/is (= #{"foo.bar.baz"} (ctob/find-token-value-references "{foo.bar.baz} + something"))))) + (t/is (= #{"foo.bar.baz"} (cto/find-token-value-references "{foo.bar.baz} + something"))))) (t/testing "ignores string without references" - (t/is (nil? (ctob/find-token-value-references "1 + 2")))) + (t/is (nil? (cto/find-token-value-references "1 + 2")))) (t/testing "handles edge-case for extra curly braces" - (t/is (= #{"foo" "bar"} (ctob/find-token-value-references "{foo}} + {bar}"))))) + (t/is (= #{"foo" "bar"} (cto/find-token-value-references "{foo}} + {bar}"))))) (t/deftest make-token-set (let [now (ct/now) @@ -81,11 +83,11 @@ (t/is (= (ctob/get-name token-set1) "test-token-set-1")) (t/is (= (ctob/get-description token-set1) "")) (t/is (some? (ctob/get-modified-at token-set1))) - (t/is (empty? (ctob/get-tokens-map token-set1))) + (t/is (empty? (ctob/get-tokens- token-set1))) (t/is (= (ctob/get-name token-set2) "test-token-set-2")) (t/is (= (ctob/get-description token-set2) "test description")) (t/is (= (ctob/get-modified-at token-set2) now)) - (t/is (empty? (ctob/get-tokens-map token-set2))))) + (t/is (empty? (ctob/get-tokens- token-set2))))) (t/deftest make-invalid-token-set (let [params {:name 777 :description 999}] @@ -99,7 +101,7 @@ (ctob/add-set (ctob/make-token-set :name "Move"))) move (fn [from-path to-path before-path before-group?] (->> (ctob/move-set tokens-lib from-path to-path before-path before-group?) - (ctob/get-ordered-set-names) + (ctob/get-set-names) (into [])))] (t/testing "move to top" (t/is (= ["Move" "A" "B"] (move ["Move"] ["Move"] ["A"] false)))) @@ -117,10 +119,11 @@ (ctob/add-set (ctob/make-token-set :name "Foo"))) move (fn [from-path to-path before-path before-group?] (->> (ctob/move-set tokens-lib from-path to-path before-path before-group?) - (ctob/get-ordered-set-names) + (ctob/get-set-names) (into [])))] (t/testing "move outside of group" (t/is (= ["Foo/Baz" "Bar" "Foo"] (move ["Foo" "Bar"] ["Bar"] ["Foo"] false))) + (t/is (= ["Bar" "Foo/Baz" "Foo"] (move ["Foo" "Bar"] ["Bar"] ["Foo"] true))) (t/is (= ["Bar" "Foo/Baz" "Foo"] (move ["Foo" "Bar"] ["Bar"] ["Foo" "Baz"] true))) (t/is (= ["Foo/Baz" "Foo" "Bar"] (move ["Foo" "Bar"] ["Bar"] nil false)))) @@ -136,20 +139,22 @@ (ctob/add-set (ctob/make-token-set :name "b/b"))) move (fn [from-path to-path before-path before-group?] (->> (ctob/move-set tokens-lib from-path to-path before-path before-group?) - (ctob/get-ordered-set-names) + (ctob/get-set-names) (vec)))] (t/testing "move within group" - (t/is (= ["a/b" "a/a" "b/a" "b/b"] (vec (ctob/get-ordered-set-names tokens-lib)))) + (t/is (= ["a/b" "a/a" "b/a" "b/b"] (vec (ctob/get-set-names tokens-lib)))) (t/is (= ["a/a" "a/b" "b/a" "b/b"] (move ["a" "b"] ["a" "b"] nil true)))))) (t/deftest move-token-set-nested-3 - (let [tokens-lib (-> (ctob/make-tokens-lib) + (let [theme-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "Foo/Bar/Baz")) (ctob/add-set (ctob/make-token-set :name "Other")) - (ctob/add-theme (ctob/make-token-theme :name "Theme" + (ctob/add-theme (ctob/make-token-theme :id theme-id + :name "Theme" :sets #{"Foo/Bar/Baz"})) (ctob/move-set ["Foo" "Bar" "Baz"] ["Other/Baz"] nil nil))] - (t/is (= #{"Other/Baz"} (:sets (ctob/get-theme tokens-lib "" "Theme")))))) + (t/is (= #{"Other/Baz"} (:sets (ctob/get-theme tokens-lib theme-id)))))) (t/deftest move-token-set-group (t/testing "reordering" @@ -161,24 +166,27 @@ :sets #{"Foo/A" "Bar/Foo"}))) move (fn [from-path to-path before-path before-group?] (->> (ctob/move-set-group tokens-lib from-path to-path before-path before-group?) - (ctob/get-ordered-set-names) + (ctob/get-set-names) (into [])))] (t/is (= ["Bar/Foo" "Bar/Foo/A" "Bar/Foo/B"] (move ["Foo"] ["Bar" "Foo"] nil nil))) (t/is (= ["Bar/Foo" "Foo/A" "Foo/B"] (move ["Bar"] ["Bar"] ["Foo"] true))))) (t/testing "updates theme set names" - (let [tokens-lib (-> (ctob/make-tokens-lib) + (let [theme-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "Foo/A")) (ctob/add-set (ctob/make-token-set :name "Foo/B")) (ctob/add-set (ctob/make-token-set :name "Bar/Foo")) - (ctob/add-theme (ctob/make-token-theme :name "Theme" + (ctob/add-theme (ctob/make-token-theme :id theme-id + :name "Theme" :sets #{"Foo/A" "Bar/Foo"})) (ctob/move-set-group ["Foo"] ["Bar" "Foo"] nil nil))] - (t/is (= #{"Bar/Foo/A" "Bar/Foo"} (:sets (ctob/get-theme tokens-lib "" "Theme"))))))) + (t/is (= #{"Bar/Foo/A" "Bar/Foo"} (:sets (ctob/get-theme tokens-lib theme-id))))))) (t/deftest tokens-tree (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "A" + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "A" :tokens {"foo.bar.baz" (ctob/make-token :name "foo.bar.baz" :type :boolean :value true) @@ -188,8 +196,8 @@ "baz.boo" (ctob/make-token :name "baz.boo" :type :boolean :value true)}))) - expected (-> (ctob/get-set tokens-lib "A") - (ctob/get-tokens-map) + expected (-> tokens-lib + (ctob/get-tokens (thi/id :test-token-set)) (ctob/tokens-tree))] (t/is (= (get-in expected ["foo" "bar" "baz" :name]) "foo.bar.baz")) (t/is (= (get-in expected ["foo" "bar" "bam" :name]) "foo.bar.bam")) @@ -233,16 +241,17 @@ (t/deftest make-invalid-tokens-lib (let [params {:sets {} :themes {}}] - (t/is (thrown-with-msg? #?(:cljs js/Error :clj Exception) #"expected valid token sets" + (t/is (thrown-with-msg? #?(:cljs js/Error :clj Exception) #"invalid tokens-lib internal data structure" (ctob/make-tokens-lib params))))) (t/deftest add-token-set-to-token-lib (let [tokens-lib (ctob/make-tokens-lib) - token-set (ctob/make-token-set :name "test-token-set") + token-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set") tokens-lib' (ctob/add-set tokens-lib token-set) token-sets' (ctob/get-sets tokens-lib') - token-set' (ctob/get-set tokens-lib' "test-token-set")] + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))] (t/is (= (ctob/set-count tokens-lib') 1)) (t/is (= (first token-sets') token-set)) @@ -250,18 +259,19 @@ (t/deftest update-token-set (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set"))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set"))) tokens-lib' (-> tokens-lib - (ctob/update-set "test-token-set" + (ctob/update-set (thi/id :test-token-set) (fn [token-set] (ctob/set-description token-set "some description"))) - (ctob/update-set "not-existing-set" + (ctob/update-set (uuid/next) (fn [token-set] (ctob/set-description token-set "no-effect")))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set")] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))] (t/is (= (ctob/set-count tokens-lib') 1)) (t/is (= (ctob/get-name token-set') "test-token-set")) @@ -270,31 +280,33 @@ (t/deftest rename-token-set (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set"))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set"))) tokens-lib' (-> tokens-lib - (ctob/update-set "test-token-set" + (ctob/update-set (thi/id :test-token-set) (fn [token-set] (ctob/rename token-set "updated-name")))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "updated-name")] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))] (t/is (= (ctob/set-count tokens-lib') 1)) (t/is (= (ctob/get-name token-set') "updated-name")) (t/is (ct/is-after? (ctob/get-modified-at token-set') (ctob/get-modified-at token-set))))) (t/deftest rename-token-set-group - (let [tokens-lib (-> (ctob/make-tokens-lib) + (let [theme-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "foo/bar/baz")) (ctob/add-set (ctob/make-token-set :name "foo/bar/baz/baz-child-1")) (ctob/add-set (ctob/make-token-set :name "foo/bar/baz/baz-child-2")) - (ctob/add-theme (ctob/make-token-theme :name "theme" :sets #{"foo/bar/baz/baz-child-1"}))) + (ctob/add-theme (ctob/make-token-theme :id theme-id :name "theme" :sets #{"foo/bar/baz/baz-child-1"}))) tokens-lib' (-> tokens-lib (ctob/rename-set-group ["foo" "bar"] "bar-renamed") (ctob/rename-set-group ["foo" "bar-renamed" "baz"] "baz-renamed")) - expected-set-names (ctob/get-ordered-set-names tokens-lib') - expected-theme-sets (-> (ctob/get-theme tokens-lib' "" "theme") + expected-set-names (ctob/get-set-names tokens-lib') + expected-theme-sets (-> (ctob/get-theme tokens-lib' theme-id) :sets)] (t/is (= expected-set-names '("foo/bar-renamed/baz" @@ -302,146 +314,130 @@ "foo/bar-renamed/baz-renamed/baz-child-2"))) (t/is (= expected-theme-sets #{"foo/bar-renamed/baz-renamed/baz-child-1"})))) -(t/deftest delete-token-set - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-theme (ctob/make-token-theme :name "test-token-theme" :sets #{"test-token-set"}))) - - tokens-lib' (-> tokens-lib - (ctob/delete-set-path "S-test-token-set") - (ctob/delete-set-path "S-not-existing-set")) - - token-set' (ctob/get-set tokens-lib' "updated-name") - token-theme' (ctob/get-theme tokens-lib' "" "test-token-theme")] - - (t/is (= (ctob/set-count tokens-lib') 0)) - (t/is (= (:sets token-theme') #{})) - (t/is (nil? token-set')))) - (t/deftest duplicate-token-set (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set" + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set" :tokens {"test-token" (ctob/make-token :id (thi/new-id! :test-token) :name "test-token" :type :boolean :value true)}))) - token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"}) - token (ctob/get-token token-set-copy (thi/id :test-token))] + token-set-copy (ctob/duplicate-set (thi/id :test-token-set) tokens-lib {:suffix "copy"}) + token (ctob/get-token- token-set-copy (thi/id :test-token))] (t/is (some? token-set-copy)) (t/is (= (ctob/get-name token-set-copy) "test-token-set-copy")) - (t/is (= (count (ctob/get-tokens-map token-set-copy)) 1)) + (t/is (= (count (ctob/get-tokens- token-set-copy)) 1)) (t/is (= (:name token) "test-token")))) (t/deftest duplicate-token-set-twice (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set" + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set" :tokens {"test-token" (ctob/make-token :id (thi/new-id! :test-token) :name "test-token" :type :boolean :value true)}))) - tokens-lib (ctob/add-set tokens-lib (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})) + tokens-lib (ctob/add-set tokens-lib (ctob/duplicate-set (thi/id :test-token-set) tokens-lib {:suffix "copy"})) - token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"}) - token (ctob/get-token token-set-copy (thi/id :test-token))] + token-set-copy (ctob/duplicate-set (thi/id :test-token-set) tokens-lib {:suffix "copy"}) + token (ctob/get-token- token-set-copy (thi/id :test-token))] (t/is (some? token-set-copy)) (t/is (= (ctob/get-name token-set-copy) "test-token-set-copy-2")) - (t/is (= (count (ctob/get-tokens-map token-set-copy)) 1)) + (t/is (= (count (ctob/get-tokens- token-set-copy)) 1)) (t/is (= (:name token) "test-token")))) (t/deftest duplicate-empty-token-set (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set"))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set"))) - token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"}) - tokens (ctob/get-tokens-map token-set-copy)] + token-set-copy (ctob/duplicate-set (thi/id :test-token-set) tokens-lib {:suffix "copy"}) + tokens (ctob/get-tokens- token-set-copy)] (t/is (some? token-set-copy)) (t/is (= (ctob/get-name token-set-copy) "test-token-set-copy")) - (t/is (= (count (ctob/get-tokens-map token-set-copy)) 0)) + (t/is (= (count (ctob/get-tokens- token-set-copy)) 0)) (t/is (= (count tokens) 0)))) (t/deftest duplicate-not-existing-token-set (let [tokens-lib (ctob/make-tokens-lib) - token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})] + token-set-copy (ctob/duplicate-set (uuid/next) tokens-lib {:suffix "copy"})] (t/is (nil? token-set-copy)))) -(t/deftest active-themes-set-names - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set"))) - - tokens-lib' (-> tokens-lib - (ctob/delete-set-path "S-test-token-set") - (ctob/delete-set-path "S-not-existing-set")) - - token-set' (ctob/get-set tokens-lib' "updated-name")] - - (t/is (= (ctob/set-count tokens-lib') 0)) - (t/is (nil? token-set')))) - (t/deftest add-token (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set"))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set"))) token (ctob/make-token :id (thi/new-id! :token) :name "test-token" :type :boolean :value true) tokens-lib' (-> tokens-lib - (ctob/add-token-in-set "test-token-set" token) - (ctob/add-token-in-set "not-existing-set" token)) + (ctob/add-token (thi/id :test-token-set) token) + (ctob/add-token (uuid/next) token)) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set") - token' (ctob/get-token token-set' (thi/id :token))] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set)) + token' (ctob/get-token tokens-lib' + (thi/id :test-token-set) + (thi/id :token))] (t/is (= (ctob/set-count tokens-lib') 1)) - (t/is (= (count (ctob/get-tokens-map token-set')) 1)) + (t/is (= (count (ctob/get-tokens tokens-lib' (thi/id :test-token-set))) 1)) (t/is (= (:name token') "test-token")) (t/is (ct/is-after? (ctob/get-modified-at token-set') (ctob/get-modified-at token-set))))) (t/deftest update-token (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-1) - :name "test-token-1" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-2) - :name "test-token-2" - :type :boolean - :value true))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-1) + :name "test-token-1" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-2) + :name "test-token-2" + :type :boolean + :value true))) tokens-lib' (-> tokens-lib - (ctob/update-token-in-set "test-token-set" (thi/id :test-token-1) - (fn [token] - (assoc token - :description "some description" - :value false))) - (ctob/update-token-in-set "not-existing-set" (thi/id :test-token-1) - (fn [token] - (assoc token - :name "no-effect"))) - (ctob/update-token-in-set "test-token-set" (uuid/next) - (fn [token] - (assoc token - :name "no-effect")))) + (ctob/update-token (thi/id :test-token-set) (thi/id :test-token-1) + (fn [token] + (assoc token + :description "some description" + :value false))) + (ctob/update-token (uuid/next) (thi/id :test-token-1) + (fn [token] + (assoc token + :name "no-effect"))) + (ctob/update-token (thi/id :test-token-set) (uuid/next) + (fn [token] + (assoc token + :name "no-effect")))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set") - token (ctob/get-token token-set (thi/id :test-token-1)) - token' (ctob/get-token token-set' (thi/id :test-token-1))] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set)) + token (ctob/get-token tokens-lib + (thi/id :test-token-set) + (thi/id :test-token-1)) + token' (ctob/get-token tokens-lib' + (thi/id :test-token-set) + (thi/id :test-token-1)) + tokens' (ctob/get-tokens tokens-lib' + (thi/id :test-token-set))] (t/is (= (ctob/set-count tokens-lib') 1)) - (t/is (= (count (ctob/get-tokens-map token-set')) 2)) - (t/is (= (d/index-of (keys (ctob/get-tokens-map token-set')) "test-token-1") 0)) + (t/is (= (count tokens') 2)) + (t/is (= (d/index-of (keys tokens') "test-token-1") 0)) (t/is (= (:name token') "test-token-1")) (t/is (= (:description token') "some description")) (t/is (= (:value token') false)) @@ -450,32 +446,39 @@ (t/deftest rename-token (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-1) - :name "test-token-1" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-2) - :name "test-token-2" - :type :boolean - :value true))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-1) + :name "test-token-1" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-2) + :name "test-token-2" + :type :boolean + :value true))) tokens-lib' (-> tokens-lib - (ctob/update-token-in-set "test-token-set" (thi/id :test-token-1) - (fn [token] - (assoc token - :name "updated-name")))) + (ctob/update-token (thi/id :test-token-set) (thi/id :test-token-1) + (fn [token] + (assoc token + :name "updated-name")))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set") - token (ctob/get-token token-set (thi/id :test-token-1)) - token' (ctob/get-token token-set' (thi/id :test-token-1))] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set)) + token (ctob/get-token tokens-lib + (thi/id :test-token-set) + (thi/id :test-token-1)) + token' (ctob/get-token tokens-lib' + (thi/id :test-token-set) + (thi/id :test-token-1)) + tokens' (ctob/get-tokens tokens-lib' + (thi/id :test-token-set))] (t/is (= (ctob/set-count tokens-lib') 1)) - (t/is (= (count (ctob/get-tokens-map token-set')) 2)) - (t/is (= (d/index-of (keys (ctob/get-tokens-map token-set')) "updated-name") 0)) + (t/is (= (count tokens') 2)) + (t/is (= (d/index-of (keys tokens') "updated-name") 0)) (t/is (= (:name token') "updated-name")) (t/is (= (:description token') "")) (t/is (= (:value token') true)) @@ -484,23 +487,28 @@ (t/deftest delete-token (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token) - :name "test-token" - :type :boolean - :value true))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token) + :name "test-token" + :type :boolean + :value true))) tokens-lib' (-> tokens-lib - (ctob/delete-token-from-set "test-token-set" (thi/id :test-token)) - (ctob/delete-token-from-set "not-existing-set" (thi/id :test-token)) - (ctob/delete-token-from-set "test-set" (uuid/next))) + (ctob/delete-token (thi/id :test-token-set) (thi/id :test-token)) + (ctob/delete-token (uuid/next) (thi/id :test-token)) + (ctob/delete-token (thi/id :test-token-set) (uuid/next))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set") - token' (ctob/get-token token-set' (thi/id :test-token))] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set)) + token' (ctob/get-token tokens-lib' + (thi/id :test-token-set) + (thi/id :test-token)) + tokens' (ctob/get-tokens tokens-lib' + (thi/id :test-token-set))] (t/is (= (ctob/set-count tokens-lib') 1)) - (t/is (= (count (ctob/get-tokens-map token-set')) 0)) + (t/is (= (count tokens') 0)) (t/is (nil? token')) (t/is (ct/is-after? (ctob/get-modified-at token-set') (ctob/get-modified-at token-set))))) @@ -511,7 +519,7 @@ (ctob/add-set (ctob/make-token-set :name "group-2/set-a")) (ctob/add-set (ctob/make-token-set :name "group-1/set-c"))) - ordered-sets (ctob/get-ordered-set-names tokens-lib)] + ordered-sets (ctob/get-set-names tokens-lib)] (t/is (= ordered-sets '("group-1/set-a" "group-1/set-b" @@ -555,7 +563,7 @@ (ctob/make-token :name "token-4" :type :border-radius :value 4000)})) - (ctob/update-theme ctob/hidden-theme-group ctob/hidden-theme-name + (ctob/update-theme ctob/hidden-theme-id #(ctob/enable-sets % #{"set-a" "set-b"}))) tokens (ctob/get-tokens-in-active-sets tokens-lib)] @@ -757,33 +765,36 @@ (t/is (= :none expected-invalid-none)))) (t/deftest add-token-theme - (let [tokens-lib (ctob/make-tokens-lib) - token-theme (ctob/make-token-theme :name "test-token-theme") + (let [theme-id (uuid/next) + tokens-lib (ctob/make-tokens-lib) + token-theme (ctob/make-token-theme :id theme-id :name "test-token-theme") tokens-lib' (ctob/add-theme tokens-lib token-theme) token-themes' (ctob/get-themes tokens-lib') - token-theme' (ctob/get-theme tokens-lib' "" "test-token-theme")] + token-theme' (ctob/get-theme tokens-lib' theme-id)] (t/is (= (ctob/theme-count tokens-lib') 2)) (t/is (= (second token-themes') token-theme)) (t/is (= token-theme' token-theme)))) (t/deftest update-token-theme - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-theme (ctob/make-token-theme :name "test-token-theme"))) + (let [theme-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-theme (ctob/make-token-theme :id theme-id + :name "test-token-theme"))) tokens-lib' (-> tokens-lib - (ctob/update-theme "" "test-token-theme" + (ctob/update-theme theme-id (fn [token-theme] (assoc token-theme :description "some description"))) - (ctob/update-theme "" "not-existing-theme" + (ctob/update-theme (uuid/next) (fn [token-theme] (assoc token-theme :description "no-effect")))) - token-theme (ctob/get-theme tokens-lib "" "test-token-theme") - token-theme' (ctob/get-theme tokens-lib' "" "test-token-theme")] + token-theme (ctob/get-theme tokens-lib theme-id) + token-theme' (ctob/get-theme tokens-lib' theme-id)] (t/is (= (ctob/theme-count tokens-lib') 2)) (t/is (= (:name token-theme') "test-token-theme")) @@ -791,59 +802,69 @@ (t/is (ct/is-after? (:modified-at token-theme') (:modified-at token-theme))))) (t/deftest rename-token-theme - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-theme (ctob/make-token-theme :name "test-token-theme"))) + (let [theme-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-theme (ctob/make-token-theme :id theme-id + :name "test-token-theme"))) tokens-lib' (-> tokens-lib - (ctob/update-theme "" "test-token-theme" + (ctob/update-theme theme-id (fn [token-theme] (assoc token-theme :name "updated-name")))) - token-theme (ctob/get-theme tokens-lib "" "test-token-theme") - token-theme' (ctob/get-theme tokens-lib' "" "updated-name")] + token-theme (ctob/get-theme tokens-lib theme-id) + token-theme' (ctob/get-theme tokens-lib' theme-id)] (t/is (= (ctob/theme-count tokens-lib') 2)) (t/is (= (:name token-theme') "updated-name")) (t/is (ct/is-after? (:modified-at token-theme') (:modified-at token-theme))))) (t/deftest delete-token-theme - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-theme (ctob/make-token-theme :name "test-token-theme"))) + (let [theme-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-theme (ctob/make-token-theme :id theme-id + :name "test-token-theme"))) + tokens-lib' (-> tokens-lib + (ctob/delete-theme theme-id) + (ctob/delete-theme (uuid/next))) - tokens-lib' (-> tokens-lib - (ctob/delete-theme "" "test-token-theme") - (ctob/delete-theme "" "not-existing-theme")) - - token-theme' (ctob/get-theme tokens-lib' "" "updated-name")] + token-theme' (ctob/get-theme tokens-lib' theme-id)] (t/is (= (ctob/theme-count tokens-lib') 1)) (t/is (nil? token-theme')))) (t/deftest toggle-set-in-theme - (let [tokens-lib (-> (ctob/make-tokens-lib) + (let [theme-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) (ctob/add-set (ctob/make-token-set :name "token-set-1")) (ctob/add-set (ctob/make-token-set :name "token-set-2")) (ctob/add-set (ctob/make-token-set :name "token-set-3")) - (ctob/add-theme (ctob/make-token-theme :name "test-token-theme"))) + (ctob/add-theme (ctob/make-token-theme :id theme-id + :name "test-token-theme" + :sets #{"token-set-1" "token-set-2"}))) tokens-lib' (-> tokens-lib - (ctob/toggle-set-in-theme "" "test-token-theme" "token-set-1") - (ctob/toggle-set-in-theme "" "test-token-theme" "token-set-2") - (ctob/toggle-set-in-theme "" "test-token-theme" "token-set-2")) + (ctob/toggle-set-in-theme theme-id "token-set-1") + (ctob/toggle-set-in-theme theme-id "token-set-3")) - token-theme (ctob/get-theme tokens-lib "" "test-token-theme") - token-theme' (ctob/get-theme tokens-lib' "" "test-token-theme")] + token-theme (ctob/get-theme tokens-lib theme-id) + token-theme' (ctob/get-theme tokens-lib' theme-id)] + (t/is (= (:sets token-theme') #{"token-set-2" "token-set-3"})) (t/is (ct/is-after? (:modified-at token-theme') (:modified-at token-theme))))) (t/deftest transit-serialization (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" (ctob/make-token :name "test-token" - :type :boolean - :value true)) - (ctob/add-theme (ctob/make-token-theme :name "test-token-theme")) - (ctob/toggle-set-in-theme "" "test-token-theme" "test-token-set")) + (ctob/add-set (ctob/make-token-set + :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "test-token" + :type :boolean + :value true)) + (ctob/add-theme (ctob/make-token-theme :id (thi/new-id! :test-token-theme) + :name "test-token-theme")) + (ctob/toggle-set-in-theme (thi/id :test-token-theme) "test-token-set")) encoded-str (tr/encode-str tokens-lib) tokens-lib' (tr/decode-str encoded-str)] @@ -854,12 +875,15 @@ #?(:clj (t/deftest fressian-serialization (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" (ctob/make-token :name "test-token" - :type :boolean - :value true)) - (ctob/add-theme (ctob/make-token-theme :name "test-token-theme")) - (ctob/toggle-set-in-theme "" "test-token-theme" "test-token-set")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "test-token" + :type :boolean + :value true)) + (ctob/add-theme (ctob/make-token-theme :id (thi/new-id! :test-token-theme) + :name "test-token-theme")) + (ctob/toggle-set-in-theme (thi/id :test-token-theme) "test-token-set")) encoded-blob (fres/encode tokens-lib) tokens-lib' (fres/decode encoded-blob)] @@ -867,48 +891,32 @@ (t/is (= (ctob/set-count tokens-lib') 1)) (t/is (= (ctob/theme-count tokens-lib') 2))))) -(t/deftest split-and-join-path - (let [name "group/subgroup/name" - path (ctob/split-path name "/") - name' (ctob/join-path path "/")] - (t/is (= (first path) "group")) - (t/is (= (second path) "subgroup")) - (t/is (= (nth path 2) "name")) - (t/is (= name' name)))) - -(t/deftest split-and-join-path-with-spaces - (let [name "group / subgroup / name" - path (ctob/split-path name "/")] - (t/is (= (first path) "group")) - (t/is (= (second path) "subgroup")) - (t/is (= (nth path 2) "name")))) - (t/deftest add-tokens-in-set (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token1" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "group1.token2" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "group1.token3" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "group1.subgroup11.token4" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "group2.token5" - :type :boolean - :value true))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token1" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "group1.token2" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "group1.token3" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "group1.subgroup11.token4" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "group2.token5" + :type :boolean + :value true))) - set (ctob/get-set tokens-lib "test-token-set") - tokens-list (ctob/get-tokens set)] + tokens-list (vals (ctob/get-tokens tokens-lib (thi/id :test-token-set)))] (t/is (= (count tokens-list) 5)) (t/is (= (:name (nth tokens-list 0)) "token1")) @@ -919,34 +927,39 @@ (t/deftest update-token-in-sets (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-1) - :name "test-token-1" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-2) - :name "group1.test-token-2" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-3) - :name "group1.test-token-3" - :type :boolean - :value true))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-1) + :name "test-token-1" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-2) + :name "group1.test-token-2" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-3) + :name "group1.test-token-3" + :type :boolean + :value true))) tokens-lib' (-> tokens-lib - (ctob/update-token-in-set "test-token-set" (thi/id :test-token-2) - (fn [token] - (assoc token - :description "some description" - :value false)))) + (ctob/update-token (thi/id :test-token-set) (thi/id :test-token-2) + (fn [token] + (assoc token + :description "some description" + :value false)))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set") - token (ctob/get-token token-set (thi/id :test-token-2)) - token' (ctob/get-token token-set' (thi/id :test-token-2))] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set)) + token (ctob/get-token tokens-lib + (thi/id :test-token-set) + (thi/id :test-token-2)) + token' (ctob/get-token tokens-lib' + (thi/id :test-token-set) + (thi/id :test-token-2))] (t/is (= (ctob/set-count tokens-lib') 1)) (t/is (= (:name token') "group1.test-token-2")) @@ -957,33 +970,38 @@ (t/deftest update-token-in-sets-rename (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-1) - :name "test-token-1" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-2) - :name "group1.test-token-2" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-3) - :name "group1.test-token-3" - :type :boolean - :value true))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-1) + :name "test-token-1" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-2) + :name "group1.test-token-2" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-3) + :name "group1.test-token-3" + :type :boolean + :value true))) tokens-lib' (-> tokens-lib - (ctob/update-token-in-set "test-token-set" (thi/id :test-token-2) - (fn [token] - (assoc token - :name "group1.updated-name")))) + (ctob/update-token (thi/id :test-token-set) (thi/id :test-token-2) + (fn [token] + (assoc token + :name "group1.updated-name")))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set") - token (ctob/get-token token-set (thi/id :test-token-2)) - token' (ctob/get-token token-set' (thi/id :test-token-2))] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set)) + token (ctob/get-token tokens-lib + (thi/id :test-token-set) + (thi/id :test-token-2)) + token' (ctob/get-token tokens-lib' + (thi/id :test-token-set) + (thi/id :test-token-2))] (t/is (= (ctob/set-count tokens-lib') 1)) (t/is (= (:name token') "group1.updated-name")) @@ -994,36 +1012,43 @@ (t/deftest move-token-of-group (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-1) - :name "test-token-1" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-2) - :name "group1.test-token-2" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-3) - :name "group1.test-token-3" - :type :boolean - :value true))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-1) + :name "test-token-1" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-2) + :name "group1.test-token-2" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-3) + :name "group1.test-token-3" + :type :boolean + :value true))) tokens-lib' (-> tokens-lib - (ctob/update-token-in-set "test-token-set" (thi/id :test-token-2) - (fn [token] - (assoc token - :name "group2.updated-name")))) + (ctob/update-token (thi/id :test-token-set) (thi/id :test-token-2) + (fn [token] + (assoc token + :name "group2.updated-name")))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set") - token (ctob/get-token token-set (thi/id :test-token-2)) - token' (ctob/get-token token-set' (thi/id :test-token-2))] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set)) + token (ctob/get-token tokens-lib + (thi/id :test-token-set) + (thi/id :test-token-2)) + token' (ctob/get-token tokens-lib' + (thi/id :test-token-set) + (thi/id :test-token-2)) + tokens' (ctob/get-tokens tokens-lib' + (thi/id :test-token-set))] (t/is (= (ctob/set-count tokens-lib') 1)) - (t/is (= (d/index-of (keys (ctob/get-tokens-map token-set')) "group2.updated-name") 1)) + (t/is (= (d/index-of (keys tokens') "group2.updated-name") 1)) (t/is (= (:name token') "group2.updated-name")) (t/is (= (:description token') "")) (t/is (= (:value token') true)) @@ -1032,39 +1057,49 @@ (t/deftest delete-token-in-group (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "test-token-set")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-1) - :name "test-token-1" - :type :boolean - :value true)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (thi/new-id! :test-token-2) - :name "group1.test-token-2" - :type :boolean - :value true))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set) + :name "test-token-set")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-1) + :name "test-token-1" + :type :boolean + :value true)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :id (thi/new-id! :test-token-2) + :name "group1.test-token-2" + :type :boolean + :value true))) tokens-lib' (-> tokens-lib - (ctob/delete-token-from-set "test-token-set" (thi/id :test-token-2))) + (ctob/delete-token (thi/id :test-token-set) (thi/id :test-token-2))) - token-set (ctob/get-set tokens-lib "test-token-set") - token-set' (ctob/get-set tokens-lib' "test-token-set") - token' (ctob/get-token token-set' (thi/id :test-token-2))] + token-set (ctob/get-set tokens-lib (thi/id :test-token-set)) + token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set)) + token' (ctob/get-token tokens-lib' + (thi/id :test-token-set) + (thi/id :test-token-2)) + tokens' (ctob/get-tokens tokens-lib' + (thi/id :test-token-set))] (t/is (= (ctob/set-count tokens-lib') 1)) - (t/is (= (count (ctob/get-tokens-map token-set')) 1)) + (t/is (= (count tokens') 1)) (t/is (nil? token')) (t/is (ct/is-after? (ctob/get-modified-at token-set') (ctob/get-modified-at token-set))))) (t/deftest update-token-set-in-groups (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "token-set-1")) - (ctob/add-set (ctob/make-token-set :name "group1/token-set-2")) - (ctob/add-set (ctob/make-token-set :name "group1/token-set-3")) - (ctob/add-set (ctob/make-token-set :name "group1/subgroup11/token-set-4")) - (ctob/add-set (ctob/make-token-set :name "group2/token-set-5"))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-1) + :name "token-set-1")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-2) + :name "group1/token-set-2")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-3) + :name "group1/token-set-3")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-4) + :name "group1/subgroup11/token-set-4")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-5) + :name "group2/token-set-5"))) tokens-lib' (-> tokens-lib - (ctob/update-set "group1/token-set-2" + (ctob/update-set (thi/id :token-set-2) (fn [token-set] (ctob/set-description token-set "some description")))) @@ -1083,14 +1118,19 @@ (t/deftest rename-token-set-in-groups (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "token-set-1")) - (ctob/add-set (ctob/make-token-set :name "group1/token-set-2")) - (ctob/add-set (ctob/make-token-set :name "group1/token-set-3")) - (ctob/add-set (ctob/make-token-set :name "group1/subgroup11/token-set-4")) - (ctob/add-set (ctob/make-token-set :name "group2/token-set-5"))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-1) + :name "token-set-1")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-2) + :name "group1/token-set-2")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-3) + :name "group1/token-set-3")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-4) + :name "group1/subgroup11/token-set-4")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-5) + :name "group2/token-set-5"))) tokens-lib' (-> tokens-lib - (ctob/update-set "group1/token-set-2" + (ctob/update-set (thi/id :token-set-2) (fn [token-set] (ctob/rename token-set "group1/updated-name")))) @@ -1109,14 +1149,19 @@ (t/deftest move-token-set-of-group (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "token-set-1")) - (ctob/add-set (ctob/make-token-set :name "group1/token-set-2")) - (ctob/add-set (ctob/make-token-set :name "group1/token-set-3")) - (ctob/add-set (ctob/make-token-set :name "group1/subgroup11/token-set-4")) - #_(ctob/add-set (ctob/make-token-set :name "group2/token-set-5"))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-1) + :name "token-set-1")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-2) + :name "group1/token-set-2")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-3) + :name "group1/token-set-3")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-4) + :name "group1/subgroup11/token-set-4")) + #_(ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-5) + :name "group2/token-set-5"))) tokens-lib' (-> tokens-lib - (ctob/update-set "group1/token-set-2" + (ctob/update-set (thi/id :token-set-2) (fn [token-set] (ctob/rename token-set "group2/updated-name")))) @@ -1137,11 +1182,13 @@ (t/deftest delete-token-set-in-group (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "token-set-1")) - (ctob/add-set (ctob/make-token-set :name "group1/token-set-2"))) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-1) + :name "token-set-1")) + (ctob/add-set (ctob/make-token-set :id (thi/new-id! :token-set-2) + :name "group1/token-set-2"))) tokens-lib' (-> tokens-lib - (ctob/delete-set-path "G-group1/S-token-set-2")) + (ctob/delete-set (thi/id :token-set-2))) sets-tree' (ctob/get-set-tree tokens-lib') token-set' (get-in sets-tree' ["group1" "token-set-2"])] @@ -1151,14 +1198,18 @@ (t/is (nil? token-set')))) (t/deftest update-token-theme-in-groups - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) - (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2")) - (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-3")) - (ctob/add-theme (ctob/make-token-theme :group "group2" :name "token-theme-4"))) + (let [theme-1-id (uuid/next) + theme-2-id (uuid/next) + theme-3-id (uuid/next) + theme-4-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-theme (ctob/make-token-theme :id theme-1-id :group "" :name "token-theme-1")) + (ctob/add-theme (ctob/make-token-theme :id theme-2-id :group "group1" :name "token-theme-2")) + (ctob/add-theme (ctob/make-token-theme :id theme-3-id :group "group1" :name "token-theme-3")) + (ctob/add-theme (ctob/make-token-theme :id theme-4-id :group "group2" :name "token-theme-4"))) tokens-lib' (-> tokens-lib - (ctob/update-theme "group1" "token-theme-2" + (ctob/update-theme theme-2-id (fn [token-theme] (assoc token-theme :description "some description")))) @@ -1186,15 +1237,18 @@ (t/is (= token-groups ["group1" "group2"])))) (t/deftest rename-token-theme-in-groups - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) - (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2")) - (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-3")) - (ctob/add-theme (ctob/make-token-theme :group "group2" :name "token-theme-4"))) - + (let [theme-1-id (uuid/next) + theme-2-id (uuid/next) + theme-3-id (uuid/next) + theme-4-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-theme (ctob/make-token-theme :id theme-1-id :group "" :name "token-theme-1")) + (ctob/add-theme (ctob/make-token-theme :id theme-2-id :group "group1" :name "token-theme-2")) + (ctob/add-theme (ctob/make-token-theme :id theme-3-id :group "group1" :name "token-theme-3")) + (ctob/add-theme (ctob/make-token-theme :id theme-4-id :group "group2" :name "token-theme-4"))) tokens-lib' (-> tokens-lib - (ctob/update-theme "group1" "token-theme-2" + (ctob/update-theme theme-2-id (fn [token-theme] (assoc token-theme :name "updated-name")))) @@ -1214,14 +1268,18 @@ (t/is (ct/is-after? (:modified-at token-theme') (:modified-at token-theme))))) (t/deftest move-token-theme-of-group - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) - (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2")) - (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-3")) - #_(ctob/add-theme (ctob/make-token-theme :group "group2" :name "token-theme-4"))) + (let [theme-1-id (uuid/next) + theme-2-id (uuid/next) + theme-3-id (uuid/next) + theme-4-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-theme (ctob/make-token-theme :id theme-1-id :group "" :name "token-theme-1")) + (ctob/add-theme (ctob/make-token-theme :id theme-2-id :group "group1" :name "token-theme-2")) + (ctob/add-theme (ctob/make-token-theme :id theme-3-id :group "group1" :name "token-theme-3")) + #_(ctob/add-theme (ctob/make-token-theme :in-theme-4-id :group "group2" :name "token-theme-4"))) tokens-lib' (-> tokens-lib - (ctob/update-theme "group1" "token-theme-2" + (ctob/update-theme theme-2-id (fn [token-theme] (assoc token-theme :name "updated-name" @@ -1244,12 +1302,14 @@ (t/is (ct/is-after? (:modified-at token-theme') (:modified-at token-theme))))) (t/deftest delete-token-theme-in-group - (let [tokens-lib (-> (ctob/make-tokens-lib) - (ctob/add-theme (ctob/make-token-theme :group "" :name "token-theme-1")) - (ctob/add-theme (ctob/make-token-theme :group "group1" :name "token-theme-2"))) + (let [theme-1-id (uuid/next) + theme-2-id (uuid/next) + tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-theme (ctob/make-token-theme :id theme-1-id :group "" :name "token-theme-1")) + (ctob/add-theme (ctob/make-token-theme :id theme-2-id :group "group1" :name "token-theme-2"))) tokens-lib' (-> tokens-lib - (ctob/delete-theme "group1" "token-theme-2")) + (ctob/delete-theme theme-2-id)) themes-tree' (ctob/get-theme-tree tokens-lib') token-theme' (get-in themes-tree' ["group1" "token-theme-2"])] @@ -1263,7 +1323,7 @@ (let [json (-> (slurp "test/common_tests/types/data/tokens-single-set-legacy-example.json") (json/decode {:key-fn identity})) lib (ctob/parse-decoded-json json "single_set")] - (t/is (= '("single_set") (ctob/get-ordered-set-names lib))) + (t/is (= '("single_set") (ctob/get-set-names lib))) (t/testing "token added" (t/is (some? (ctob/get-token-by-name lib "single_set" "color.red.100"))))))) @@ -1272,7 +1332,7 @@ (let [json (-> (slurp "test/common_tests/types/data/tokens-single-set-dtcg-example.json") (json/decode {:key-fn identity})) lib (ctob/parse-decoded-json json "single_set")] - (t/is (= '("single_set") (ctob/get-ordered-set-names lib))) + (t/is (= '("single_set") (ctob/get-set-names lib))) (t/testing "token added" (t/is (some? (ctob/get-token-by-name lib "single_set" "color.red.100"))))))) @@ -1281,8 +1341,8 @@ (let [json (-> (slurp "test/common_tests/types/data/tokens-multi-set-legacy-example.json") (json/decode {:key-fn identity})) lib (ctob/parse-decoded-json json "") - token-theme (ctob/get-theme lib "group-1" "theme-1")] - (t/is (= '("core" "light" "dark" "theme") (ctob/get-ordered-set-names lib))) + token-theme (ctob/get-theme-by-name lib "group-1" "theme-1")] + (t/is (= '("core" "light" "dark" "theme") (ctob/get-set-names lib))) (t/testing "set exists in theme" (t/is (= (:group token-theme) "group-1")) (t/is (= (:name token-theme) "theme-1")) @@ -1304,15 +1364,15 @@ :value "{accent.default}" :description ""}))) (t/testing "invalid tokens got discarded" - (t/is (nil? (ctob/get-token-by-name lib "typography" "H1.Bold"))))))) + (t/is (nil? (ctob/get-token-by-name lib "theme" "boxShadow.default"))))))) #?(:clj (t/deftest parse-multi-set-dtcg-json (let [json (-> (slurp "test/common_tests/types/data/tokens-multi-set-example.json") (json/decode {:key-fn identity})) lib (ctob/parse-decoded-json json "") - token-theme (ctob/get-theme lib "group-1" "theme-1")] - (t/is (= '("core" "light" "dark" "theme") (ctob/get-ordered-set-names lib))) + token-theme (ctob/get-theme-by-name lib "group-1" "theme-1")] + (t/is (= '("core" "light" "dark" "theme") (ctob/get-set-names lib))) (t/testing "set exists in theme" (t/is (= (:group token-theme) "group-1")) (t/is (= (:name token-theme) "theme-1")) @@ -1334,7 +1394,7 @@ :value "{accent.default}" :description ""}))) (t/testing "invalid tokens got discarded" - (t/is (nil? (ctob/get-token-by-name lib "typography" "H1.Bold"))))))) + (t/is (nil? (ctob/get-token-by-name lib "theme" "boxShadow.default"))))))) #?(:clj (t/deftest parse-multi-set-dtcg-json-default-team @@ -1343,7 +1403,7 @@ lib (ctob/parse-decoded-json json "") themes (ctob/get-themes lib) first-theme (first themes)] - (t/is (= '("dark") (ctob/get-ordered-set-names lib))) + (t/is (= '("dark") (ctob/get-set-names lib))) (t/is (= 1 (count themes))) (t/testing "existing theme is default theme" (t/is (= (:group first-theme) "")) @@ -1496,12 +1556,13 @@ {:name "button.primary.background" :type :color :value "{accent.default}"})})) - (ctob/add-theme (ctob/make-token-theme :name "theme-1" + (ctob/add-theme (ctob/make-token-theme :id (thi/new-id! :theme-1) + :name "theme-1" :group "group-1" :external-id "test-id-01" :modified-at now :sets #{"core"})) - (ctob/toggle-theme-active? "group-1" "theme-1")) + (ctob/toggle-theme-active? (thi/id :theme-1))) result (ctob/export-dtcg-json tokens-lib) expected {"$themes" [{"description" "" "group" "group-1" @@ -1549,12 +1610,13 @@ {:name "button.primary.background" :type :color :value "{accent.default}"})})) - (ctob/add-theme (ctob/make-token-theme :name "theme-1" + (ctob/add-theme (ctob/make-token-theme :id (thi/new-id! :theme-1) + :name "theme-1" :group "group-1" :external-id "test-id-01" :modified-at now :sets #{"some/set"})) - (ctob/toggle-theme-active? "group-1" "theme-1")) + (ctob/toggle-theme-active? (thi/id :theme-1))) result (ctob/export-dtcg-multi-file tokens-lib) expected {"$themes.json" [{"description" "" "group" "group-1" @@ -1580,3 +1642,254 @@ "$type" "color" "$description" ""}}}}}] (t/is (= expected result))))) + +#?(:clj + (t/deftest parse-typography-tokens + (let [json (-> (slurp "test/common_tests/types/data/tokens-typography-example.json") + (json/decode {:key-fn identity})) + lib (ctob/parse-decoded-json json "typography-test")] + + (t/testing "typography token with composite value" + (let [token (ctob/get-token-by-name lib "typography-test" "test.typo")] + (t/is (some? token)) + (t/is (= (:type token) :typography)) + (t/is (= (:value token) {:font-weight "100" + :font-size "16px" + :letter-spacing "0.1em"})) + (t/is (= (:description token) "")))) + + (t/testing "typography token with string reference" + (let [token (ctob/get-token-by-name lib "typography-test" "test.typo2")] + (t/is (some? token)) + (t/is (= (:type token) :typography)) + (t/is (= (:value token) "{typo}")) + (t/is (= (:description token) "")))) + + (t/testing "typography token referencing single token" + (let [token (ctob/get-token-by-name lib "typography-test" "test.typo-to-single")] + (t/is (some? token)) + (t/is (= (:type token) :typography)) + (t/is (= (:value token) "{font-weight}")) + (t/is (= (:description token) "")))) + + (t/testing "typography token with empty value" + (let [token (ctob/get-token-by-name lib "typography-test" "test.test-empty")] + (t/is (some? token)) + (t/is (= (:type token) :typography)) + (t/is (= (:value token) {})) + (t/is (= (:description token) "")))) + + (t/testing "typography token with complex value and description" + (let [token (ctob/get-token-by-name lib "typography-test" "test.typo-complex")] + (t/is (some? token)) + (t/is (= (:type token) :typography)) + (t/is (= (:value token) {:font-weight "bold" + :font-size "24px" + :letter-spacing "0.05em" + :line-height "100%" + :font-family ["Arial", "sans-serif"] + :text-case "uppercase"})) + (t/is (= (:description token) "A complex typography token")))) + + (t/testing "individual font tokens still work" + (let [font-weight-token (ctob/get-token-by-name lib "typography-test" "test.font-weight") + font-size-token (ctob/get-token-by-name lib "typography-test" "test.font-size")] + (t/is (some? font-weight-token)) + (t/is (= (:type font-weight-token) :font-weight)) + (t/is (= (:value font-weight-token) "200")) + + (t/is (some? font-size-token)) + (t/is (= (:type font-size-token) :font-size)) + (t/is (= (:value font-size-token) "18px")))) + + (t/testing "typography token with string font family gets transformed to array" + (let [token (ctob/get-token-by-name lib "typography-test" "test.typo-with-string-font-family")] + (t/is (some? token)) + (t/is (= (:type token) :typography)) + (t/is (= (:value token) {:font-weight "600" + :font-size "20px" + :font-family ["Roboto" "Helvetica" "sans-serif"]})) + (t/is (= (:description token) "Typography token with string font family"))))))) + +#?(:clj + (t/deftest export-typography-tokens + (let [tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-set (ctob/make-token-set + :name "typography-set" + :tokens {"typo.composite" + (ctob/make-token + {:name "typo.composite" + :type :typography + :value {:font-weight "bold" + :font-size "16px" + :letter-spacing "0.1em"} + :description "A composite typography token"}) + "typo.reference" + (ctob/make-token + {:name "typo.reference" + :type :typography + :value "{other-token}"}) + "typo.empty" + (ctob/make-token + {:name "typo.empty" + :type :typography + :value {}})}))) + result (ctob/export-dtcg-json tokens-lib) + typography-set (get result "typography-set")] + + (t/testing "composite typography token export" + (let [composite-token (get-in typography-set ["typo" "composite"])] + (t/is (= (get composite-token "$type") "typography")) + (t/is (= (get composite-token "$value") {"fontWeights" "bold" + "fontSizes" "16px" + "letterSpacing" "0.1em"})) + (t/is (= (get composite-token "$description") "A composite typography token")))) + + (t/testing "reference typography token export" + (let [reference-token (get-in typography-set ["typo" "reference"])] + (t/is (= (get reference-token "$type") "typography")) + (t/is (= (get reference-token "$value") "{other-token}")) + (t/is (= (get reference-token "$description") "")))) + + (t/testing "empty typography token export" + (let [empty-token (get-in typography-set ["typo" "empty"])] + (t/is (= (get empty-token "$type") "typography")) + (t/is (= (get empty-token "$value") {})) + (t/is (= (get empty-token "$description") ""))))))) + +#?(:clj + (t/deftest typography-token-round-trip + (let [original-lib (-> (ctob/make-tokens-lib) + (ctob/add-set (ctob/make-token-set + :name "test-set" + :tokens {"typo.test" + (ctob/make-token + {:name "typo.test" + :type :typography + :value {:font-weight "700" + :font-size "20px" + :letter-spacing "0.05em" + :font-family ["Helvetica", "sans-serif"]} + :description "Round trip test"}) + "typo.ref" + (ctob/make-token + {:name "typo.ref" + :type :typography + :value "{typo.test}"})}))) + ;; Export to JSON format + exported (ctob/export-dtcg-json original-lib) + ;; Import back + imported-lib (ctob/parse-decoded-json exported "")] + + (t/testing "round trip preserves typography tokens" + (let [original-token (ctob/get-token-by-name original-lib "test-set" "typo.test") + imported-token (ctob/get-token-by-name imported-lib "test-set" "typo.test")] + (t/is (some? imported-token)) + (t/is (= (:type imported-token) (:type original-token))) + (t/is (= (:value imported-token) (:value original-token))) + (t/is (= (:description imported-token) (:description original-token)))) + + (let [original-ref (ctob/get-token-by-name original-lib "test-set" "typo.ref") + imported-ref (ctob/get-token-by-name imported-lib "test-set" "typo.ref")] + (t/is (some? imported-ref)) + (t/is (= (:type imported-ref) (:type original-ref))) + (t/is (= (:value imported-ref) (:value original-ref)))))))) + +#?(:clj + (t/deftest parse-font-family-tokens + (let [json (-> (slurp "test/common_tests/types/data/tokens-font-family-example.json") + (json/decode {:key-fn identity})) + lib (ctob/parse-decoded-json json "font-family-test")] + + (t/testing "string font family token gets split into array" + (let [token (ctob/get-token-by-name lib "font-family-test" "fonts.string-font-family")] + (t/is (some? token)) + (t/is (= (:type token) :font-family)) + (t/is (= (:value token) ["Arial" "Helvetica" "sans-serif"])) + (t/is (= (:description token) "A font family defined as a string")))) + + (t/testing "array font family token stays as array" + (let [token (ctob/get-token-by-name lib "font-family-test" "fonts.array-font-family")] + (t/is (some? token)) + (t/is (= (:type token) :font-family)) + (t/is (= (:value token) ["Inter" "system-ui" "sans-serif"])) + (t/is (= (:description token) "A font family defined as an array")))) + + (t/testing "single font family string gets converted to array" + (let [token (ctob/get-token-by-name lib "font-family-test" "fonts.single-font-family")] + (t/is (some? token)) + (t/is (= (:type token) :font-family)) + (t/is (= (:value token) ["Georgia"])) + (t/is (= (:description token) "")))) + + (t/testing "complex font names with spaces handled correctly" + (let [token (ctob/get-token-by-name lib "font-family-test" "fonts.font-with-spaces")] + (t/is (some? token)) + (t/is (= (:type token) :font-family)) + (t/is (= (:value token) ["Source Sans Pro" "Arial" "sans-serif"]))))))) + +#?(:clj + (t/deftest export-font-family-tokens + (let [tokens-lib (-> (ctob/make-tokens-lib) + (ctob/add-set (ctob/make-token-set + :name "font-family-set" + :tokens {"fonts.array-family" + (ctob/make-token + {:name "fonts.array-family" + :type :font-family + :value ["Roboto" "sans-serif"] + :description "An array font family token"}) + "fonts.single-family" + (ctob/make-token + {:name "fonts.single-family" + :type :font-family + :value ["Georgia"]})}))) + result (ctob/export-dtcg-json tokens-lib) + font-family-set (get result "font-family-set")] + + (t/testing "array font family token export" + (let [array-token (get-in font-family-set ["fonts" "array-family"])] + (t/is (= (get array-token "$type") "fontFamilies")) + (t/is (= (get array-token "$value") ["Roboto" "sans-serif"])) + (t/is (= (get array-token "$description") "An array font family token")))) + + (t/testing "single font family token export" + (let [single-token (get-in font-family-set ["fonts" "single-family"])] + (t/is (= (get single-token "$type") "fontFamilies")) + (t/is (= (get single-token "$value") ["Georgia"])) + (t/is (= (get single-token "$description") ""))))))) + +#?(:clj + (t/deftest font-family-token-round-trip + (let [original-lib (-> (ctob/make-tokens-lib) + (ctob/add-set (ctob/make-token-set + :name "test-set" + :tokens {"fonts.test-array" + (ctob/make-token + {:name "fonts.test-array" + :type :font-family + :value ["Arial" "Helvetica" "sans-serif"] + :description "Round trip test"}) + "fonts.test-single" + (ctob/make-token + {:name "fonts.test-single" + :type :font-family + :value ["Times New Roman"]})}))) + ;; Export to JSON format + exported (ctob/export-dtcg-json original-lib) + ;; Import back + imported-lib (ctob/parse-decoded-json exported "")] + + (t/testing "round trip preserves font family tokens" + (let [original-token (ctob/get-token-by-name original-lib "test-set" "fonts.test-array") + imported-token (ctob/get-token-by-name imported-lib "test-set" "fonts.test-array")] + (t/is (some? imported-token)) + (t/is (= (:type imported-token) (:type original-token))) + (t/is (= (:value imported-token) (:value original-token))) + (t/is (= (:description imported-token) (:description original-token)))) + + (let [original-single (ctob/get-token-by-name original-lib "test-set" "fonts.test-single") + imported-single (ctob/get-token-by-name imported-lib "test-set" "fonts.test-single")] + (t/is (some? imported-single)) + (t/is (= (:type imported-single) (:type original-single))) + (t/is (= (:value imported-single) (:value original-single)))))))) diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 96546b6ea8..b23a481817 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -73,7 +73,7 @@ RUN set -eux; \ FROM base AS setup-node -ENV NODE_VERSION=v22.19.0 \ +ENV NODE_VERSION=v22.21.1 \ PATH=/opt/node/bin:$PATH RUN set -eux; \ @@ -113,12 +113,12 @@ RUN set -eux; \ ARCH="$(dpkg --print-architecture)"; \ case "${ARCH}" in \ aarch64|arm64) \ - ESUM='6f8725d186d05c627176db9c46c732a6ef3ba41d9e9b3775c4727fc8ac642bb2'; \ - BINARY_URL='https://github.com/adoptium/temurin24-binaries/releases/download/jdk-24.0.2%2B12/OpenJDK24U-jdk_aarch64_linux_hotspot_24.0.2_12.tar.gz'; \ + ESUM='8c5321f16d9f1d8149f83e4e9ff8ca5d9e94320b92d205e6db42a604de3d1140'; \ + BINARY_URL='https://cdn.azul.com/zulu/bin/zulu25.30.17-ca-jdk25.0.1-linux_aarch64.tar.gz'; \ ;; \ amd64|x86_64) \ - ESUM='aea1cc55e51cf651c85f2f00ad021603fe269c4bb6493fa97a321ad770c9b096'; \ - BINARY_URL='https://github.com/adoptium/temurin24-binaries/releases/download/jdk-24.0.2%2B12/OpenJDK24U-jdk_x64_linux_hotspot_24.0.2_12.tar.gz'; \ + ESUM='471b3e62bdffaed27e37005d842d8639f10d244ccce1c7cdebf7abce06c8313e'; \ + BINARY_URL='https://cdn.azul.com/zulu/bin/zulu25.30.17-ca-jdk25.0.1-linux_x64.tar.gz'; \ ;; \ *) \ echo "Unsupported arch: ${ARCH}"; \ @@ -149,18 +149,24 @@ FROM base AS setup-rust ENV PATH=/opt/cargo/bin:$PATH \ RUSTUP_HOME=/opt/rustup \ CARGO_HOME=/opt/cargo \ - RUSTUP_VERSION=1.27.1 \ - RUST_VERSION=1.85.0 \ + RUSTUP_VERSION=1.28.2 \ + RUST_VERSION=1.91.0 \ EMSCRIPTEN_VERSION=4.0.6 WORKDIR /opt RUN set -eux; \ # Same steps as in Rust official Docker image https://github.com/rust-lang/docker-rust/blob/9f287282d513a84cb7c7f38f197838f15d37b6a9/1.81.0/bookworm/Dockerfile - dpkgArch="$(dpkg --print-architecture)"; \ - case "${dpkgArch##*-}" in \ - amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='6aeece6993e902708983b209d04c0d1dbb14ebb405ddb87def578d41f920f56d' ;; \ - arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='1cffbf51e63e634c746f741de50649bbbcbd9dbe1de363c9ecef64e278dba2b2' ;; \ + arch="$(dpkg --print-architecture)"; \ + case "$arch" in \ + 'amd64') \ + rustArch='x86_64-unknown-linux-gnu'; \ + rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c'; \ + ;; \ + 'arm64') \ + rustArch='aarch64-unknown-linux-gnu'; \ + rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c'; \ + ;; \ *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ esac; \ wget "https://static.rust-lang.org/rustup/archive/${RUSTUP_VERSION}/${rustArch}/rustup-init"; \ @@ -183,8 +189,8 @@ RUN set -eux; \ FROM base AS setup-utils -ENV CLJKONDO_VERSION=2025.01.16 \ - BABASHKA_VERSION=1.12.207 \ +ENV CLJKONDO_VERSION=2025.07.28 \ + BABASHKA_VERSION=1.12.208 \ CLJFMT_VERSION=0.13.1 RUN set -ex; \ diff --git a/docker/devenv/files/start-tmux.sh b/docker/devenv/files/start-tmux.sh index 29d2c5bbbe..69e0423f22 100755 --- a/docker/devenv/files/start-tmux.sh +++ b/docker/devenv/files/start-tmux.sh @@ -39,7 +39,7 @@ tmux new-window -t penpot:3 -n 'exporter' tmux select-window -t penpot:3 tmux send-keys -t penpot 'cd penpot/exporter' enter C-l tmux send-keys -t penpot 'rm -f target/app.js*' enter C-l -tmux send-keys -t penpot 'clojure -M:dev:shadow-cljs watch main' enter +tmux send-keys -t penpot 'yarn run watch' enter tmux split-window -v tmux send-keys -t penpot 'cd penpot/exporter' enter C-l diff --git a/docker/images/Dockerfile.backend b/docker/images/Dockerfile.backend index 2a3f8f1ccc..b47ddc09ea 100644 --- a/docker/images/Dockerfile.backend +++ b/docker/images/Dockerfile.backend @@ -5,7 +5,7 @@ ENV LANG='C.UTF-8' \ LC_ALL='C.UTF-8' \ JAVA_HOME="/opt/jdk" \ DEBIAN_FRONTEND=noninteractive \ - NODE_VERSION=v22.19.0 \ + NODE_VERSION=v22.21.1 \ TZ=Etc/UTC RUN set -ex; \ @@ -46,12 +46,12 @@ RUN set -eux; \ ARCH="$(dpkg --print-architecture)"; \ case "${ARCH}" in \ aarch64|arm64) \ - ESUM='6f8725d186d05c627176db9c46c732a6ef3ba41d9e9b3775c4727fc8ac642bb2'; \ - BINARY_URL='https://github.com/adoptium/temurin24-binaries/releases/download/jdk-24.0.2%2B12/OpenJDK24U-jdk_aarch64_linux_hotspot_24.0.2_12.tar.gz'; \ + ESUM='8c5321f16d9f1d8149f83e4e9ff8ca5d9e94320b92d205e6db42a604de3d1140'; \ + BINARY_URL='https://cdn.azul.com/zulu/bin/zulu25.30.17-ca-jdk25.0.1-linux_aarch64.tar.gz'; \ ;; \ amd64|x86_64) \ - ESUM='aea1cc55e51cf651c85f2f00ad021603fe269c4bb6493fa97a321ad770c9b096'; \ - BINARY_URL='https://github.com/adoptium/temurin24-binaries/releases/download/jdk-24.0.2%2B12/OpenJDK24U-jdk_x64_linux_hotspot_24.0.2_12.tar.gz'; \ + ESUM='471b3e62bdffaed27e37005d842d8639f10d244ccce1c7cdebf7abce06c8313e'; \ + BINARY_URL='https://cdn.azul.com/zulu/bin/zulu25.30.17-ca-jdk25.0.1-linux_x64.tar.gz'; \ ;; \ *) \ echo "Unsupported arch: ${ARCH}"; \ @@ -87,14 +87,9 @@ RUN set -ex; \ apt-get -qq upgrade; \ apt-get -qqy --no-install-recommends install \ ca-certificates \ + curl \ fontconfig \ fontforge \ - python3 \ - python3-tabulate \ - tzdata \ - woff-tools \ - woff2 \ - \ libfontconfig1 \ libfreetype6 \ libglib2.0-0 \ @@ -113,6 +108,11 @@ RUN set -ex; \ libxml2 \ libzip4t64 \ libzstd1 \ + python3 \ + python3-tabulate \ + tzdata \ + woff-tools \ + woff2 \ ; \ find tmp/usr/share/zoneinfo/* -type d ! -name 'Etc' |xargs rm -rf; \ rm -rf /var/lib /var/cache; \ @@ -126,7 +126,9 @@ RUN set -ex; \ COPY --from=build /opt/jre /opt/jre COPY --from=build /opt/node /opt/node COPY --from=penpotapp/imagemagick:7.1.2-0 /opt/imagick /opt/imagick -COPY --chown=penpot:penpot ./bundle-backend/ /opt/penpot/backend/ + +ARG BUNDLE_PATH="./bundle-backend/" +ADD --chown=penpot:penpot $BUNDLE_PATH /opt/penpot/backend/ USER penpot:penpot WORKDIR /opt/penpot/backend diff --git a/docker/images/Dockerfile.exporter b/docker/images/Dockerfile.exporter index ab01ef2a4c..c0d355fe8a 100644 --- a/docker/images/Dockerfile.exporter +++ b/docker/images/Dockerfile.exporter @@ -3,7 +3,7 @@ LABEL maintainer="Penpot " ENV LANG=en_US.UTF-8 \ LC_ALL=en_US.UTF-8 \ - NODE_VERSION=v22.19.0 \ + NODE_VERSION=v22.21.1 \ DEBIAN_FRONTEND=noninteractive \ PATH=/opt/node/bin:$PATH @@ -89,7 +89,8 @@ RUN set -eux; \ mkdir -p /opt/penpot; \ chown -R penpot:penpot /opt/penpot; -ADD --chown=penpot:penpot ./bundle-exporter/ /opt/penpot/exporter +ARG BUNDLE_PATH="./bundle-exporter/" +ADD --chown=penpot:penpot $BUNDLE_PATH /opt/penpot/exporter/ WORKDIR /opt/penpot/exporter USER penpot:penpot diff --git a/docker/images/Dockerfile.frontend b/docker/images/Dockerfile.frontend index e6e5e0fadb..3b5d7db9fc 100644 --- a/docker/images/Dockerfile.frontend +++ b/docker/images/Dockerfile.frontend @@ -6,14 +6,18 @@ USER root RUN set -ex; \ useradd -U -M -u 1001 -s /bin/false -d /opt/penpot penpot; \ mkdir -p /opt/data/assets; \ - chown -R penpot:penpot /opt/data; + chown -R penpot:penpot /opt/data; \ + mkdir -p /etc/nginx/overrides/http.d/; \ + mkdir -p /etc/nginx/overrides/server.d/; \ + mkdir -p /etc/nginx/overrides/location.d/; -ADD ./bundle-frontend/ /var/www/app/ +ARG BUNDLE_PATH="./bundle-frontend/" +ADD $BUNDLE_PATH /var/www/app/ ADD ./files/config.js /var/www/app/js/config.js -ADD ./files/nginx.conf /etc/nginx/nginx.conf.template -ADD ./files/nginx-proxies.conf /etc/nginx/nginx-proxies.conf -ADD ./files/resolvers.conf /etc/nginx/overrides.d/resolvers.conf.template +ADD ./files/nginx.conf.template /tmp/nginx.conf.template +ADD ./files/nginx-resolvers.conf.template /tmp/resolvers.conf.template ADD ./files/nginx-mime.types /etc/nginx/mime.types +ADD ./files/nginx-external-locations.conf /etc/nginx/overrides/location.d/external-locations.conf ADD ./files/nginx-entrypoint.sh /entrypoint.sh RUN chown -R 1001:0 /var/cache/nginx; \ diff --git a/docker/images/Dockerfile.storybook b/docker/images/Dockerfile.storybook new file mode 100644 index 0000000000..24e6acc5cf --- /dev/null +++ b/docker/images/Dockerfile.storybook @@ -0,0 +1,20 @@ +FROM nginxinc/nginx-unprivileged:1.29.1 +LABEL maintainer="Penpot " + +USER root + +RUN set -ex; \ + useradd -U -M -u 1001 -s /bin/false -d /opt/penpot penpot; + +ARG BUNDLE_PATH="./bundle-storybook/" +COPY $BUNDLE_PATH /var/www/ +COPY ./files/nginx.storybook.conf /etc/nginx/conf.d/default.conf + +RUN chown -R 1001:0 /var/cache/nginx; \ + chmod -R g+w /var/cache/nginx; \ + chown -R 1001:0 /etc/nginx; \ + chmod -R g+w /etc/nginx; \ + chown -R 1001:0 /var/www; \ + chmod -R g+w /var/www; + +USER penpot:penpot diff --git a/docker/images/docker-compose.yaml b/docker/images/docker-compose.yaml index 59601af625..f146313976 100644 --- a/docker/images/docker-compose.yaml +++ b/docker/images/docker-compose.yaml @@ -247,6 +247,11 @@ services: networks: - penpot + environment: + # You can increase the max memory size if you have sufficient resources, + # although this should not be necessary. + - VALKEY_EXTRA_FLAGS=--maxmemory 128mb --maxmemory-policy volatile-lfu + ## A mailcatch service, used as temporal SMTP server. You can access via HTTP to the ## port 1080 for read all emails the penpot platform has sent. Should be only used as a ## temporal solution while no real SMTP provider is configured. diff --git a/docker/images/files/nginx-entrypoint.sh b/docker/images/files/nginx-entrypoint.sh index dff065af50..1c6621fba3 100644 --- a/docker/images/files/nginx-entrypoint.sh +++ b/docker/images/files/nginx-entrypoint.sh @@ -5,10 +5,8 @@ ######################################### if [[ $PENPOT_FLAGS == *"enable-air-gapped-conf"* ]]; then - export INCLUDE_PROXIES="" + rm /etc/nginx/overrides/location.d/external-locations.conf; export PENPOT_FLAGS="$PENPOT_FLAGS disable-google-fonts-provider disable-dashboard-templates-section" -else - export INCLUDE_PROXIES="include /etc/nginx/nginx-proxies.conf;" fi ######################################### @@ -17,30 +15,27 @@ fi update_flags() { if [ -n "$PENPOT_FLAGS" ]; then - sed -i \ + echo "$(sed \ -e "s|^//var penpotFlags = .*;|var penpotFlags = \"$PENPOT_FLAGS\";|g" \ - "$1" + "$1")" > "$1" fi } update_flags /var/www/app/js/config.js - - ######################################### ## Nginx Config ######################################### export PENPOT_BACKEND_URI=${PENPOT_BACKEND_URI:-http://penpot-backend:6060} export PENPOT_EXPORTER_URI=${PENPOT_EXPORTER_URI:-http://penpot-exporter:6061} +export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=${PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE:-367001600} # Default to 350MiB +envsubst "\$PENPOT_BACKEND_URI,\$PENPOT_EXPORTER_URI,\$PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE" \ + < /tmp/nginx.conf.template > /etc/nginx/nginx.conf + PENPOT_DEFAULT_INTERNAL_RESOLVER="$(awk 'BEGIN{ORS=" "} $1=="nameserver" { sub(/%.*$/,"",$2); print ($2 ~ ":")? "["$2"]": $2}' /etc/resolv.conf)" export PENPOT_INTERNAL_RESOLVER=${PENPOT_INTERNAL_RESOLVER:-$PENPOT_DEFAULT_INTERNAL_RESOLVER} -export PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE=${PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE:-367001600} # Default to 350MiB - -envsubst "\$PENPOT_BACKEND_URI,\$PENPOT_EXPORTER_URI,\$PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE,\$INCLUDE_PROXIES" \ - < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf - envsubst "\$PENPOT_INTERNAL_RESOLVER" \ - < /etc/nginx/overrides.d/resolvers.conf.template > /etc/nginx/overrides.d/resolvers.conf + < /tmp/resolvers.conf.template > /etc/nginx/overrides/http.d/resolvers.conf exec "$@"; diff --git a/docker/images/files/nginx-proxies.conf b/docker/images/files/nginx-external-locations.conf similarity index 100% rename from docker/images/files/nginx-proxies.conf rename to docker/images/files/nginx-external-locations.conf diff --git a/docker/images/files/resolvers.conf b/docker/images/files/nginx-resolvers.conf.template similarity index 100% rename from docker/images/files/resolvers.conf rename to docker/images/files/nginx-resolvers.conf.template diff --git a/docker/images/files/nginx.conf b/docker/images/files/nginx.conf.template similarity index 85% rename from docker/images/files/nginx.conf rename to docker/images/files/nginx.conf.template index 053b18144e..8b2d84556d 100644 --- a/docker/images/files/nginx.conf +++ b/docker/images/files/nginx.conf.template @@ -1,10 +1,10 @@ worker_processes auto; pid /tmp/nginx.pid; -include /etc/nginx/modules-enabled/*.conf; +include /etc/nginx/overrides/main.d/*.conf; events { worker_connections 2048; - # multi_accept on; + multi_accept on; } http { @@ -33,6 +33,11 @@ http { error_log /dev/stderr; access_log /dev/stdout; + proxy_connect_timeout 300s; + proxy_send_timeout 300s; + proxy_read_timeout 300s; + send_timeout 300s; + gzip on; gzip_vary on; gzip_proxied any; @@ -41,7 +46,7 @@ http { gzip_buffers 16 8k; gzip_http_version 1.1; - gzip_types text/plain text/css text/javascript application/javascript application/json application/transit+json; + gzip_types text/plain text/css text/javascript application/javascript application/json application/transit+json image/svg+xml; proxy_buffer_size 16k; proxy_busy_buffers_size 24k; # essentially, proxy_buffer_size + 2 small buffers of 4k @@ -57,7 +62,14 @@ http { proxy_cache_valid any 48h; proxy_cache_key "$host$request_uri"; - include /etc/nginx/overrides.d/*.conf; + proxy_http_version 1.1; + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Scheme $scheme; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + include /etc/nginx/overrides/http.d/*.conf; server { listen 8080 default_server; @@ -66,13 +78,6 @@ http { client_max_body_size $PENPOT_HTTP_SERVER_MAX_MULTIPART_BODY_SIZE; charset utf-8; - proxy_http_version 1.1; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - etag off; root /var/www/app/; @@ -119,12 +124,10 @@ http { location /api { proxy_pass $PENPOT_BACKEND_URI/api; + proxy_buffering off; } location /readyz { - proxy_http_version 1.1; - proxy_set_header Host $http_host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass $PENPOT_BACKEND_URI$request_uri; } @@ -134,8 +137,10 @@ http { proxy_pass $PENPOT_BACKEND_URI/ws/notifications; } + include /etc/nginx/overrides/server.d/*.conf; + location / { - $INCLUDE_PROXIES + include /etc/nginx/overrides/location.d/*.conf; location ~ ^/js/config.js$ { add_header Cache-Control "no-store, no-cache, max-age=0" always; diff --git a/docker/images/files/nginx.storybook.conf b/docker/images/files/nginx.storybook.conf new file mode 100644 index 0000000000..efccfb5f95 --- /dev/null +++ b/docker/images/files/nginx.storybook.conf @@ -0,0 +1,27 @@ +server { + listen 8080 default_server; + server_name _; + + charset utf-8; + etag off; + + gzip on; + gzip_static on; + gzip_types text/plain text/css application/javascript application/json application/vnd.api+json application/xml application/x-javascript text/xml image/svg+xml; + gzip_proxied any; + gzip_comp_level 6; + gzip_buffers 16 8k; + gzip_http_version 1.1; + gzip_min_length 256; + gzip_vary on; + + error_log /dev/stderr; + access_log /dev/stdout; + + root /var/www; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } +} diff --git a/docker/images/nginx.storybook.conf b/docker/images/nginx.storybook.conf new file mode 100644 index 0000000000..fb7106dc90 --- /dev/null +++ b/docker/images/nginx.storybook.conf @@ -0,0 +1,27 @@ +server { + listen 8080 default_server; + server_name _; + + charset utf-8; + etag off; + + gzip on; + gzip_static on; + gzip_types text/plain text/css application/javascript application/json application/vnd.api+json application/xml application/x-javascript text/xml image/svg+xml; + gzip_proxied any; + gzip_comp_level 6; + gzip_buffers 16 8k; + gzip_http_version 1.1; + gzip_min_length 256; + gzip_vary on; + + error_log /dev/stderr; + access_log /dev/stdout; + + root /var/www; + index index.html; + + location / { + try_files $uri $uri/ /index.html; + } +} diff --git a/docs/img/design-tokens/34-tokens-composite-typography-alias.webp b/docs/img/design-tokens/34-tokens-composite-typography-alias.webp new file mode 100644 index 0000000000..27e83e9f7d Binary files /dev/null and b/docs/img/design-tokens/34-tokens-composite-typography-alias.webp differ diff --git a/docs/img/design-tokens/35-tokens-composite-typography-lineheight.webp b/docs/img/design-tokens/35-tokens-composite-typography-lineheight.webp new file mode 100644 index 0000000000..0f18608d7a Binary files /dev/null and b/docs/img/design-tokens/35-tokens-composite-typography-lineheight.webp differ diff --git a/docs/img/design-tokens/36-tokens-composite-typography.webp b/docs/img/design-tokens/36-tokens-composite-typography.webp new file mode 100644 index 0000000000..fe13f798a6 Binary files /dev/null and b/docs/img/design-tokens/36-tokens-composite-typography.webp differ diff --git a/docs/technical-guide/configuration.md b/docs/technical-guide/configuration.md index 86f3fedd53..a74ae84178 100644 --- a/docs/technical-guide/configuration.md +++ b/docs/technical-guide/configuration.md @@ -23,7 +23,7 @@ Flags and evironment variables are also used together; for example: ```bash # This flag enables the use of SMTP email -PENPOT_FLAGS: enable-smtp +PENPOT_FLAGS: [...] enable-smtp # These environment variables configure the specific SMPT service # Backend @@ -36,7 +36,7 @@ the exporter, or all of them; on the other hand, **environment variables** are c each specific service. For example: ```bash -PENPOT_FLAGS: enable-login-with-google +PENPOT_FLAGS: [...] enable-login-with-google # Backend PENPOT_GOOGLE_CLIENT_ID: @@ -56,7 +56,7 @@ Penpot uses anonymous telemetries from the self-hosted instances to improve the Consider sharing these anonymous telemetries enabling the corresponding flag: ```bash -PENPOT_FLAGS: enable-telemetries +PENPOT_FLAGS: [...] enable-telemetries ``` ## Registration and authentication @@ -402,7 +402,7 @@ This is implemented as specific locations in the penpot-front Nginx. If your org in a 100% air-gapped environment, you can use the following configuration: ```bash -PENPOT_FLAGS: enable-air-gapped-conf +PENPOT_FLAGS: [...] enable-air-gapped-conf ``` When Penpot starts, it will leave out the Nginx configuration related to external requests. This means that, @@ -459,11 +459,15 @@ POSTGRES_PASSWORD: penpot ### Storage -Storage refers to storing the user uploaded assets. +Storage refers to storing the user uploaded different objects in Penpot (assets, file data,...). -Assets storage is implemented using "plugable" backends. Currently there are two +Objects storage is implemented using "plugable" backends. Currently there are two backends available: fs and s3 (for AWS S3). +__Since version 2.11.0__ +The configuration variables related to storage has been renamed, `PENPOT_STORAGE_ASSETS_*` are now `PENPOT_OBJECTS_STORAGE_*`. +`PENPOT_ASSETS_STORAGE_BACKEND` becomes `PENPOT_OBJECTS_STORAGE_BACKEND` and its values now are `fs` and `s3` instead of `assets-fs` or `assets-s3`. + #### FS Backend (default) This is the default backend when you use the official docker images and the default @@ -471,8 +475,8 @@ configuration looks like this: ```bash # Backend -PENPOT_ASSETS_STORAGE_BACKEND: assets-fs -PENPOT_STORAGE_ASSETS_FS_DIRECTORY: /opt/data/assets +PENPOT_OBJECTS_STORAGE_BACKEND: fs +PENPOT_OBJECTS_STORAGE_FS_DIRECTORY: /opt/data/objects ``` The main downside of this backend is the hard dependency on nginx approach to serve files @@ -485,7 +489,7 @@ configuration file][4] used in the docker images. #### AWS S3 Backend -This backend uses AWS S3 bucket for store the user uploaded assets. For use it you should +This backend uses AWS S3 bucket for store the user uploaded objects. For use it you should have an appropriate account on AWS cloud and have the credentials, region and the bucket. This is how configuration looks for S3 backend: @@ -494,18 +498,36 @@ This is how configuration looks for S3 backend: # Backend AWS_ACCESS_KEY_ID: AWS_SECRET_ACCESS_KEY: -PENPOT_ASSETS_STORAGE_BACKEND: assets-s3 -PENPOT_STORAGE_ASSETS_S3_REGION: -PENPOT_STORAGE_ASSETS_S3_BUCKET: +PENPOT_OBJECTS_STORAGE_BACKEND: s3 +PENPOT_OBJECTS_STORAGE_S3_REGION: +PENPOT_OBJECTS_STORAGE_S3_BUCKET: # Optional if you want to use it with non AWS, S3 compatible service: -PENPOT_STORAGE_ASSETS_S3_ENDPOINT: +PENPOT_OBJECTS_STORAGE_S3_ENDPOINT: ```

These settings are equally useful if you have a Minio storage system.

+### File Data Storage + +__Since version 2.11.0__ + +You can change the default file data storage backend with `PENPOT_FILE_DATA_BACKEND` environment variable. Possible values are: + +- `legacy-db`: the current default backend, continues storing the file data of files and snapshots in the same location as previous versions of Penpot (< 2.11.0), this is a conservative default behaviour and will be changed to `db` in next versions. +- `db`: stores the file data on an specific table (the future default backend). +- `storage`: stores the file data using the objects storage system (S3 or FS, depending on which one is configured) + +This also comes with an additional feature that allows offload the "inactive" files on file storage backend and leaves the database only for the active files. To enable it, you should use the `enable-tiered-file-data-storage` flag and `db` as file data storage backend. + +```bash +# Backend +PENPOT_FLAGS: [...] enable-tiered-file-data-storage +PENPOT_FILE_DATA_BACKEND: db +``` + ### Autosave By default, Penpot stores manually saved versions indefinitely; these can be found in the History tab and can be renamed, restored, deleted, etc. Additionally, the default behavior of on-premise instances is to not keep automatic version history. This automatic behavior can be modified and adapted to each on-premise installation with the corresponding configuration. @@ -517,7 +539,7 @@ You need to be very careful when configuring automatic versioning, as it can sig This is how configuration looks for auto-file-snapshot ```bash -PENPOT_FLAGS: enable-auto-file-snapshot # Enable automatic version saving +PENPOT_FLAGS: [...] enable-auto-file-snapshot # Enable automatic version saving # Backend PENPOT_AUTO_FILE_SNAPSHOT_EVERY: 5 # How many save operations trigger the auto-save-version? diff --git a/docs/technical-guide/developer/ui.md b/docs/technical-guide/developer/ui.md index ec2cd64ca8..86bae426b3 100644 --- a/docs/technical-guide/developer/ui.md +++ b/docs/technical-guide/developer/ui.md @@ -234,7 +234,7 @@ Use variables from `frontend/src/app/main/ui/ds/spacing.scss`. These are predefi For fixed dimensions (e.g., modals' widths) defined by design and not layout-driven, use or define variables in `frontend/src/app/main/ui/ds/_sizes.scss`. To use them: ```scss -@use "../_sizes.scss" as *; +@use "ds/_sizes.scss" as *; ``` Note: Since these values haven't been semantically defined yet, we’re temporarily using SASS variables instead of named CSS custom properties. @@ -242,7 +242,7 @@ Note: Since these values haven't been semantically defined yet, we’re temporar Use border thickness variables from `frontend/src/app/main/ui/ds/_borders.scss`. To import: ```scss -@use "../_borders.scss" as *; +@use "ds/_borders.scss" as *; ``` Avoid using sass variables defined on `frontend/resources/styles/common/refactor/spacing.scss` that are deprecated. @@ -314,7 +314,7 @@ When applying typography in SCSS, use the proper mixin from the Design System. ✅ **DO: Use the DS mixin** ```scss -@use "../ds/typography.scss" as t; +@use "ds/typography.scss" as t; .class { @include t.use-typography("body-small"); diff --git a/docs/technical-guide/getting-started/recommended-settings.md b/docs/technical-guide/getting-started/recommended-settings.md index 1fc93e06a7..e6d1c9bfeb 100644 --- a/docs/technical-guide/getting-started/recommended-settings.md +++ b/docs/technical-guide/getting-started/recommended-settings.md @@ -1,5 +1,5 @@ --- -title: 1.1 Recommended storage +title: 1.1 Recommended settings desc: Learn recommended self-hosting settings, Docker & Kubernetes installs, configuration, and troubleshooting tips in Penpot's technical guide. --- @@ -10,3 +10,33 @@ Disk requirements depend on your usage, with the primary factors being database As a rule of thumb, start with a **minimum** database size of **50GB** to **100GB** with elastic sizing capability — this configuration should adequately support up to 10 editors. For environments with **more than 10 users**, we recommend adding approximately **5GB** of capacity per additional editor. Keep in mind that database size doesn't grow strictly proportionally with user count, as it depends heavily on how Penpot is used and the complexity of files created. Most organizations begin with this baseline and elastic sizing approach, then monitor usage patterns monthly until resource requirements stabilize. + + +# About Valkey / Redis requirements + +"Valkey is mainly used for coordinating websocket notifications and, since Penpot 2.11, as a cache. Therefore, disk storage will not be necessary as it will use the instance's RAM. + +To prevent the cache from hogging all the system's RAM usage, it is recommended to use two configuration parameters which, both in the docker-compose.yaml provided by Penpot and in the official Helm Chart, come with default parameters that should be sufficient for most deployments: + +```bash +## Recommended values for most Penpot instances. +## You can modify this value to follow your policies. + +# Set maximum memory Valkey/Redis will use. +# Accepted units: b, k, kb, m, mb, g, gb +maxmemory 128mb + +# Choose an eviction policy (see Valkey docs: +# https://valkey.io/topics/memory-optimization/ or for Redis +# https://redis.io/docs/latest/develop/reference/eviction/ +# Common choices: +# noeviction, allkeys-lru, volatile-lru, allkeys-random, volatile-random, +# volatile-ttl, volatile-lfu, allkeys-lfu +# +# For Penpot, volatile-lfu is recommended +maxmemory-policy volatile-lfu +``` + +The `maxmemory` configuration directive specifies the maximum amount of memory to use for the cache data. If you are using a dedicated instance to host Valkey/Redis, we do not recommend using more than 60% of the available RAM. + +With `maxmemory-policy` configuration directive, you can select the eviction policy you want to use when the limit set by `maxmemory` is reached. Penpot works fine with `volatile-lfu`, which evicts the least frequently used keys that have been marked as expired. diff --git a/docs/user-guide/design-tokens/index.njk b/docs/user-guide/design-tokens/index.njk index 9e23a935bb..5021982f8d 100644 --- a/docs/user-guide/design-tokens/index.njk +++ b/docs/user-guide/design-tokens/index.njk @@ -423,6 +423,40 @@ ExtraBold Italic

This token can be applied directly to a text element or be used as a reference in a Typography Composite Token.

+

Typography composite token

+

Typography tokens are composite entities that group several text properties into a single token definition. They allow you to define and reuse complete text styles in a consistent way.

+

Each property within a typography token can either reference an existing individual typography token (for example, font-size or font-family) or use a hardcoded value. The behavior and syntax of individual typography tokens are described in the previous section of this guide.

+
+ Typography composite token +
+ +

Reference another Typography Composite Token

+

You can also reference another existing Typography Composite Token instead of defining each property manually. When doing so, Penpot resolves all individual properties from the referenced token.

+
+ Typography composite token +
+ +

Line height property

+

The Typography Token includes a line-height property, which is not available as an individual token. This is because line-height depends on the font size to be calculated properly. Make sure the font-size property is defined before setting line-height.

+
+ Typography composite token +
+ +

Accepted values for the line-height input:

+
    +
  • Unitless number: interpreted as a multiplier of the font size. This is Penpot’s default behavior.
  • +
  • Percentage (%): converted internally to a multiplier.
  • +
  • Pixel (px) or rem value: if using rem, Penpot calculates the proportion relative to the font size and converts it to a multiplier.
  • +
  • References: you can also reference number or dimension tokens.
  • +
+ +

Apply a Typography token

+

A Typography composite token can be applied to a full text layer to set all typography properties at once. This lets you manage complete text styles using a single token instead of combining multiple individual ones.

+

When applying a Typography composite token to a layer, any previously applied Typography composite token or style will be detached. The same happens in reverse. Only one of them can be active at a time.

+ + + +

Token Sets

Token Sets allow you to split your tokens up into multiple files in order to create organized groups or collections of tokens. It enables efficient management and customization within design files. For example you can group all your color sets, sizing sets or platform-specific sets. The purpose of tokens sets is to organize them in a way that matches your needs.

diff --git a/docs/user-guide/the-interface/index.njk b/docs/user-guide/the-interface/index.njk index 99ffbcdd1f..083daad749 100644 --- a/docs/user-guide/the-interface/index.njk +++ b/docs/user-guide/the-interface/index.njk @@ -126,7 +126,7 @@ desc: Discover Penpot's free user guide! Learn the interface, workspace basics,

    -
  1. Teams: A team allows you to collaborate with other Penpot users. Team members are allowed to work with any project or file within the team depending on their permissions. Members with admin permissions can also invite other members. Create or join as many teams as you need with different groups of people.
  2. +
  3. Teams: A team allows you to collaborate with other Penpot users. Team members are allowed to work with any project or file within the team depending on their permissions. Members with admin permissions can also invite other members. Create or join as many teams as you need with different groups of people.
  4. Search: If you are looking for a specific file just type its title at the search box.
  5. Projects: A project allows you to group design files. It works pretty much like a folder in a file system. You can create as many projects as you need. If you are going to work with more people in a project, you should create it inside a team.
  6. Drafts: The drafts section is where you can find the design files that are not inside any project.
  7. @@ -204,4 +204,4 @@ desc: Discover Penpot's free user guide! Learn the interface, workspace basics, Penpot's view mode
    Penpot's view mode in light mode
    -
\ No newline at end of file + diff --git a/exporter/deps.edn b/exporter/deps.edn index 6f93671f2a..1c5cd1fb55 100644 --- a/exporter/deps.edn +++ b/exporter/deps.edn @@ -1,9 +1,9 @@ {:paths ["src" "vendor" "resources" "test"] :deps {penpot/common {:local/root "../common"} - org.clojure/clojure {:mvn/version "1.12.0"} + org.clojure/clojure {:mvn/version "1.12.2"} binaryage/devtools {:mvn/version "RELEASE"} - metosin/reitit-core {:mvn/version "0.7.2"} + metosin/reitit-core {:mvn/version "0.9.1"} } :aliases {:outdated @@ -14,7 +14,7 @@ :dev {:extra-deps - {thheller/shadow-cljs {:mvn/version "3.1.5"}}} + {thheller/shadow-cljs {:mvn/version "3.2.1"}}} :shadow-cljs {:main-opts ["-m" "shadow.cljs.devtools.cli"] diff --git a/exporter/package.json b/exporter/package.json index 3b9981ea6e..7422f99a04 100644 --- a/exporter/package.json +++ b/exporter/package.json @@ -4,29 +4,35 @@ "license": "MPL-2.0", "author": "Kaleidos INC", "private": true, - "packageManager": "yarn@4.9.2+sha512.1fc009bc09d13cfd0e19efa44cbfc2b9cf6ca61482725eb35bbc5e257e093ebf4130db6dfe15d604ff4b79efd8e1e8e99b25fa7d0a6197c9f9826358d4d65c3c", + "packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f", "repository": { "type": "git", "url": "https://github.com/penpot/penpot" }, + "type": "module", "dependencies": { "archiver": "^7.0.1", "cookies": "^0.9.1", + "date-fns": "^4.1.0", "generic-pool": "^3.9.0", "inflation": "^2.1.0", - "ioredis": "^5.6.1", - "luxon": "^3.6.1", + "ioredis": "^5.8.1", "playwright": "^1.55.1", - "raw-body": "^3.0.0", + "raw-body": "^3.0.1", + "source-map-support": "^0.5.21", "svgo": "penpot/svgo#v3.1", "xml-js": "^1.6.11", "xregexp": "^5.1.2" }, "devDependencies": { - "source-map-support": "^0.5.21", - "ws": "^8.18.2" + "ws": "^8.18.3" }, "scripts": { + "clear:shadow-cache": "rm -rf .shadow-cljs && rm -rf target", + "watch:app": "clojure -M:dev:shadow-cljs watch main", + "watch": "yarn run clear:shadow-cache && yarn run watch:app", + "build:app": "clojure -M:dev:shadow-cljs release main", + "build": "yarn run clear:shadow-cache && yarn run build:app", "fmt:clj:check": "cljfmt check --parallel=false src/", "fmt:clj": "cljfmt fix --parallel=true src/", "lint:clj": "clj-kondo --parallel --lint src/" diff --git a/exporter/scripts/build b/exporter/scripts/build index 4bd911fc00..4de1be2094 100755 --- a/exporter/scripts/build +++ b/exporter/scripts/build @@ -11,10 +11,7 @@ yarn install || exit 1; rm -rf target # Build the application -clojure -M:dev:shadow-cljs release main; - -# Remove source -rm -rf target/app; +yarn run build; # Copy package*.json files cp ../.yarnrc.yml target/; diff --git a/exporter/shadow-cljs.edn b/exporter/shadow-cljs.edn index 9107cbcb7a..ae963cf311 100644 --- a/exporter/shadow-cljs.edn +++ b/exporter/shadow-cljs.edn @@ -3,13 +3,22 @@ :builds {:main - {:target :node-script - :main app.core/main - :output-to "target/app.js" - :output-dir "target/app/" + {:target :esm + :runtime :node + :output-dir "target/" :devtools {:before-load-async app.core/stop :after-load app.core/start} + :modules + {:app + {:entries [] + :init-fn app.core/main}} + + :js-options + {:entry-keys ["module" "browser" "main"] + :export-conditions ["module" "import", "browser" "require" "default"] + :js-provider :import} + :compiler-options {:output-feature-set :es2020 :output-wrapper false} diff --git a/exporter/src/app/browser.cljs b/exporter/src/app/browser.cljs index 46330ced58..816fb1c954 100644 --- a/exporter/src/app/browser.cljs +++ b/exporter/src/app/browser.cljs @@ -7,7 +7,7 @@ (ns app.browser (:require ["generic-pool" :as gp] - ["generic-pool/lib/errors" :as gpe] + ["generic-pool/lib/errors.js" :as gpe] ["playwright" :as pw] [app.common.exceptions :as ex] [app.common.logging :as l] diff --git a/exporter/src/app/core.cljs b/exporter/src/app/core.cljs index 6d30b9220d..dae498f5d3 100644 --- a/exporter/src/app/core.cljs +++ b/exporter/src/app/core.cljs @@ -6,7 +6,7 @@ (ns app.core (:require - ["process" :as proc] + ["node:process" :as proc] [app.browser :as bwr] [app.common.logging :as l] [app.config :as cf] @@ -41,9 +41,9 @@ (http/stop) (done))) -(proc/on "uncaughtException" - (fn [cause] - (js/console.error cause))) +(.on proc/default "uncaughtException" + (fn [cause] + (js/console.error cause))) -(proc/on "SIGTERM" (fn [] (proc/exit 0))) -(proc/on "SIGINT" (fn [] (proc/exit 0))) +(.on proc/default "SIGTERM" (fn [] (proc/exit 0))) +(.on proc/default "SIGINT" (fn [] (proc/exit 0))) diff --git a/exporter/src/app/handlers/resources.cljs b/exporter/src/app/handlers/resources.cljs index 85fc174e56..8d78f861ae 100644 --- a/exporter/src/app/handlers/resources.cljs +++ b/exporter/src/app/handlers/resources.cljs @@ -7,9 +7,9 @@ (ns app.handlers.resources "Temporal resources management." (:require - ["archiver" :as arc] - ["fs" :as fs] - ["path" :as path] + ["archiver$default" :as arc] + ["node:fs" :as fs] + ["node:path" :as path] [app.common.exceptions :as ex] [app.common.uuid :as uuid] [app.util.mime :as mime] diff --git a/exporter/src/app/http.cljs b/exporter/src/app/http.cljs index acfb6e909d..0024ce8b86 100644 --- a/exporter/src/app/http.cljs +++ b/exporter/src/app/http.cljs @@ -6,11 +6,11 @@ (ns app.http (:require - ["cookies" :as Cookies] - ["http" :as http] - ["inflation" :as inflate] - ["raw-body" :as raw-body] - ["stream" :as stream] + ["cookies$default" :as Cookies] + ["inflation$default" :as inflate] + ["node:http" :as http] + ["node:stream$default" :as stream] + ["raw-body$default" :as raw-body] [app.common.logging :as l] [app.common.transit :as t] [app.config :as cf] @@ -169,6 +169,7 @@ (wrap-error handlers/on-error)) server (create-server handler) port (cf/get :http-server-port 6061)] + (.listen server port) (l/info :hint "welcome to penpot" :module "exporter" diff --git a/exporter/src/app/redis.cljs b/exporter/src/app/redis.cljs index b04ccd0dee..0cc38ba3a9 100644 --- a/exporter/src/app/redis.cljs +++ b/exporter/src/app/redis.cljs @@ -18,7 +18,7 @@ (defn- create-client [uri] - (let [^js client (new redis uri)] + (let [^js client (new redis/default uri)] (.on client "connect" (fn [] (l/info :hint "redis connection established" :uri uri))) (.on client "error" diff --git a/exporter/yarn.lock b/exporter/yarn.lock index 8c11bacc43..7d487e04a7 100644 --- a/exporter/yarn.lock +++ b/exporter/yarn.lock @@ -6,18 +6,18 @@ __metadata: cacheKey: 10c0 "@babel/runtime-corejs3@npm:^7.26.9": - version: 7.27.6 - resolution: "@babel/runtime-corejs3@npm:7.27.6" + version: 7.28.4 + resolution: "@babel/runtime-corejs3@npm:7.28.4" dependencies: - core-js-pure: "npm:^3.30.2" - checksum: 10c0/0ec7725824fdc3dd1e9580c1887ea60088d1cc3ec2fcfad9ccf54909262786b70e74f4b90513718d18f062a918b45add94c4dc243186f1423ed03cacf9935863 + core-js-pure: "npm:^3.43.0" + checksum: 10c0/0a7fe2d4e36d345acf090dd685b5c6ed55af3ead69a84e2cfca56631815dd757f3a362031b376cc746f63f0fd856e7a5280807833f7fa9a5b7f1febd97f8c0da languageName: node linkType: hard -"@ioredis/commands@npm:^1.1.1": - version: 1.2.0 - resolution: "@ioredis/commands@npm:1.2.0" - checksum: 10c0/a5d3c29dd84d8a28b7c67a441ac1715cbd7337a7b88649c0f17c345d89aa218578d2b360760017c48149ef8a70f44b051af9ac0921a0622c2b479614c4f65b36 +"@ioredis/commands@npm:1.4.0": + version: 1.4.0 + resolution: "@ioredis/commands@npm:1.4.0" + checksum: 10c0/99afe21fba794f84a2b84cceabcc370a7622e7b8b97a6589456c07c9fa62a15d54c5546f6f7214fb9a2458b1fa87579d5c531aaf48e06cc9be156d5923892c8d languageName: node linkType: hard @@ -97,9 +97,9 @@ __metadata: linkType: hard "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.3 - resolution: "agent-base@npm:7.1.3" - checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe languageName: node linkType: hard @@ -111,9 +111,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f languageName: node linkType: hard @@ -127,9 +127,9 @@ __metadata: linkType: hard "ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 languageName: node linkType: hard @@ -171,9 +171,14 @@ __metadata: linkType: hard "b4a@npm:^1.6.4": - version: 1.6.7 - resolution: "b4a@npm:1.6.7" - checksum: 10c0/ec2f004d1daae04be8c5a1f8aeb7fea213c34025e279db4958eb0b82c1729ee25f7c6e89f92a5f65c8a9cf2d017ce27e3dda912403341d1781bd74528a4849d4 + version: 1.7.3 + resolution: "b4a@npm:1.7.3" + peerDependencies: + react-native-b4a: "*" + peerDependenciesMeta: + react-native-b4a: + optional: true + checksum: 10c0/ac16d186e00fa0d16de1f1a4af413953bc762d50d5a0e382aaa744a13886600313b7293403ad77fc83f6b1489c3fc2610494d1026754a51d1b7cdac2115a7598 languageName: node linkType: hard @@ -184,10 +189,10 @@ __metadata: languageName: node linkType: hard -"bare-events@npm:^2.2.0": - version: 2.5.4 - resolution: "bare-events@npm:2.5.4" - checksum: 10c0/877a9cea73d545e2588cdbd6fd01653e27dac48ad6b44985cdbae73e1f57f292d4ba52e25d1fba53674c1053c463d159f3d5c7bc36a2e6e192e389b499ddd627 +"bare-events@npm:^2.7.0": + version: 2.7.0 + resolution: "bare-events@npm:2.7.0" + checksum: 10c0/0057d26ee21c60bb304cae689dad343e2b3be2a17af26ec26d995c440b6f2c544aab294276626ced1dac9d35b4c5653d0a076a759190c69e1923dbd3e60f5e99 languageName: node linkType: hard @@ -318,10 +323,10 @@ __metadata: languageName: node linkType: hard -"core-js-pure@npm:^3.30.2": - version: 3.43.0 - resolution: "core-js-pure@npm:3.43.0" - checksum: 10c0/b888513800543af7aac13b8e33eb5153d5a8304f11fe0ec7a331878df830dcb428c723ebd5266ae52b047ffb4a86750b384aed24de731b23bc5ebdbcf05aeec5 +"core-js-pure@npm:^3.43.0": + version: 3.45.1 + resolution: "core-js-pure@npm:3.45.1" + checksum: 10c0/e1a31b0e1caee880d4fd93dbe4da34a1000fcd83ca1822f9aaa2433281807e21e4262fd474157d2b641da53b7cd465e744ba1c6dc146b1a00d57af44ec2e0d20 languageName: node linkType: hard @@ -363,15 +368,15 @@ __metadata: linkType: hard "css-select@npm:^5.1.0": - version: 5.1.0 - resolution: "css-select@npm:5.1.0" + version: 5.2.2 + resolution: "css-select@npm:5.2.2" dependencies: boolbase: "npm:^1.0.0" css-what: "npm:^6.1.0" domhandler: "npm:^5.0.2" domutils: "npm:^3.0.1" nth-check: "npm:^2.0.1" - checksum: 10c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 + checksum: 10c0/d79fffa97106007f2802589f3ed17b8c903f1c961c0fc28aa8a051eee0cbad394d8446223862efd4c1b40445a6034f626bb639cf2035b0bfc468544177593c99 languageName: node linkType: hard @@ -396,9 +401,9 @@ __metadata: linkType: hard "css-what@npm:^6.1.0": - version: 6.1.0 - resolution: "css-what@npm:6.1.0" - checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 + version: 6.2.2 + resolution: "css-what@npm:6.2.2" + checksum: 10c0/91e24c26fb977b4ccef30d7007d2668c1c10ac0154cc3f42f7304410e9594fb772aea4f30c832d2993b132ca8d99338050866476210316345ec2e7d47b248a56 languageName: node linkType: hard @@ -411,15 +416,22 @@ __metadata: languageName: node linkType: hard +"date-fns@npm:^4.1.0": + version: 4.1.0 + resolution: "date-fns@npm:4.1.0" + checksum: 10c0/b79ff32830e6b7faa009590af6ae0fb8c3fd9ffad46d930548fbb5acf473773b4712ae887e156ba91a7b3dc30591ce0f517d69fd83bd9c38650fdc03b4e0bac8 + languageName: node + linkType: hard + "debug@npm:4, debug@npm:^4.3.4": - version: 4.4.1 - resolution: "debug@npm:4.4.1" + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 + checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 languageName: node linkType: hard @@ -533,6 +545,15 @@ __metadata: languageName: node linkType: hard +"events-universal@npm:^1.0.0": + version: 1.0.1 + resolution: "events-universal@npm:1.0.1" + dependencies: + bare-events: "npm:^2.7.0" + checksum: 10c0/a1d9a5e9f95843650f8ec240dd1221454c110189a9813f32cdf7185759b43f1f964367ac7dca4ebc69150b59043f2d77c7e122b0d03abf7c25477ea5494785a5 + languageName: node + linkType: hard + "events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" @@ -553,15 +574,15 @@ __metadata: dependencies: archiver: "npm:^7.0.1" cookies: "npm:^0.9.1" + date-fns: "npm:^4.1.0" generic-pool: "npm:^3.9.0" inflation: "npm:^2.1.0" - ioredis: "npm:^5.6.1" - luxon: "npm:^3.6.1" + ioredis: "npm:^5.8.1" playwright: "npm:^1.55.1" - raw-body: "npm:^3.0.0" + raw-body: "npm:^3.0.1" source-map-support: "npm:^0.5.21" svgo: "penpot/svgo#v3.1" - ws: "npm:^8.18.2" + ws: "npm:^8.18.3" xml-js: "npm:^1.6.11" xregexp: "npm:^5.1.2" languageName: unknown @@ -574,15 +595,15 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.4.4": - version: 6.4.6 - resolution: "fdir@npm:6.4.6" +"fdir@npm:^6.5.0": + version: 6.5.0 + resolution: "fdir@npm:6.5.0" peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: picomatch: optional: true - checksum: 10c0/45b559cff889934ebb8bc498351e5acba40750ada7e7d6bde197768d2fa67c149be8ae7f8ff34d03f4e1eb20f2764116e56440aaa2f6689e9a4aa7ef06acafe9 + checksum: 10c0/e345083c4306b3aed6cb8ec551e26c36bab5c511e99ea4576a16750ddc8d3240e63826cc624f5ae17ad4dc82e68a253213b60d556c11bfad064b7607847ed07f languageName: node linkType: hard @@ -694,7 +715,16 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": +"iconv-lite@npm:0.7.0": + version: 0.7.0 + resolution: "iconv-lite@npm:0.7.0" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/2382400469071c55b6746c531eed5fa4d033e5db6690b7331fb2a5f59a30d7a9782932e92253db26df33c1cf46fa200a3fbe524a2a7c62037c762283f188ec2f + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -731,11 +761,11 @@ __metadata: languageName: node linkType: hard -"ioredis@npm:^5.6.1": - version: 5.6.1 - resolution: "ioredis@npm:5.6.1" +"ioredis@npm:^5.8.1": + version: 5.8.1 + resolution: "ioredis@npm:5.8.1" dependencies: - "@ioredis/commands": "npm:^1.1.1" + "@ioredis/commands": "npm:1.4.0" cluster-key-slot: "npm:^1.1.0" debug: "npm:^4.3.4" denque: "npm:^2.1.0" @@ -744,17 +774,14 @@ __metadata: redis-errors: "npm:^1.2.0" redis-parser: "npm:^3.0.0" standard-as-callback: "npm:^2.1.0" - checksum: 10c0/26ae49cf448e807e454a9bdea5a9dfdcf669e2fdbf2df341900a0fb693c5662fea7e39db3227ce8972d1bda0ba7da9b7410e5163b12d8878a579548d847220ac + checksum: 10c0/4ed66444017150da027bce940a24bf726994691e2a7b3aa11d52f8aeb37f258068cc171af4d9c61247acafc28eb086fa8a7c79420b8e8d2907d2f74f39584465 languageName: node linkType: hard -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: "npm:1.1.0" - sprintf-js: "npm:^1.1.3" - checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc +"ip-address@npm:^10.0.1": + version: 10.0.1 + resolution: "ip-address@npm:10.0.1" + checksum: 10c0/1634d79dae18394004775cb6d699dc46b7c23df6d2083164025a2b15240c1164fccde53d0e08bd5ee4fc53913d033ab6b5e395a809ad4b956a940c446e948843 languageName: node linkType: hard @@ -806,13 +833,6 @@ __metadata: languageName: node linkType: hard -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 - languageName: node - linkType: hard - "keygrip@npm:~1.1.0": version: 1.1.0 resolution: "keygrip@npm:1.1.0" @@ -859,13 +879,6 @@ __metadata: languageName: node linkType: hard -"luxon@npm:^3.6.1": - version: 3.6.1 - resolution: "luxon@npm:3.6.1" - checksum: 10c0/906d57a9dc4d1de9383f2e9223e378c298607c1b4d17b6657b836a3cd120feb1c1de3b5d06d846a3417e1ca764de8476e8c23b3cd4083b5cdb870adcb06a99d5 - languageName: node - linkType: hard - "make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -984,21 +997,12 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^3.0.1": - version: 3.0.2 - resolution: "minizlib@npm:3.0.2" +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" dependencies: minipass: "npm:^7.1.2" - checksum: 10c0/9f3bd35e41d40d02469cb30470c55ccc21cae0db40e08d1d0b1dff01cc8cc89a6f78e9c5d2b7c844e485ec0a8abc2238111213fdc5b2038e6d1012eacf316f78 - languageName: node - linkType: hard - -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d + checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec languageName: node linkType: hard @@ -1017,8 +1021,8 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 11.2.0 - resolution: "node-gyp@npm:11.2.0" + version: 11.4.2 + resolution: "node-gyp@npm:11.4.2" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" @@ -1032,7 +1036,7 @@ __metadata: which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9 + checksum: 10c0/0bfd3e96770ed70f07798d881dd37b4267708966d868a0e585986baac487d9cf5831285579fd629a83dc4e434f53e6416ce301097f2ee464cb74d377e4d8bdbe languageName: node linkType: hard @@ -1094,10 +1098,10 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2": - version: 4.0.2 - resolution: "picomatch@npm:4.0.2" - checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc +"picomatch@npm:^4.0.3": + version: 4.0.3 + resolution: "picomatch@npm:4.0.3" + checksum: 10c0/9582c951e95eebee5434f59e426cddd228a7b97a0161a375aed4be244bd3fe8e3a31b846808ea14ef2c8a2527a6eeab7b3946a67d5979e81694654f939473ae2 languageName: node linkType: hard @@ -1156,15 +1160,15 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:^3.0.0": - version: 3.0.0 - resolution: "raw-body@npm:3.0.0" +"raw-body@npm:^3.0.1": + version: 3.0.1 + resolution: "raw-body@npm:3.0.1" dependencies: bytes: "npm:3.1.2" http-errors: "npm:2.0.0" - iconv-lite: "npm:0.6.3" + iconv-lite: "npm:0.7.0" unpipe: "npm:1.0.0" - checksum: 10c0/f8daf4b724064a4811d118745a781ca0fb4676298b8adadfd6591155549cfea0a067523cf7dd3baeb1265fecc9ce5dfb2fc788c12c66b85202a336593ece0f87 + checksum: 10c0/892f4fbd21ecab7e2fed0f045f7af9e16df7e8050879639d4e482784a2f4640aaaa33d916a0e98013f23acb82e09c2e3c57f84ab97104449f728d22f65a7d79a languageName: node linkType: hard @@ -1314,12 +1318,12 @@ __metadata: linkType: hard "socks@npm:^2.8.3": - version: 2.8.5 - resolution: "socks@npm:2.8.5" + version: 2.8.7 + resolution: "socks@npm:2.8.7" dependencies: - ip-address: "npm:^9.0.5" + ip-address: "npm:^10.0.1" smart-buffer: "npm:^4.2.0" - checksum: 10c0/e427d0eb0451cfd04e20b9156ea8c0e9b5e38a8d70f21e55c30fbe4214eda37cfc25d782c63f9adc5fbdad6d062a0f127ef2cefc9a44b6fee2b9ea5d1ed10827 + checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 languageName: node linkType: hard @@ -1347,13 +1351,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec - languageName: node - linkType: hard - "ssri@npm:^12.0.0": version: 12.0.0 resolution: "ssri@npm:12.0.0" @@ -1378,16 +1375,13 @@ __metadata: linkType: hard "streamx@npm:^2.15.0": - version: 2.22.1 - resolution: "streamx@npm:2.22.1" + version: 2.23.0 + resolution: "streamx@npm:2.23.0" dependencies: - bare-events: "npm:^2.2.0" + events-universal: "npm:^1.0.0" fast-fifo: "npm:^1.3.2" text-decoder: "npm:^1.1.0" - dependenciesMeta: - bare-events: - optional: true - checksum: 10c0/b5e489cca78ff23b910e7d58c3e0059e692f93ec401a5974689f2c50c33c9d94f64246a305566ad52cdb818ee583e02e4257b9066fd654cb9f576a9692fdb976 + checksum: 10c0/15708ce37818d588632fe1104e8febde573e33e8c0868bf583fce0703f3faf8d2a063c278e30df2270206811b69997f64eb78792099933a1fe757e786fbcbd44 languageName: node linkType: hard @@ -1441,11 +1435,11 @@ __metadata: linkType: hard "strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" dependencies: ansi-regex: "npm:^6.0.1" - checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + checksum: 10c0/0d6d7a023de33368fd042aab0bf48f4f4077abdfd60e5393e73c7c411e85e1b3a83507c11af2e656188511475776215df9ca589b4da2295c9455cc399ce1858b languageName: node linkType: hard @@ -1474,16 +1468,15 @@ __metadata: linkType: hard "tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" + version: 7.5.1 + resolution: "tar@npm:7.5.1" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" - minizlib: "npm:^3.0.1" - mkdirp: "npm:^3.0.1" + minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d + checksum: 10c0/0dad0596a61586180981133b20c32cfd93c5863c5b7140d646714e6ea8ec84583b879e5dc3928a4d683be6e6109ad7ea3de1cf71986d5194f81b3a016c8858c9 languageName: node linkType: hard @@ -1497,12 +1490,12 @@ __metadata: linkType: hard "tinyglobby@npm:^0.2.12": - version: 0.2.14 - resolution: "tinyglobby@npm:0.2.14" + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" dependencies: - fdir: "npm:^6.4.4" - picomatch: "npm:^4.0.2" - checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6 + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.3" + checksum: 10c0/869c31490d0d88eedb8305d178d4c75e7463e820df5a9b9d388291daf93e8b1eb5de1dad1c1e139767e4269fe75f3b10d5009b2cc14db96ff98986920a186844 languageName: node linkType: hard @@ -1596,9 +1589,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.2": - version: 8.18.2 - resolution: "ws@npm:8.18.2" +"ws@npm:^8.18.3": + version: 8.18.3 + resolution: "ws@npm:8.18.3" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -1607,7 +1600,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/4b50f67931b8c6943c893f59c524f0e4905bbd183016cfb0f2b8653aa7f28dad4e456b9d99d285bbb67cca4fedd9ce90dfdfaa82b898a11414ebd66ee99141e4 + checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 languageName: node linkType: hard diff --git a/frontend/deps.edn b/frontend/deps.edn index fb10f8a5fd..3d4ff15c09 100644 --- a/frontend/deps.edn +++ b/frontend/deps.edn @@ -42,11 +42,11 @@ :dev {:extra-paths ["dev"] :extra-deps - {thheller/shadow-cljs {:mvn/version "3.1.7"} + {thheller/shadow-cljs {:mvn/version "3.2.0"} com.bhauman/rebel-readline {:mvn/version "RELEASE"} org.clojure/tools.namespace {:mvn/version "RELEASE"} criterium/criterium {:mvn/version "RELEASE"} - cider/cider-nrepl {:mvn/version "0.56.0"}}} + cider/cider-nrepl {:mvn/version "0.57.0"}}} :shadow-cljs {:main-opts ["-m" "shadow.cljs.devtools.cli"] diff --git a/frontend/package.json b/frontend/package.json index d29fe75d5f..37612cd0e7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,7 +4,7 @@ "license": "MPL-2.0", "author": "Kaleidos INC", "private": true, - "packageManager": "yarn@4.9.2+sha512.1fc009bc09d13cfd0e19efa44cbfc2b9cf6ca61482725eb35bbc5e257e093ebf4130db6dfe15d604ff4b79efd8e1e8e99b25fa7d0a6197c9f9826358d4d65c3c", + "packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f", "browserslist": [ "defaults" ], @@ -61,8 +61,8 @@ "@storybook/test-runner": "^0.22.0", "@types/node": "^22.15.21", "autoprefixer": "^10.4.21", - "concurrently": "^9.1.2", - "esbuild": "^0.25.5", + "concurrently": "^9.2.1", + "esbuild": "^0.25.9", "express": "^5.1.0", "fancy-log": "^2.0.0", "getopts": "^2.3.0", @@ -74,7 +74,7 @@ "gulp-rename": "^2.0.0", "gulp-sourcemaps": "^3.0.0", "gulp-svg-sprite": "^2.0.3", - "jsdom": "^26.1.0", + "jsdom": "^27.0.0", "map-stream": "0.0.7", "marked": "^15.0.12", "mkdirp": "^3.0.1", @@ -92,7 +92,7 @@ "sass-embedded": "^1.89.0", "storybook": "^8.6.14", "svg-sprite": "^2.0.4", - "typescript": "^5.8.3", + "typescript": "^5.9.2", "vite": "^6.3.5", "vitest": "^3.2.0", "wasm-pack": "^0.13.1", @@ -108,17 +108,17 @@ "@penpot/text-editor": "portal:./text-editor", "@tokens-studio/sd-transforms": "1.2.11", "@zip.js/zip.js": "patch:@zip.js/zip.js@npm%3A2.7.60#~/.yarn/patches/@zip.js-zip.js-npm-2.7.60-b6b814410b.patch", - "compression": "^1.8.0", + "compression": "^1.8.1", "date-fns": "^4.1.0", - "eventsource-parser": "^3.0.2", + "eventsource-parser": "^3.0.6", "js-beautify": "^1.15.4", "lodash": "^4.17.21", "lodash.debounce": "^4.0.8", "opentype.js": "^1.3.4", "postcss-modules": "^6.0.1", "randomcolor": "^0.6.2", - "react": "19.1.0", - "react-dom": "19.1.0", + "react": "19.1.1", + "react-dom": "19.1.1", "react-error-boundary": "^6.0.0", "react-virtualized": "^9.22.6", "rxjs": "8.0.0-alpha.14", @@ -127,7 +127,7 @@ "style-dictionary": "5.0.0-rc.1", "tdigest": "^0.1.2", "tinycolor2": "^1.6.0", - "ua-parser-js": "2.0.3", + "ua-parser-js": "2.0.5", "xregexp": "^5.1.2" } } diff --git a/frontend/playwright.config.js b/frontend/playwright.config.js index 7496f7f4c8..8bbc0d00b9 100644 --- a/frontend/playwright.config.js +++ b/frontend/playwright.config.js @@ -23,6 +23,7 @@ export default defineConfig({ expect: { timeout: process.env.CI ? 20000 : 5000, }, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ reporter: "html", /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ @@ -62,7 +63,9 @@ export default defineConfig({ }, testDir: "./playwright/ui/render-wasm-specs", snapshotPathTemplate: "{testDir}/{testFilePath}-snapshots/{arg}.png", + timeout: 2 * 60 * 1000, expect: { + timeout: process.env.CI ? 20000 : 10000, toHaveScreenshot: { maxDiffPixelRatio: 0.001, }, diff --git a/frontend/playwright/data/design/get-file-12287.json b/frontend/playwright/data/design/get-file-12287.json new file mode 100644 index 0000000000..6a067537b4 --- /dev/null +++ b/frontend/playwright/data/design/get-file-12287.json @@ -0,0 +1,131 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u3e5ffd68-2819-8084-8006-eb1c740c9873", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "Bug 12287", + "~:revn": 1, + "~:modified-at": "~m1760447075612", + "~:vern": 0, + "~:id": "~u4bdef584-e28a-8155-8006-f3f8a71b382e", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes", + "0011-fix-invalid-text-touched-flags", + "0012-fix-position-data", + "0013-fix-component-path", + "0014-fix-tokens-lib-duplicate-ids" + ] + }, + "~:version": 67, + "~:project-id": "~u3e5ffd68-2819-8084-8006-eb1c740cecec", + "~:created-at": "~m1760447051884", + "~:backend": "legacy-db", + "~:data": { + "~:pages": [ + "~u4bdef584-e28a-8155-8006-f3f8a71b382f" + ], + "~:pages-index": { + "~u4bdef584-e28a-8155-8006-f3f8a71b382f": { + "~:objects": { + "~#penpot/objects-map/v2": { + "~u00000000-0000-0000-0000-000000000000": "[\"~#shape\",[\"^ \",\"~:y\",0,\"~:hide-fill-on-export\",false,\"~:transform\",[\"~#matrix\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:rotation\",0,\"~:name\",\"Root Frame\",\"~:width\",0.01,\"~:type\",\"~:frame\",\"~:points\",[[\"~#point\",[\"^ \",\"~:x\",0.0,\"~:y\",0.0]],[\"^:\",[\"^ \",\"~:x\",0.01,\"~:y\",0.0]],[\"^:\",[\"^ \",\"~:x\",0.01,\"~:y\",0.01]],[\"^:\",[\"^ \",\"~:x\",0.0,\"~:y\",0.01]]],\"~:r2\",0,\"~:proportion-lock\",false,\"~:transform-inverse\",[\"^3\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:r3\",0,\"~:r1\",0,\"~:id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:parent-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:frame-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:strokes\",[],\"~:x\",0,\"~:proportion\",1.0,\"~:r4\",0,\"~:selrect\",[\"~#rect\",[\"^ \",\"~:x\",0,\"~:y\",0,\"^6\",0.01,\"~:height\",0.01,\"~:x1\",0,\"~:y1\",0,\"~:x2\",0.01,\"~:y2\",0.01]],\"~:fills\",[[\"^ \",\"~:fill-color\",\"#FFFFFF\",\"~:fill-opacity\",1]],\"~:flip-x\",null,\"^H\",0.01,\"~:flip-y\",null,\"~:shapes\",[\"~u7dd7d979-39c8-802f-8006-f3f8aa066134\"]]]", + "~u7dd7d979-39c8-802f-8006-f3f8aa066134": "[\"~#shape\",[\"^ \",\"~:y\",387,\"~:transform\",[\"~#matrix\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:rotation\",0,\"~:grow-type\",\"~:auto-width\",\"~:content\",[\"^ \",\"~:type\",\"root\",\"~:key\",\"1sho7ukh86n\",\"~:children\",[[\"^ \",\"^7\",\"paragraph-set\",\"^9\",[[\"^ \",\"~:line-height\",\"1.2\",\"~:font-style\",\"normal\",\"^9\",[[\"^ \",\"^:\",\"1.2\",\"^;\",\"normal\",\"~:typography-ref-id\",null,\"~:text-transform\",\"none\",\"~:font-id\",\"sourcesanspro\",\"^8\",\"17twz8zxww7\",\"~:font-size\",\"14\",\"~:font-weight\",\"400\",\"~:typography-ref-file\",null,\"~:font-variant-id\",\"regular\",\"~:text-decoration\",\"none\",\"~:letter-spacing\",\"0\",\"~:fills\",[],\"~:font-family\",\"sourcesanspro\",\"~:text\",\"Lorem ipsum\"]],\"^<\",null,\"^=\",\"none\",\"~:text-align\",\"left\",\"^>\",\"sourcesanspro\",\"^8\",\"3nu9h9p6vg\",\"^?\",\"14\",\"^@\",\"400\",\"^A\",null,\"~:text-direction\",\"ltr\",\"^7\",\"paragraph\",\"^B\",\"regular\",\"^C\",\"none\",\"^D\",\"0\",\"^E\",[],\"^F\",\"sourcesanspro\"]]]],\"~:vertical-align\",\"top\"],\"~:hide-in-viewer\",false,\"~:name\",\"Lorem ipsum\",\"~:width\",77,\"^7\",\"^G\",\"~:points\",[[\"~#point\",[\"^ \",\"~:x\",818,\"~:y\",387]],[\"^O\",[\"^ \",\"~:x\",895,\"~:y\",387]],[\"^O\",[\"^ \",\"~:x\",895,\"~:y\",404]],[\"^O\",[\"^ \",\"~:x\",818,\"~:y\",404]]],\"~:transform-inverse\",[\"^2\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:id\",\"~u7dd7d979-39c8-802f-8006-f3f8aa066134\",\"~:parent-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:position-data\",[[\"~#rect\",[\"^ \",\"~:y\",404.5,\"^;\",\"normal\",\"^=\",\"none\",\"^?\",\"14px\",\"^@\",\"400\",\"~:y1\",-1,\"^M\",76.5859375,\"^C\",\"none\",\"^D\",\"normal\",\"~:x\",818,\"~:x1\",0,\"~:y2\",17.5,\"^E\",[],\"~:x2\",76.5859375,\"~:direction\",\"ltr\",\"^F\",\"sourcesanspro\",\"~:height\",18.5,\"^G\",\"Lorem ipsum\"]]],\"~:frame-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:x\",818,\"~:selrect\",[\"^T\",[\"^ \",\"~:x\",818,\"~:y\",387,\"^M\",77,\"^Z\",17,\"^V\",818,\"^U\",387,\"^X\",895,\"^W\",404]],\"~:flip-x\",null,\"^Z\",17,\"~:flip-y\",null]]" + } + }, + "~:id": "~u4bdef584-e28a-8155-8006-f3f8a71b382f", + "~:name": "Page 1" + } + }, + "~:id": "~u4bdef584-e28a-8155-8006-f3f8a71b382e", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/design/get-file-12384.json b/frontend/playwright/data/design/get-file-12384.json new file mode 100644 index 0000000000..24aaabada6 --- /dev/null +++ b/frontend/playwright/data/design/get-file-12384.json @@ -0,0 +1,134 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u3e5ffd68-2819-8084-8006-eb1c616a5afd", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "Bug 12384", + "~:revn": 4, + "~:modified-at": "~m1761124840773", + "~:vern": 0, + "~:id": "~ufa6ce865-34dd-80ac-8006-fe0dab5539a7", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes", + "0011-fix-invalid-text-touched-flags", + "0012-fix-position-data", + "0013-fix-component-path", + "0013-clear-invalid-strokes-and-fills", + "0014-fix-tokens-lib-duplicate-ids", + "0014-clear-components-nil-objects" + ] + }, + "~:version": 67, + "~:project-id": "~u3e5ffd68-2819-8084-8006-eb1c616e69bf", + "~:created-at": "~m1761123649876", + "~:backend": "legacy-db", + "~:data": { + "~:pages": [ + "~ufa6ce865-34dd-80ac-8006-fe0dab5539a8" + ], + "~:pages-index": { + "~ufa6ce865-34dd-80ac-8006-fe0dab5539a8": { + "~:objects": { + "~#penpot/objects-map/v2": { + "~u00000000-0000-0000-0000-000000000000": "[\"~#shape\",[\"^ \",\"~:y\",0,\"~:hide-fill-on-export\",false,\"~:transform\",[\"~#matrix\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:rotation\",0,\"~:name\",\"Root Frame\",\"~:width\",0.01,\"~:type\",\"~:frame\",\"~:points\",[[\"~#point\",[\"^ \",\"~:x\",0.0,\"~:y\",0.0]],[\"^:\",[\"^ \",\"~:x\",0.01,\"~:y\",0.0]],[\"^:\",[\"^ \",\"~:x\",0.01,\"~:y\",0.01]],[\"^:\",[\"^ \",\"~:x\",0.0,\"~:y\",0.01]]],\"~:r2\",0,\"~:proportion-lock\",false,\"~:transform-inverse\",[\"^3\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:r3\",0,\"~:r1\",0,\"~:id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:parent-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:frame-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:strokes\",[],\"~:x\",0,\"~:proportion\",1.0,\"~:r4\",0,\"~:selrect\",[\"~#rect\",[\"^ \",\"~:x\",0,\"~:y\",0,\"^6\",0.01,\"~:height\",0.01,\"~:x1\",0,\"~:y1\",0,\"~:x2\",0.01,\"~:y2\",0.01]],\"~:fills\",[[\"^ \",\"~:fill-color\",\"#FFFFFF\",\"~:fill-opacity\",1]],\"~:flip-x\",null,\"^H\",0.01,\"~:flip-y\",null,\"~:shapes\",[\"~u3fc80ad6-7d08-8031-8006-fe0dba3fddf7\"]]]", + "~u3fc80ad6-7d08-8031-8006-fe0dba3fddf7": "[\"~#shape\",[\"^ \",\"~:y\",250,\"~:hide-fill-on-export\",false,\"~:transform\",[\"~#matrix\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:rotation\",0,\"~:grow-type\",\"~:fixed\",\"~:hide-in-viewer\",false,\"~:name\",\"Board\",\"~:width\",265,\"~:type\",\"~:frame\",\"~:points\",[[\"~#point\",[\"^ \",\"~:x\",616,\"~:y\",250]],[\"^=\",[\"^ \",\"~:x\",881,\"~:y\",250]],[\"^=\",[\"^ \",\"~:x\",881,\"~:y\",494]],[\"^=\",[\"^ \",\"~:x\",616,\"~:y\",494]]],\"~:r2\",0,\"~:proportion-lock\",false,\"~:transform-inverse\",[\"^3\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:exports\",[[\"^ \",\"^:\",\"~:png\",\"~:suffix\",\"\",\"~:scale\",1]],\"~:r3\",0,\"~:r1\",0,\"~:id\",\"~u3fc80ad6-7d08-8031-8006-fe0dba3fddf7\",\"~:parent-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:frame-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:strokes\",[],\"~:x\",616,\"~:proportion\",1,\"~:r4\",0,\"~:selrect\",[\"~#rect\",[\"^ \",\"~:x\",616,\"~:y\",250,\"^9\",265,\"~:height\",244,\"~:x1\",616,\"~:y1\",250,\"~:x2\",881,\"~:y2\",494]],\"~:fills\",[[\"^ \",\"~:fill-color\",\"#FFFFFF\",\"~:fill-opacity\",1]],\"~:flip-x\",null,\"^O\",244,\"~:flip-y\",null,\"~:shapes\",[\"~u20a28a94-4ab0-801b-8006-fe0e8cee02c3\"]]]", + "~u20a28a94-4ab0-801b-8006-fe0e8cee02c3": "[\"~#shape\",[\"^ \",\"~:y\",297.00000381469727,\"~:transform\",[\"~#matrix\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:rotation\",0,\"~:grow-type\",\"~:fixed\",\"~:hide-in-viewer\",false,\"~:name\",\"Rectangle\",\"~:width\",65,\"~:type\",\"~:rect\",\"~:points\",[[\"~#point\",[\"^ \",\"~:x\",644.0000085830688,\"~:y\",297.00000381469727]],[\"^<\",[\"^ \",\"~:x\",709.0000085830688,\"~:y\",297.00000381469727]],[\"^<\",[\"^ \",\"~:x\",709.0000085830688,\"~:y\",362.00000381469727]],[\"^<\",[\"^ \",\"~:x\",644.0000085830688,\"~:y\",362.00000381469727]]],\"~:r2\",0,\"~:proportion-lock\",false,\"~:transform-inverse\",[\"^2\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:r3\",0,\"~:constraints-v\",\"~:top\",\"~:constraints-h\",\"~:left\",\"~:r1\",0,\"~:id\",\"~u20a28a94-4ab0-801b-8006-fe0e8cee02c3\",\"~:parent-id\",\"~u3fc80ad6-7d08-8031-8006-fe0dba3fddf7\",\"~:frame-id\",\"~u3fc80ad6-7d08-8031-8006-fe0dba3fddf7\",\"~:strokes\",[],\"~:x\",644.0000085830688,\"~:proportion\",1,\"~:r4\",0,\"~:selrect\",[\"~#rect\",[\"^ \",\"~:x\",644.0000085830688,\"~:y\",297.00000381469727,\"^8\",65,\"~:height\",65,\"~:x1\",644.0000085830688,\"~:y1\",297.00000381469727,\"~:x2\",709.0000085830688,\"~:y2\",362.00000381469727]],\"~:fills\",[[\"^ \",\"~:fill-color\",\"#B1B2B5\",\"~:fill-opacity\",1]],\"~:flip-x\",null,\"^N\",65,\"~:flip-y\",null]]" + } + }, + "~:id": "~ufa6ce865-34dd-80ac-8006-fe0dab5539a8", + "~:name": "Page 1" + } + }, + "~:id": "~ufa6ce865-34dd-80ac-8006-fe0dab5539a7", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-12164.json b/frontend/playwright/data/render-wasm/get-file-12164.json new file mode 100644 index 0000000000..48e81a5ce7 --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-12164.json @@ -0,0 +1,352 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u9e6e22b2-db76-81d6-8006-75d7cdbb8bad", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "Fonts 404", + "~:revn": 19, + "~:modified-at": "~m1759132541408", + "~:vern": 0, + "~:id": "~u2b7f0188-51a1-8193-8006-e05bad874e2e", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes", + "0011-fix-invalid-text-touched-flags", + "0012-fix-position-data" + ] + }, + "~:version": 67, + "~:project-id": "~u9e6e22b2-db76-81d6-8006-75d7cdc30669", + "~:created-at": "~m1759130833437", + "~:data": { + "~:pages": [ + "~u2b7f0188-51a1-8193-8006-e05bad87b74d" + ], + "~:pages-index": { + "~u2b7f0188-51a1-8193-8006-e05bad87b74d": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1.0, + "~:b": 0.0, + "~:c": 0.0, + "~:d": 1.0, + "~:e": 0.0, + "~:f": 0.0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0.0, + "~:y": 0.0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0.0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1.0, + "~:b": 0.0, + "~:c": 0.0, + "~:d": 1.0, + "~:e": 0.0, + "~:f": 0.0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1.0, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~u7871610d-0b65-80ab-8006-e05fca7deee1" + ] + } + }, + "~u7871610d-0b65-80ab-8006-e05fca7deee1": { + "~#shape": { + "~:y": 300.99999215481324, + "~:transform": { + "~#matrix": { + "~:a": 1.0, + "~:b": 0.0, + "~:c": 0.0, + "~:d": 1.0, + "~:e": 0.0, + "~:f": 0.0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1xox30r6xkg", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "italic", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "italic", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-crimson-pro", + "~:key": "12c4b2hqc44", + "~:font-size": "36", + "~:font-weight": "900", + "~:typography-ref-file": null, + "~:font-variant-id": "900italic", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Crimson Pro\"", + "~:text": "Lorem ipsum" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "gfont-crimson-pro", + "~:key": "10rq28ntdbm", + "~:font-size": "0", + "~:font-weight": "900", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "900italic", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Crimson Pro\"" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Lorem ispum", + "~:width": 210.00001307889704, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 313.00002239774085, + "~:y": 300.99999215481324 + } + }, + { + "~#point": { + "~:x": 523.0000354766379, + "~:y": 300.99999215481324 + } + }, + { + "~#point": { + "~:x": 523.0000354766379, + "~:y": 343.99999156766836 + } + }, + { + "~#point": { + "~:x": 313.00002239774085, + "~:y": 343.99999156766836 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1.0, + "~:b": 0.0, + "~:c": 0.0, + "~:d": 1.0, + "~:e": 0.0, + "~:f": 0.0 + } + }, + "~:id": "~u7871610d-0b65-80ab-8006-e05fca7deee1", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 313.00002239774085, + "~:selrect": { + "~#rect": { + "~:x": 313.00002239774085, + "~:y": 300.99999215481324, + "~:width": 210.00001307889704, + "~:height": 42.99999941285512, + "~:x1": 313.00002239774085, + "~:y1": 300.99999215481324, + "~:x2": 523.0000354766379, + "~:y2": 343.99999156766836 + } + }, + "~:flip-x": null, + "~:height": 42.99999941285512, + "~:flip-y": null + } + } + }, + "~:id": "~u2b7f0188-51a1-8193-8006-e05bad87b74d", + "~:name": "Page 1" + } + }, + "~:id": "~u2b7f0188-51a1-8193-8006-e05bad874e2e", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} diff --git a/frontend/playwright/data/render-wasm/get-file-frame-clipping-shadows-and-texts.json b/frontend/playwright/data/render-wasm/get-file-frame-clipping-shadows-and-texts.json new file mode 100644 index 0000000000..6a83bd58a3 --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-frame-clipping-shadows-and-texts.json @@ -0,0 +1,1118 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "update-texts-shadows-clipping", + "~:revn": 258, + "~:modified-at": "~m1757428097435", + "~:vern": 0, + "~:id": "~u44471494-966a-8178-8006-c5bd93f0fe72", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1757344558019", + "~:data": { + "~:pages": [ + "~u44471494-966a-8178-8006-c5bd93f0fe73" + ], + "~:pages-index": { + "~u44471494-966a-8178-8006-c5bd93f0fe73": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6" + ] + } + }, + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e8": { + "~#shape": { + "~:y": 232.22042756482634, + "~:transform": { + "~#matrix": { + "~:a": 0.9443738873933403, + "~:b": -0.32887377640911275, + "~:c": 0.32887369880559447, + "~:d": 0.9443739144183976, + "~:e": 2.2737367544323206e-13, + "~:f": 6.821210263296962e-13 + } + }, + "~:rotation": 340.79956734260065, + "~:last-resize-direction": "~:vertical", + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1otdj8747ov", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1ppxneff2xr", + "~:font-size": "400", + "~:font-weight": "400", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#147bd7", + "~:fill-opacity": 0.43333333333333335 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "HOLA" + } + ], + "~:text-transform": "none", + "~:text-align": "justify", + "~:font-id": "sourcesanspro", + "~:key": "2afvsygzvt", + "~:font-size": "400", + "~:font-weight": "400", + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#147bd7", + "~:fill-opacity": 0.43333333333333335 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "HOLA", + "~:width": 939.9999777779914, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -141.00000230643664, + "~:y": 400.1413168166523 + } + }, + { + "~#point": { + "~:x": 746.7113407198956, + "~:y": 91.00002923471884 + } + }, + { + "~#point": { + "~:x": 904.5708240747189, + "~:y": 544.2995494560472 + } + }, + { + "~#point": { + "~:x": 16.85948104838637, + "~:y": 853.44083703798 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9443739144184007, + "~:b": 0.32887377640911386, + "~:c": -0.3288736988055956, + "~:d": 0.9443738873933434, + "~:e": 9.60589704809217e-15, + "~:f": -7.189545246067483e-13 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:layout-item-v-sizing": "~:fix", + "~:constraints-v": "~:top", + "~:constraints-h": "~:left", + "~:id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e8", + "~:parent-id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:position-data": [ + { + "~#rect": { + "~:y": 731.7204275648263, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "400px", + "~:font-weight": "400", + "~:y1": -19.5, + "~:width": 939.2666625976562, + "~:text-decoration": "rgba(20, 123, 215, 0.433)", + "~:letter-spacing": "normal", + "~:x": -88.2145780048542, + "~:x1": 0, + "~:y2": 499.5, + "~:fills": [ + { + "~:fill-color": "#147bd7", + "~:fill-opacity": 0.43333333333333335 + } + ], + "~:x2": 939.2666625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 519, + "~:text": "HOLA" + } + } + ], + "~:frame-id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 10, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": -88.2145780048542, + "~:shadow": [ + { + "~:color": { + "~:color": "#1900ff", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": -10, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u56e0aa75-f920-805c-8006-c6d0a7251cac", + "~:offset-x": -10 + }, + { + "~:color": { + "~:color": "#ea1111", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u757a30c8-2a19-8062-8006-bdd7693703f6", + "~:offset-x": 20 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -88.2145780048542, + "~:y": 232.22042756482634, + "~:width": 939.9999777779914, + "~:height": 480.00001114304814, + "~:x1": -88.2145780048542, + "~:y1": 232.22042756482634, + "~:x2": 851.7853997731372, + "~:y2": 712.2204387078745 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 480.00001114304814, + "~:flip-y": null + } + }, + "~u4c99f1a5-5581-806f-8006-c6e810ac2d66": { + "~#shape": { + "~:y": -580.7795287106788, + "~:transform": { + "~#matrix": { + "~:a": 0.9443738873933403, + "~:b": -0.32887377640911275, + "~:c": 0.32887369880559447, + "~:d": 0.9443739144183976, + "~:e": 2.2737367544323206e-13, + "~:f": 6.821210263296962e-13 + } + }, + "~:rotation": 340.79956734260065, + "~:last-resize-direction": "~:vertical", + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1otdj8747ov", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1ppxneff2xr", + "~:font-size": "400", + "~:font-weight": "400", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#b1b2b5", + "~:fill-opacity": 0.35555555555555557 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "HOLA" + } + ], + "~:text-transform": "none", + "~:text-align": "justify", + "~:font-id": "sourcesanspro", + "~:key": "2afvsygzvt", + "~:font-size": "400", + "~:font-weight": "400", + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#b1b2b5", + "~:fill-opacity": 0.35555555555555557 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "HOLA", + "~:width": 939.9999553167295, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -141.00001536206545, + "~:y": -412.8586424988404 + } + }, + { + "~#point": { + "~:x": 746.7115201226542, + "~:y": -722.0000288567821 + } + }, + { + "~#point": { + "~:x": 904.5708952607965, + "~:y": -268.70055649684616 + } + }, + { + "~#point": { + "~:x": 16.859359776077056, + "~:y": 40.44082986109797 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9443739144184007, + "~:b": 0.32887377640911386, + "~:c": -0.3288736988055956, + "~:d": 0.9443738873933434, + "~:e": 9.60589704809217e-15, + "~:f": -7.189545246067483e-13 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:layout-item-v-sizing": "~:fix", + "~:constraints-v": "~:top", + "~:constraints-h": "~:left", + "~:id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d66", + "~:parent-id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:position-data": [ + { + "~#rect": { + "~:y": -81.27952871067885, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "400px", + "~:font-weight": "400", + "~:y1": -19.5, + "~:width": 939.2666625976562, + "~:text-decoration": "rgba(177, 178, 181, 0.356)", + "~:letter-spacing": "normal", + "~:x": -88.21453770899959, + "~:x1": 0, + "~:y2": 499.5, + "~:fills": [ + { + "~:fill-color": "#b1b2b5", + "~:fill-opacity": 0.35555555555555557 + } + ], + "~:x2": 939.2666625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 519, + "~:text": "HOLA" + } + } + ], + "~:frame-id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 10, + "~:stroke-color": "#000000", + "~:stroke-opacity": 0.4166666666666667 + } + ], + "~:x": -88.21453770899959, + "~:shadow": [ + { + "~:color": { + "~:color": "#1900ff", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": -10, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u56e0aa75-f920-805c-8006-c6d0a7251cac", + "~:offset-x": -10 + }, + { + "~:color": { + "~:color": "#ea1111", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u757a30c8-2a19-8062-8006-bdd7693703f6", + "~:offset-x": 20 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -88.21453770899959, + "~:y": -580.7795287106788, + "~:width": 939.9999553167295, + "~:height": 479.99985842567, + "~:x1": -88.21453770899959, + "~:y1": -580.7795287106788, + "~:x2": 851.7854176077299, + "~:y2": -100.77967028500882 + } + }, + "~:flip-x": null, + "~:height": 479.99985842567, + "~:flip-y": null + } + }, + "~u4c99f1a5-5581-806f-8006-c6e810ac2d64": { + "~#shape": { + "~:y": -574.9999832321141, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": true, + "~:name": "Board", + "~:width": 1103.9998207331741, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": -186.99999775378137, + "~:y": -574.9999848183147 + } + }, + { + "~#point": { + "~:x": 916.9998229793928, + "~:y": -574.9999816459126 + } + }, + { + "~#point": { + "~:x": 916.9998208253946, + "~:y": -40.55006952257736 + } + }, + { + "~#point": { + "~:x": -186.9999999077786, + "~:y": -40.55007269497946 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:opacity": 0.8, + "~:id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 10, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": -186.99999883077953, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ffb200", + "~:opacity": 0.5888888888888889 + }, + "~:spread": 0, + "~:offset-y": -40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u56e0aa75-f920-805c-8006-c6d0be01f1e7", + "~:offset-x": -40 + }, + { + "~:color": { + "~:color": "#00d514", + "~:opacity": 0.5555555555555556 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ucac62c62-a28f-80cc-8006-c5bf5784705d", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": -186.99999883077953, + "~:y": -574.9999832321141, + "~:width": 1103.9998207331741, + "~:height": 534.4499121233357, + "~:x1": -186.99999883077953, + "~:y1": -574.9999832321141, + "~:x2": 916.9998219023946, + "~:y2": -40.55007110877841 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 534.4499121233357, + "~:flip-y": null, + "~:shapes": [ + "~u4c99f1a5-5581-806f-8006-c6e810ac2d65", + "~u4c99f1a5-5581-806f-8006-c6e810ac2d66" + ] + } + }, + "~u4c99f1a5-5581-806f-8006-c6e810ac2d65": { + "~#shape": { + "~:y": -142.05052225711233, + "~:transform": { + "~#matrix": { + "~:a": 0.9876772541628087, + "~:b": -0.15650444597331514, + "~:c": 0.1565043820633818, + "~:d": 0.987677264289788, + "~:e": 1.864464138634503e-11, + "~:f": 1.5916157281026244e-11 + } + }, + "~:rotation": 350.9959394515914, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 224.8679636613706, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 813.9999374477284, + "~:y": -123.8071608518776 + } + }, + { + "~#point": { + "~:x": 1036.0969103459738, + "~:y": -158.99999692184792 + } + }, + { + "~#point": { + "~:x": 1052.5298639971734, + "~:y": -55.2939249740125 + } + }, + { + "~#point": { + "~:x": 830.4328910989279, + "~:y": -20.101088904041262 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9876772642897899, + "~:b": 0.15650444597331545, + "~:c": -0.1565043820633821, + "~:d": 0.9876772541628106, + "~:e": -1.592394003803884e-11, + "~:f": -1.8637995790688502e-11 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d65", + "~:parent-id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:frame-id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 10 + } + ], + "~:x": 820.8309188917665, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#3d53e5", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u718f9fbe-f44a-80dc-8006-c6989bce7b0d", + "~:offset-x": 20 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 820.8309188917665, + "~:y": -142.05052225711233, + "~:width": 224.8679636613706, + "~:height": 104.99995868833639, + "~:x1": 820.8309188917665, + "~:y1": -142.05052225711233, + "~:x2": 1045.698882553137, + "~:y2": -37.05056356877594 + } + }, + "~:fills": [ + { + "~:fill-color": "#e17fda", + "~:fill-opacity": 0.3388888888888889 + } + ], + "~:flip-x": null, + "~:height": 104.99995868833639, + "~:flip-y": null + } + }, + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e7": { + "~#shape": { + "~:y": 670.9495170155224, + "~:transform": { + "~#matrix": { + "~:a": 0.9876772541628087, + "~:b": -0.15650444597331514, + "~:c": 0.1565043820633818, + "~:d": 0.987677264289788, + "~:e": 1.864464138634503e-11, + "~:f": 1.5916157281026244e-11 + } + }, + "~:rotation": 350.9959394515914, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 224.8679636613715, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 814.0000142069011, + "~:y": 689.1928784207576 + } + }, + { + "~#point": { + "~:x": 1036.0969871051466, + "~:y": 654.0000423507863 + } + }, + { + "~#point": { + "~:x": 1052.5299407563462, + "~:y": 757.7061142986222 + } + }, + { + "~#point": { + "~:x": 830.4329678580998, + "~:y": 792.8989503685934 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9876772642897899, + "~:b": 0.15650444597331545, + "~:c": -0.1565043820633821, + "~:d": 0.9876772541628106, + "~:e": -1.592394003803884e-11, + "~:f": -1.8637995790688502e-11 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e7", + "~:parent-id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:frame-id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 10 + } + ], + "~:x": 820.8309956509383, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#3d53e5", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u718f9fbe-f44a-80dc-8006-c6989bce7b0d", + "~:offset-x": 20 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 820.8309956509383, + "~:y": 670.9495170155224, + "~:width": 224.8679636613715, + "~:height": 104.99995868833685, + "~:x1": 820.8309956509383, + "~:y1": 670.9495170155224, + "~:x2": 1045.6989593123099, + "~:y2": 775.9494757038592 + } + }, + "~:fills": [ + { + "~:fill-color": "#e17fda", + "~:fill-opacity": 0.3388888888888889 + } + ], + "~:flip-x": null, + "~:height": 104.99995868833685, + "~:flip-y": null + } + }, + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6": { + "~#shape": { + "~:y": 237.99999500536433, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": true, + "~:name": "Board", + "~:width": 1103.9998207331746, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": -186.99999728855437, + "~:y": 237.99999341916373 + } + }, + { + "~#point": { + "~:x": 916.9998234446202, + "~:y": 237.99999659156583 + } + }, + { + "~#point": { + "~:x": 916.9998212906212, + "~:y": 772.4499087149015 + } + }, + { + "~#point": { + "~:x": -186.9999994425516, + "~:y": 772.4499055424985 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:r3": 0, + "~:blur": { + "~:id": "~u61d06cb5-830a-802f-8006-c6f910826daa", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:r1": 0, + "~:hidden": false, + "~:opacity": 0.8, + "~:id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 10, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": -186.99999836555253, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ffb200", + "~:opacity": 0.5888888888888889 + }, + "~:spread": 0, + "~:offset-y": -40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u56e0aa75-f920-805c-8006-c6d0be01f1e7", + "~:offset-x": -40 + }, + { + "~:color": { + "~:color": "#00d514", + "~:opacity": 0.5555555555555556 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ucac62c62-a28f-80cc-8006-c5bf5784705d", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": -186.99999836555253, + "~:y": 237.99999500536433, + "~:width": 1103.9998207331746, + "~:height": 534.4499121233357, + "~:x1": -186.99999836555253, + "~:y1": 237.99999500536433, + "~:x2": 916.9998223676221, + "~:y2": 772.4499071287 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 534.4499121233357, + "~:flip-y": null, + "~:shapes": [ + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e7", + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e8" + ] + } + } + }, + "~:id": "~u44471494-966a-8178-8006-c5bd93f0fe73", + "~:name": "Page 1" + } + }, + "~:id": "~u44471494-966a-8178-8006-c5bd93f0fe72", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-shadows.json b/frontend/playwright/data/render-wasm/get-file-shadows.json new file mode 100644 index 0000000000..31bec85517 --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-shadows.json @@ -0,0 +1,10098 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/pointer-map", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~ueba8fa2e-4140-8084-8005-448635d7a724", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "New File 6", + "~:revn": 1, + "~:modified-at": "~m1757142143405", + "~:vern": 0, + "~:id": "~u9502081a-e1a4-80bc-8006-c2b968723199", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~ueba8fa2e-4140-8084-8005-448635da32b4", + "~:created-at": "~m1757142138312", + "~:data": { + "~:pages": [ + "~u9502081a-e1a4-80bc-8006-c2b96872319a" + ], + "~:pages-index": { + "~u9502081a-e1a4-80bc-8006-c2b96872319a": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc7fdf", + "~u813630e3-7f07-80da-8006-c2b969bc7fe2", + "~u813630e3-7f07-80da-8006-c2b969bc7fe4", + "~u813630e3-7f07-80da-8006-c2b969bc7fe5", + "~u813630e3-7f07-80da-8006-c2b969bc7fe6", + "~u813630e3-7f07-80da-8006-c2b969bc7fe7", + "~u813630e3-7f07-80da-8006-c2b969bc7fe8", + "~u813630e3-7f07-80da-8006-c2b969bc7fe9", + "~u813630e3-7f07-80da-8006-c2b969bc7fea", + "~u813630e3-7f07-80da-8006-c2b969bc7feb", + "~u813630e3-7f07-80da-8006-c2b969bc7fec", + "~u813630e3-7f07-80da-8006-c2b969bc7fed", + "~u813630e3-7f07-80da-8006-c2b969bc7fee", + "~u813630e3-7f07-80da-8006-c2b969bc7fef", + "~u813630e3-7f07-80da-8006-c2b969bc7ff0", + "~u813630e3-7f07-80da-8006-c2b969bc7ff1", + "~u813630e3-7f07-80da-8006-c2b969bc7ff2", + "~u813630e3-7f07-80da-8006-c2b969bc7ff3", + "~u813630e3-7f07-80da-8006-c2b969bc7ff4", + "~u813630e3-7f07-80da-8006-c2b969bc7ff5", + "~u813630e3-7f07-80da-8006-c2b969bc7ff6", + "~u813630e3-7f07-80da-8006-c2b969bc7ff9", + "~u813630e3-7f07-80da-8006-c2b969bc9bdc", + "~u813630e3-7f07-80da-8006-c2b969bc9bde", + "~u813630e3-7f07-80da-8006-c2b969bc9be0", + "~u813630e3-7f07-80da-8006-c2b969bc9be2", + "~u813630e3-7f07-80da-8006-c2b969bc9be4", + "~u813630e3-7f07-80da-8006-c2b969bc9be6", + "~u813630e3-7f07-80da-8006-c2b969bc9be8", + "~u813630e3-7f07-80da-8006-c2b969bc9bea", + "~u813630e3-7f07-80da-8006-c2b969bc9bec", + "~u813630e3-7f07-80da-8006-c2b969bc9bee", + "~u813630e3-7f07-80da-8006-c2b969bc9bf0", + "~u813630e3-7f07-80da-8006-c2b969bc9bf2", + "~u813630e3-7f07-80da-8006-c2b969bc9bf4", + "~u813630e3-7f07-80da-8006-c2b969bc9bf6", + "~u813630e3-7f07-80da-8006-c2b969bc9bf8", + "~u813630e3-7f07-80da-8006-c2b969bc9bfa", + "~u813630e3-7f07-80da-8006-c2b969bc9bfb", + "~u813630e3-7f07-80da-8006-c2b969bc9bfc", + "~u813630e3-7f07-80da-8006-c2b969bc9bfd", + "~u813630e3-7f07-80da-8006-c2b969bc9bfe", + "~u813630e3-7f07-80da-8006-c2b969bc9bff", + "~u813630e3-7f07-80da-8006-c2b969bc9c00", + "~u813630e3-7f07-80da-8006-c2b969bc9c01", + "~u813630e3-7f07-80da-8006-c2b969bc9c02", + "~u813630e3-7f07-80da-8006-c2b969bc9c03", + "~u813630e3-7f07-80da-8006-c2b969bc9c04", + "~u813630e3-7f07-80da-8006-c2b969bc9c05", + "~u813630e3-7f07-80da-8006-c2b969bc9c06", + "~u813630e3-7f07-80da-8006-c2b969bc9c07", + "~u813630e3-7f07-80da-8006-c2b969bc9c08", + "~u813630e3-7f07-80da-8006-c2b969bc9c09", + "~u813630e3-7f07-80da-8006-c2b969bc9c0a", + "~u813630e3-7f07-80da-8006-c2b969bc9c0b", + "~u813630e3-7f07-80da-8006-c2b969bc9c0c", + "~u813630e3-7f07-80da-8006-c2b969bc9c0e", + "~u813630e3-7f07-80da-8006-c2b969bc9c10", + "~u813630e3-7f07-80da-8006-c2b969bc9c12", + "~u813630e3-7f07-80da-8006-c2b969bc9c14" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe0": { + "~#shape": { + "~:y": 4864.79091500983, + "~:transform": { + "~#matrix": { + "~:a": 0.875521645611856, + "~:b": -0.483178898613245, + "~:c": 0.483178842426414, + "~:d": 0.875521676619982, + "~:e": 1.00044417195022e-11, + "~:f": 1.38697942020372e-11 + } + }, + "~:rotation": 331.106771530248, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 224.867986830995, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 4678.00025480242, + "~:y": 4925.65175652314 + } + }, + { + "~#point": { + "~:x": 4874.87704467812, + "~:y": 4817.00029031276 + } + }, + { + "~#point": { + "~:x": 4925.61079542329, + "~:y": 4908.93001614796 + } + }, + { + "~#point": { + "~:x": 4728.73400554759, + "~:y": 5017.58148235834 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.875521676619987, + "~:b": 0.483178898613247, + "~:c": -0.483178842426416, + "~:d": 0.87552164561186, + "~:e": -2.05751448067259e-12, + "~:f": -1.69772401753349e-11 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe0", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc7fdf", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc7fdf", + "~:strokes": [], + "~:x": 4689.37153169736, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 4689.37153169736, + "~:y": 4864.79091500983, + "~:width": 224.867986830995, + "~:height": 104.999942651446, + "~:x1": 4689.37153169736, + "~:y1": 4864.79091500983, + "~:x2": 4914.23951852835, + "~:y2": 4969.79085766127 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 104.999942651446, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be0": { + "~#shape": { + "~:y": 2566.00032561364, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 1270.00003131535, + "~:y": 2566.00032561364 + } + }, + { + "~#point": { + "~:x": 1746.17594840024, + "~:y": 2566.00032561364 + } + }, + { + "~#point": { + "~:x": 1746.17594840024, + "~:y": 3042.00034766736 + } + }, + { + "~#point": { + "~:x": 1270.00003131535, + "~:y": 3042.00034766736 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be0", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 1270.00003131535, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1270.00003131535, + "~:y": 2566.00032561364, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 1270.00003131535, + "~:y1": 2566.00032561364, + "~:x2": 1746.17594840024, + "~:y2": 3042.00034766736 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9be1" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c00": { + "~#shape": { + "~:y": 1481.00031547019, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 1237.00011775044, + "~:y": 1481.00031547019 + } + }, + { + "~#point": { + "~:x": 1429.00011775044, + "~:y": 1481.00031547019 + } + }, + { + "~#point": { + "~:x": 1429.00011775044, + "~:y": 1660.00031547019 + } + }, + { + "~#point": { + "~:x": 1237.00011775044, + "~:y": 1660.00031547019 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c00", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 1237.00011775044, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1237.00011775044, + "~:y": 1481.00031547019, + "~:width": 192, + "~:height": 179, + "~:x1": 1237.00011775044, + "~:y1": 1481.00031547019, + "~:x2": 1429.00011775044, + "~:y2": 1660.00031547019 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe1": { + "~#shape": { + "~:y": 5005.52952441881, + "~:transform": { + "~#matrix": { + "~:a": 0.875521645343034, + "~:b": -0.48317889910035, + "~:c": 0.483178913552956, + "~:d": 0.875521637366997, + "~:e": -9.09494701772928e-13, + "~:f": -4.09272615797818e-12 + } + }, + "~:rotation": 331.106771530248, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "1otdj8747ov", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1ppxneff2xr", + "~:font-size": "400", + "~:font-weight": "400", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "HOLA" + } + ], + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "2afvsygzvt", + "~:font-size": "400", + "~:font-weight": "400", + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "HOLA", + "~:width": 986.211331368466, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 4062.0000545014, + "~:y": 5267.51689202866 + } + }, + { + "~#point": { + "~:x": 4925.44942199707, + "~:y": 4791.00038665776 + } + }, + { + "~#point": { + "~:x": 5109.66469806955, + "~:y": 5124.79901820196 + } + }, + { + "~#point": { + "~:x": 4246.21533057388, + "~:y": 5601.31552357287 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.875521637366997, + "~:b": 0.48317889910035, + "~:c": -0.483178913552956, + "~:d": 0.875521645343034, + "~:e": -1.18123668800882e-12, + "~:f": 4.02271898851177e-12 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:constraints-v": "~:top", + "~:constraints-h": "~:left", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe1", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc7fdf", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc7fdf", + "~:strokes": [], + "~:x": 4092.72671060124, + "~:shadow": [ + { + "~:color": { + "~:color": "#ea1212", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u757a30c8-2a19-8062-8006-bdd7693703f6", + "~:offset-x": 20 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 4092.72671060124, + "~:y": 5005.52952441881, + "~:width": 986.211331368466, + "~:height": 381.256861393003, + "~:x1": 4092.72671060124, + "~:y1": 5005.52952441881, + "~:x2": 5078.93804196971, + "~:y2": 5386.78638581181 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 381.256861393003, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be1": { + "~#shape": { + "~:y": 2925.00035033024, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 1628.0000529461, + "~:y": 2925.00035033024 + } + }, + { + "~#point": { + "~:x": 1898.9300503495, + "~:y": 2925.00035033024 + } + }, + { + "~#point": { + "~:x": 1898.9300503495, + "~:y": 3195.93160099633 + } + }, + { + "~#point": { + "~:x": 1628.0000529461, + "~:y": 3195.93160099633 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be1", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9be0", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9be0", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 1628.0000529461, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#094ae0", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": true, + "~:id": "~udca35925-f5a2-8083-8006-b60be22fea0c", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1628.0000529461, + "~:y": 2925.00035033024, + "~:width": 270.929997403396, + "~:height": 270.931250666089, + "~:x1": 1628.0000529461, + "~:y1": 2925.00035033024, + "~:x2": 1898.9300503495, + "~:y2": 3195.93160099633 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931250666089, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c01": { + "~#shape": { + "~:y": 1481.00031547019, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 875.00011775044, + "~:y": 1481.00031547019 + } + }, + { + "~#point": { + "~:x": 1067.00011775044, + "~:y": 1481.00031547019 + } + }, + { + "~#point": { + "~:x": 1067.00011775044, + "~:y": 1660.00031547019 + } + }, + { + "~#point": { + "~:x": 875.00011775044, + "~:y": 1660.00031547019 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c01", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:center", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 875.00011775044, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 875.00011775044, + "~:y": 1481.00031547019, + "~:width": 192, + "~:height": 179, + "~:x1": 875.00011775044, + "~:y1": 1481.00031547019, + "~:x2": 1067.00011775044, + "~:y2": 1660.00031547019 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe2": { + "~#shape": { + "~:y": 3766.45120593457, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 0.875521645210578, + "~:b": -0.483178899340361, + "~:c": 0.483178898327598, + "~:d": 0.875521645769497, + "~:e": 9.09494701772928e-13, + "~:f": 2.27373675443232e-13 + } + }, + "~:rotation": 331.106771530248, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Board", + "~:width": 1103.99984135388, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 3740.00013797052, + "~:y": 4066.4296434044 + } + }, + { + "~#point": { + "~:x": 4706.57589538488, + "~:y": 3533.0002151871 + } + }, + { + "~#point": { + "~:x": 4964.81081995927, + "~:y": 4000.92269057062 + } + }, + { + "~#point": { + "~:x": 3998.23506254491, + "~:y": 4534.35211878792 + } + } + ], + "~:r2": 20, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.875521645769497, + "~:b": 0.483178899340361, + "~:c": -0.483178898327598, + "~:d": 0.875521645210578, + "~:e": -6.86420136105515e-13, + "~:f": -6.38519223360168e-13 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:r1": 20, + "~:opacity": 0.8, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe2", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:center", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 3800.40555828795, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#140a67", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 300, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~ud2b53ca8-aebb-8099-8006-bdabce5cb46c", + "~:offset-x": 300 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 3800.40555828795, + "~:y": 3766.45120593457, + "~:width": 1103.99984135388, + "~:height": 534.449922105886, + "~:x1": 3800.40555828795, + "~:y1": 3766.45120593457, + "~:x2": 4904.40539964183, + "~:y2": 4300.90112804045 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 534.449922105886, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc7fe3" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be2": { + "~#shape": { + "~:y": 4981.00042962585, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084896, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 490.000059192417, + "~:y": 4981.00042962585 + } + }, + { + "~#point": { + "~:x": 966.175976277314, + "~:y": 4981.00042962585 + } + }, + { + "~#point": { + "~:x": 966.175976277314, + "~:y": 5457.00045167957 + } + }, + { + "~#point": { + "~:x": 490.000059192417, + "~:y": 5457.00045167957 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be2", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 490.000059192417, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 490.000059192417, + "~:y": 4981.00042962585, + "~:width": 476.175917084896, + "~:height": 476.000022053719, + "~:x1": 490.000059192417, + "~:y1": 4981.00042962585, + "~:x2": 966.175976277314, + "~:y2": 5457.00045167957 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9be3" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c02": { + "~#shape": { + "~:y": 1481.00031547019, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 513.00011775044, + "~:y": 1481.00031547019 + } + }, + { + "~#point": { + "~:x": 705.00011775044, + "~:y": 1481.00031547019 + } + }, + { + "~#point": { + "~:x": 705.00011775044, + "~:y": 1660.00031547019 + } + }, + { + "~#point": { + "~:x": 513.00011775044, + "~:y": 1660.00031547019 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c02", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 513.00011775044, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 513.00011775044, + "~:y": 1481.00031547019, + "~:width": 192, + "~:height": 179, + "~:x1": 513.00011775044, + "~:y1": 1481.00031547019, + "~:x2": 705.00011775044, + "~:y2": 1660.00031547019 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe3": { + "~#shape": { + "~:y": 3947.52954822035, + "~:transform": { + "~#matrix": { + "~:a": 0.875521645343034, + "~:b": -0.48317889910035, + "~:c": 0.483178913552956, + "~:d": 0.875521637366997, + "~:e": -9.09494701772928e-13, + "~:f": -4.09272615797818e-12 + } + }, + "~:rotation": 331.106771530248, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "1otdj8747ov", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1ppxneff2xr", + "~:font-size": "400", + "~:font-weight": "400", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "HOLA" + } + ], + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "2afvsygzvt", + "~:font-size": "400", + "~:font-weight": "400", + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "HOLA", + "~:width": 986.211331368466, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 3997.00007371149, + "~:y": 4209.51691583021 + } + }, + { + "~#point": { + "~:x": 4860.44944120715, + "~:y": 3733.0004104593 + } + }, + { + "~#point": { + "~:x": 5044.66471727964, + "~:y": 4066.7990420035 + } + }, + { + "~#point": { + "~:x": 4181.21534978397, + "~:y": 4543.31554737441 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.875521637366997, + "~:b": 0.48317889910035, + "~:c": -0.483178913552956, + "~:d": 0.875521645343034, + "~:e": -1.18123668800882e-12, + "~:f": 4.02271898851177e-12 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:constraints-v": "~:top", + "~:constraints-h": "~:left", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe3", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc7fe2", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc7fe2", + "~:strokes": [], + "~:x": 4027.72672981133, + "~:shadow": [ + { + "~:color": { + "~:color": "#ea1212", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u757a30c8-2a19-8062-8006-bdd7693703f6", + "~:offset-x": 20 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 4027.72672981133, + "~:y": 3947.52954822035, + "~:width": 986.211331368466, + "~:height": 381.256861393003, + "~:x1": 4027.72672981133, + "~:y1": 3947.52954822035, + "~:x2": 5013.9380611798, + "~:y2": 4328.78640961336 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 381.256861393003, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be3": { + "~#shape": { + "~:y": 5340.0002407194, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 848.000050305598, + "~:y": 5340.0002407194 + } + }, + { + "~#point": { + "~:x": 1118.93004770899, + "~:y": 5340.0002407194 + } + }, + { + "~#point": { + "~:x": 1118.93004770899, + "~:y": 5610.93149138549 + } + }, + { + "~#point": { + "~:x": 848.000050305598, + "~:y": 5610.93149138549 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be3", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9be2", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9be2", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 848.000050305598, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#094ae0", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": true, + "~:id": "~udca35925-f5a2-8083-8006-b60be22fea0c", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 848.000050305598, + "~:y": 5340.0002407194, + "~:width": 270.929997403396, + "~:height": 270.93125066609, + "~:x1": 848.000050305598, + "~:y1": 5340.0002407194, + "~:x2": 1118.93004770899, + "~:y2": 5610.93149138549 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c03": { + "~#shape": { + "~:y": 1199.0003002114, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 1237.00011775044, + "~:y": 1199.0003002114 + } + }, + { + "~#point": { + "~:x": 1429.00011775044, + "~:y": 1199.0003002114 + } + }, + { + "~#point": { + "~:x": 1429.00011775044, + "~:y": 1378.0003002114 + } + }, + { + "~#point": { + "~:x": 1237.00011775044, + "~:y": 1378.0003002114 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c03", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 1237.00011775044, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1237.00011775044, + "~:y": 1199.0003002114, + "~:width": 192, + "~:height": 179, + "~:x1": 1237.00011775044, + "~:y1": 1199.0003002114, + "~:x2": 1429.00011775044, + "~:y2": 1378.0003002114 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.6 + } + ], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe4": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAD/vyBFIS8PRQMAAAD/vyBFIS8PRR8gMUX9lQdF//8wRRAWCEUDAAAA298wRSOWCEW7qyxFAQAVRburLEUBABVFAgAAAAAAAAAAAAAAAAAAAAAAAAD/vyBFIS8PRQ==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 2572.00010497607, + "~:y": 2177.00026073771 + } + }, + { + "~#point": { + "~:x": 2831.99922798953, + "~:y": 2177.00026073771 + } + }, + { + "~#point": { + "~:x": 2831.99922798953, + "~:y": 2384.00021746085 + } + }, + { + "~#point": { + "~:x": 2572.00010497607, + "~:y": 2384.00021746085 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806fd3f80", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 2572.00010497607, + "~:y": 2177.00026073771, + "~:width": 259.999123013458, + "~:height": 206.999956723148, + "~:x1": 2572.00010497607, + "~:y1": 2177.00026073771, + "~:x2": 2831.99922798953, + "~:y2": 2384.00021746085 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be4": { + "~#shape": { + "~:y": 4981.00042962585, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 1270.00001192184, + "~:y": 4981.00042962585 + } + }, + { + "~#point": { + "~:x": 1746.17592900674, + "~:y": 4981.00042962585 + } + }, + { + "~#point": { + "~:x": 1746.17592900674, + "~:y": 5457.00045167957 + } + }, + { + "~#point": { + "~:x": 1270.00001192184, + "~:y": 5457.00045167957 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 1270.00001192184, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1270.00001192184, + "~:y": 4981.00042962585, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 1270.00001192184, + "~:y1": 4981.00042962585, + "~:x2": 1746.17592900674, + "~:y2": 5457.00045167957 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9be5" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c04": { + "~#shape": { + "~:y": 1199.0003002114, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 875.00011775044, + "~:y": 1199.0003002114 + } + }, + { + "~#point": { + "~:x": 1067.00011775044, + "~:y": 1199.0003002114 + } + }, + { + "~#point": { + "~:x": 1067.00011775044, + "~:y": 1378.0003002114 + } + }, + { + "~#point": { + "~:x": 875.00011775044, + "~:y": 1378.0003002114 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c04", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:center", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 875.00011775044, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 875.00011775044, + "~:y": 1199.0003002114, + "~:width": 192, + "~:height": 179, + "~:x1": 875.00011775044, + "~:y1": 1199.0003002114, + "~:x2": 1067.00011775044, + "~:y2": 1378.0003002114 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.6 + } + ], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe5": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAD/XwVFIS8PRQMAAAD/XwVFIS8PRR/AFUX9lQdF/58VRRAWCEUDAAAA338VRSOWCEW7SxFFAQAVRbtLEUUBABVFAgAAAAAAAAAAAAAAAAAAAAAAAAD/XwVFIS8PRQ==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 2134.00001815048, + "~:y": 2177.00029083787 + } + }, + { + "~#point": { + "~:x": 2393.99914116394, + "~:y": 2177.00029083787 + } + }, + { + "~#point": { + "~:x": 2393.99914116394, + "~:y": 2384.00024756102 + } + }, + { + "~#point": { + "~:x": 2134.00001815048, + "~:y": 2384.00024756102 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806fd6d62", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe5", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 2134.00001815048, + "~:y": 2177.00029083787, + "~:width": 259.999123013458, + "~:height": 206.999956723148, + "~:x1": 2134.00001815048, + "~:y1": 2177.00029083787, + "~:x2": 2393.99914116394, + "~:y2": 2384.00024756102 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be5": { + "~#shape": { + "~:y": 5340.0002407194, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 1628.00004881139, + "~:y": 5340.0002407194 + } + }, + { + "~#point": { + "~:x": 1898.93004621479, + "~:y": 5340.0002407194 + } + }, + { + "~#point": { + "~:x": 1898.93004621479, + "~:y": 5610.93149138549 + } + }, + { + "~#point": { + "~:x": 1628.00004881139, + "~:y": 5610.93149138549 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be5", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9be4", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9be4", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 1628.00004881139, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#094ae0", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": true, + "~:id": "~udca35925-f5a2-8083-8006-b60be22fea0c", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1628.00004881139, + "~:y": 5340.0002407194, + "~:width": 270.929997403396, + "~:height": 270.93125066609, + "~:x1": 1628.00004881139, + "~:y1": 5340.0002407194, + "~:x2": 1898.93004621479, + "~:y2": 5610.93149138549 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c05": { + "~#shape": { + "~:y": 1199.0003002114, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 513.00011775044, + "~:y": 1199.0003002114 + } + }, + { + "~#point": { + "~:x": 705.00011775044, + "~:y": 1199.0003002114 + } + }, + { + "~#point": { + "~:x": 705.00011775044, + "~:y": 1378.0003002114 + } + }, + { + "~#point": { + "~:x": 513.00011775044, + "~:y": 1378.0003002114 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c05", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 513.00011775044, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 513.00011775044, + "~:y": 1199.0003002114, + "~:width": 192, + "~:height": 179, + "~:x1": 513.00011775044, + "~:y1": 1199.0003002114, + "~:x2": 705.00011775044, + "~:y2": 1378.0003002114 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.6 + } + ], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe6": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAD/n91EIU8ORQMAAAD/n91EIU8ORUdg/kT9tQZF/x/+RBA2B0UDAAAAv9/9RCO2B0V/d/VEASAURX939UQBIBRFAgAAAAAAAAAAAAAAAAAAAAAAAAD/n91EIU8ORQ==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 1773.0000099915, + "~:y": 2163.00025701871 + } + }, + { + "~#point": { + "~:x": 2033.00012588905, + "~:y": 2163.00025701871 + } + }, + { + "~#point": { + "~:x": 2033.00012588905, + "~:y": 2370.00021374186 + } + }, + { + "~#point": { + "~:x": 1773.0000099915, + "~:y": 2370.00021374186 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806fd93d2", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1773.0000099915, + "~:y": 2163.00025701871, + "~:width": 260.000115897557, + "~:height": 206.999956723148, + "~:x1": 1773.0000099915, + "~:y1": 2163.00025701871, + "~:x2": 2033.00012588905, + "~:y2": 2370.00021374186 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be6": { + "~#shape": { + "~:y": 4172.0003451711, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 489.999996813684, + "~:y": 4172.0003451711 + } + }, + { + "~#point": { + "~:x": 966.17591389858, + "~:y": 4172.0003451711 + } + }, + { + "~#point": { + "~:x": 966.17591389858, + "~:y": 4648.00036722482 + } + }, + { + "~#point": { + "~:x": 489.999996813684, + "~:y": 4648.00036722482 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 489.999996813684, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 489.999996813684, + "~:y": 4172.0003451711, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 489.999996813684, + "~:y1": 4172.0003451711, + "~:x2": 966.17591389858, + "~:y2": 4648.00036722482 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9be7" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c06": { + "~#shape": { + "~:y": 860.000333928384, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 208.000215015414, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 1245.99996816991, + "~:y": 860.000333928384 + } + }, + { + "~#point": { + "~:x": 1454.00018318532, + "~:y": 860.000333928384 + } + }, + { + "~#point": { + "~:x": 1454.00018318532, + "~:y": 1050.00033303431 + } + }, + { + "~#point": { + "~:x": 1245.99996816991, + "~:y": 1050.00033303431 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c06", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 1245.99996816991, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1245.99996816991, + "~:y": 860.000333928384, + "~:width": 208.000215015414, + "~:height": 189.99999910593, + "~:x1": 1245.99996816991, + "~:y1": 860.000333928384, + "~:x2": 1454.00018318532, + "~:y2": 1050.00033303431 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 189.99999910593, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe7": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAAAUCJFQ17uRAMAAAAAUCJFQ17uRCCwMkX5K99EAJAyRSAs4EQDAAAA4G8yRUcs4US8Oy5FAwD6RLw7LkUDAPpEAgAAAAAAAAAAAAAAAAAAAAAAAAAAUCJFQ17uRA==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 2597.000027112, + "~:y": 1793.0003379051 + } + }, + { + "~#point": { + "~:x": 2857.00014300956, + "~:y": 1793.0003379051 + } + }, + { + "~#point": { + "~:x": 2857.00014300956, + "~:y": 2000.00041760119 + } + }, + { + "~#point": { + "~:x": 2597.000027112, + "~:y": 2000.00041760119 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806fdd2e6", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe7", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 2597.000027112, + "~:y": 1793.0003379051, + "~:width": 260.000115897557, + "~:height": 207.000079696094, + "~:x1": 2597.000027112, + "~:y1": 1793.0003379051, + "~:x2": 2857.00014300956, + "~:y2": 2000.0004176012 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be7": { + "~#shape": { + "~:y": 4531.00020204102, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 847.999987926864, + "~:y": 4531.00020204102 + } + }, + { + "~#point": { + "~:x": 1118.92998533026, + "~:y": 4531.00020204102 + } + }, + { + "~#point": { + "~:x": 1118.92998533026, + "~:y": 4801.93145270711 + } + }, + { + "~#point": { + "~:x": 847.999987926864, + "~:y": 4801.93145270711 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be7", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9be6", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9be6", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 847.999987926864, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#094ae0", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": true, + "~:id": "~udca35925-f5a2-8083-8006-b60be22fea0c", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 847.999987926864, + "~:y": 4531.00020204102, + "~:width": 270.929997403396, + "~:height": 270.93125066609, + "~:x1": 847.999987926864, + "~:y1": 4531.00020204102, + "~:x2": 1118.92998533026, + "~:y2": 4801.93145270711 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c07": { + "~#shape": { + "~:y": 860.000333928384, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 208.000215015413, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 867.999909199486, + "~:y": 860.000333928384 + } + }, + { + "~#point": { + "~:x": 1076.0001242149, + "~:y": 860.000333928384 + } + }, + { + "~#point": { + "~:x": 1076.0001242149, + "~:y": 1050.00033303431 + } + }, + { + "~#point": { + "~:x": 867.999909199486, + "~:y": 1050.00033303431 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c07", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 20, + "~:stroke-color": "#b7c821", + "~:stroke-opacity": 1 + } + ], + "~:x": 867.999909199486, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#00f080", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 867.999909199486, + "~:y": 860.000333928384, + "~:width": 208.000215015413, + "~:height": 189.99999910593, + "~:x1": 867.999909199486, + "~:y1": 860.000333928384, + "~:x2": 1076.0001242149, + "~:y2": 1050.00033303431 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 189.99999910593, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe8": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAAB8AZFQ17uRAMAAAAB8AZFQ17uRCFQF0X5K99EATAXRSAs4EQDAAAA4Q8XRUcs4US92xJFAwD6RL3bEkUDAPpEAgAAAAAAAAAAAAAAAAAAAAAAAAAB8AZFQ17uRA==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 2159.0000521047, + "~:y": 1793.00033748769 + } + }, + { + "~#point": { + "~:x": 2419.00016800225, + "~:y": 1793.00033748769 + } + }, + { + "~#point": { + "~:x": 2419.00016800225, + "~:y": 2000.00041718378 + } + }, + { + "~#point": { + "~:x": 2159.0000521047, + "~:y": 2000.00041718378 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806fe373e", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 2159.0000521047, + "~:y": 1793.00033748769, + "~:width": 260.000115897557, + "~:height": 207.000079696094, + "~:x1": 2159.0000521047, + "~:y1": 1793.00033748769, + "~:x2": 2419.00016800225, + "~:y2": 2000.00041718378 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be8": { + "~#shape": { + "~:y": 4172.0003451711, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 1270.00001057827, + "~:y": 4172.0003451711 + } + }, + { + "~#point": { + "~:x": 1746.17592766316, + "~:y": 4172.0003451711 + } + }, + { + "~#point": { + "~:x": 1746.17592766316, + "~:y": 4648.00036722482 + } + }, + { + "~#point": { + "~:x": 1270.00001057827, + "~:y": 4648.00036722482 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 1270.00001057827, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1270.00001057827, + "~:y": 4172.0003451711, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 1270.00001057827, + "~:y1": 4172.0003451711, + "~:x2": 1746.17592766316, + "~:y2": 4648.00036722482 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9be9" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c08": { + "~#shape": { + "~:y": 860.000304333057, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 207.999982557296, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 490.000002381843, + "~:y": 860.000304333057 + } + }, + { + "~#point": { + "~:x": 697.99998493914, + "~:y": 860.000304333057 + } + }, + { + "~#point": { + "~:x": 697.99998493914, + "~:y": 1050.00028704771 + } + }, + { + "~#point": { + "~:x": 490.000002381843, + "~:y": 1050.00028704771 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c08", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#d10202", + "~:stroke-opacity": 1 + } + ], + "~:x": 490.000002381844, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#c41414", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 490.000002381844, + "~:y": 860.000304333057, + "~:width": 207.999982557296, + "~:height": 189.999982714653, + "~:x1": 490.000002381844, + "~:y1": 860.000304333057, + "~:x2": 697.99998493914, + "~:y2": 1050.00028704771 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 189.999982714653, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fe9": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAD9v+BEQ57sRAMAAAD9v+BEQ57sRCLAAEX5a91E/p8ARSBs3kQDAAAA4n8ARUds30R9l/hEA0D4RH2X+EQDQPhEAgAAAAAAAAAAAAAAAAAAAAAAAAD9v+BEQ57sRA==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 1798.00002253, + "~:y": 1779.00034295752 + } + }, + { + "~#point": { + "~:x": 2058.00013842756, + "~:y": 1779.00034295752 + } + }, + { + "~#point": { + "~:x": 2058.00013842756, + "~:y": 1986.00042265362 + } + }, + { + "~#point": { + "~:x": 1798.00002253, + "~:y": 1986.00042265362 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806fe629c", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fe9", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1798.00002253, + "~:y": 1779.00034295752, + "~:width": 260.000115897557, + "~:height": 207.000079696094, + "~:x1": 1798.00002253, + "~:y1": 1779.00034295752, + "~:x2": 2058.00013842756, + "~:y2": 1986.00042265362 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9be9": { + "~#shape": { + "~:y": 4531.00020204102, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 1628.00003220903, + "~:y": 4531.00020204102 + } + }, + { + "~#point": { + "~:x": 1898.93002961242, + "~:y": 4531.00020204102 + } + }, + { + "~#point": { + "~:x": 1898.93002961242, + "~:y": 4801.93145270711 + } + }, + { + "~#point": { + "~:x": 1628.00003220903, + "~:y": 4801.93145270711 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~ud486afaf-89ba-805d-8006-bda7598f6705", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9be9", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9be8", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9be8", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 1628.00003220903, + "~:proportion": 1, + "~:shadow": [], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1628.00003220903, + "~:y": 4531.00020204102, + "~:width": 270.929997403396, + "~:height": 270.93125066609, + "~:x1": 1628.00003220903, + "~:y1": 4531.00020204102, + "~:x2": 1898.93002961242, + "~:y2": 4801.93145270711 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c09": { + "~#shape": { + "~:y": 526.000362648321, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 208.00019713402, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 1233.0000454261, + "~:y": 526.000362648321 + } + }, + { + "~#point": { + "~:x": 1441.00024256012, + "~:y": 526.000362648321 + } + }, + { + "~#point": { + "~:x": 1441.00024256012, + "~:y": 716.000361754251 + } + }, + { + "~#point": { + "~:x": 1233.0000454261, + "~:y": 716.000361754251 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c09", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 1233.0000454261, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1233.0000454261, + "~:y": 526.000362648321, + "~:width": 208.00019713402, + "~:height": 189.99999910593, + "~:x1": 1233.0000454261, + "~:y1": 526.000362648321, + "~:x2": 1441.00024256012, + "~:y2": 716.000361754251 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": 189.99999910593, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fea": { + "~#shape": { + "~:y": 1497.00032895324, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 2567.00012774194, + "~:y": 1497.00032895324 + } + }, + { + "~#point": { + "~:x": 2759.00012774194, + "~:y": 1497.00032895324 + } + }, + { + "~#point": { + "~:x": 2759.00012774194, + "~:y": 1676.00032895324 + } + }, + { + "~#point": { + "~:x": 2567.00012774194, + "~:y": 1676.00032895324 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806fe80e7", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fea", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 2567.00012774194, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 2567.00012774194, + "~:y": 1497.00032895324, + "~:width": 192, + "~:height": 179, + "~:x1": 2567.00012774194, + "~:y1": 1497.00032895324, + "~:x2": 2759.00012774194, + "~:y2": 1676.00032895324 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bea": { + "~#shape": { + "~:y": 3374.0003200719, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 2014.00013388588, + "~:y": 3374.0003200719 + } + }, + { + "~#point": { + "~:x": 2490.17605097078, + "~:y": 3374.0003200719 + } + }, + { + "~#point": { + "~:x": 2490.17605097078, + "~:y": 3850.00034212562 + } + }, + { + "~#point": { + "~:x": 2014.00013388588, + "~:y": 3850.00034212562 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bea", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 2014.00013388588, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2014.00013388588, + "~:y": 3374.0003200719, + "~:width": 476.175917084897, + "~:height": 476.00002205372, + "~:x1": 2014.00013388588, + "~:y1": 3374.0003200719, + "~:x2": 2490.17605097078, + "~:y2": 3850.00034212562 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 476.00002205372, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9beb" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c0a": { + "~#shape": { + "~:y": 526.000362648321, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 207.999946794509, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 862.000123115399, + "~:y": 526.000362648321 + } + }, + { + "~#point": { + "~:x": 1070.00006990991, + "~:y": 526.000362648321 + } + }, + { + "~#point": { + "~:x": 1070.00006990991, + "~:y": 716.000361754251 + } + }, + { + "~#point": { + "~:x": 862.000123115399, + "~:y": 716.000361754251 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c0a", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 20, + "~:stroke-color": "#b7c821", + "~:stroke-opacity": 1 + } + ], + "~:x": 862.000123115399, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#00f080", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 862.000123115399, + "~:y": 526.000362648321, + "~:width": 207.999946794509, + "~:height": 189.99999910593, + "~:x1": 862.000123115399, + "~:y1": 526.000362648321, + "~:x2": 1070.00006990991, + "~:y2": 716.000361754251 + } + }, + "~:fills": [ + { + "~:fill-color": "#7f5217", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": 189.99999910593, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7feb": { + "~#shape": { + "~:y": 1497.00032895324, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 2205.00012774194, + "~:y": 1497.00032895324 + } + }, + { + "~#point": { + "~:x": 2397.00012774194, + "~:y": 1497.00032895324 + } + }, + { + "~#point": { + "~:x": 2397.00012774194, + "~:y": 1676.00032895324 + } + }, + { + "~#point": { + "~:x": 2205.00012774194, + "~:y": 1676.00032895324 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806fecd76", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7feb", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:center", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 2205.00012774194, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 2205.00012774194, + "~:y": 1497.00032895324, + "~:width": 192, + "~:height": 179, + "~:x1": 2205.00012774194, + "~:y1": 1497.00032895324, + "~:x2": 2397.00012774194, + "~:y2": 1676.00032895324 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9beb": { + "~#shape": { + "~:y": 3733.00037530608, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 2372.00012499907, + "~:y": 3733.00037530608 + } + }, + { + "~#point": { + "~:x": 2642.93012240246, + "~:y": 3733.00037530608 + } + }, + { + "~#point": { + "~:x": 2642.93012240246, + "~:y": 4003.93162597217 + } + }, + { + "~#point": { + "~:x": 2372.00012499907, + "~:y": 4003.93162597217 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9beb", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bea", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bea", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 2372.00012499907, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2372.00012499907, + "~:y": 3733.00037530608, + "~:width": 270.929997403396, + "~:height": 270.93125066609, + "~:x1": 2372.00012499907, + "~:y1": 3733.00037530608, + "~:x2": 2642.93012240246, + "~:y2": 4003.93162597217 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c0b": { + "~#shape": { + "~:y": 526.000362111881, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 207.999946794509, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 490.000035641214, + "~:y": 526.000362111881 + } + }, + { + "~#point": { + "~:x": 697.999982435724, + "~:y": 526.000362111881 + } + }, + { + "~#point": { + "~:x": 697.999982435724, + "~:y": 716.000344826534 + } + }, + { + "~#point": { + "~:x": 490.000035641214, + "~:y": 716.000344826534 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c0b", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#d10202", + "~:stroke-opacity": 1 + } + ], + "~:x": 490.000035641215, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#c41414", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 490.000035641215, + "~:y": 526.000362111881, + "~:width": 207.999946794509, + "~:height": 189.999982714653, + "~:x1": 490.000035641215, + "~:y1": 526.000362111881, + "~:x2": 697.999982435724, + "~:y2": 716.000344826534 + } + }, + "~:fills": [ + { + "~:fill-color": "#0b3ed5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": 189.999982714653, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fec": { + "~#shape": { + "~:y": 1497.00032895324, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 1843.00012774194, + "~:y": 1497.00032895324 + } + }, + { + "~#point": { + "~:x": 2035.00012774194, + "~:y": 1497.00032895324 + } + }, + { + "~#point": { + "~:x": 2035.00012774194, + "~:y": 1676.00032895324 + } + }, + { + "~#point": { + "~:x": 1843.00012774194, + "~:y": 1676.00032895324 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806ff1328", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fec", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 1843.00012774194, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1843.00012774194, + "~:y": 1497.00032895324, + "~:width": 192, + "~:height": 179, + "~:x1": 1843.00012774194, + "~:y1": 1497.00032895324, + "~:x2": 2035.00012774194, + "~:y2": 1676.00032895324 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bec": { + "~#shape": { + "~:y": 3374.0003200719, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 2794.00008661531, + "~:y": 3374.0003200719 + } + }, + { + "~#point": { + "~:x": 3270.17600370021, + "~:y": 3374.0003200719 + } + }, + { + "~#point": { + "~:x": 3270.17600370021, + "~:y": 3850.00034212562 + } + }, + { + "~#point": { + "~:x": 2794.00008661531, + "~:y": 3850.00034212562 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bec", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 2794.00008661531, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2794.00008661531, + "~:y": 3374.0003200719, + "~:width": 476.175917084897, + "~:height": 476.00002205372, + "~:x1": 2794.00008661531, + "~:y1": 3374.0003200719, + "~:x2": 3270.17600370021, + "~:y2": 3850.00034212562 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 476.00002205372, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bed" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c0c": { + "~#shape": { + "~:y": 1504.73413333635, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 0.818481293921291, + "~:b": -0.574533177023684, + "~:c": 0.57453315860228, + "~:d": 0.818481306852201, + "~:e": 1.21872290037572e-10, + "~:f": 1.10048858914524e-10 + } + }, + "~:rotation": 324.933053903474, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "xxx", + "~:width": 564.02332050295, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 4295.00007219852, + "~:y": 1718.05045304135 + } + }, + { + "~#point": { + "~:x": 4756.64260936556, + "~:y": 1394.00034279735 + } + }, + { + "~#point": { + "~:x": 5081.33128730334, + "~:y": 1856.55260711773 + } + }, + { + "~#point": { + "~:x": 4619.6887501363, + "~:y": 2180.60271736173 + } + } + ], + "~:r2": 20, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.818481306852202, + "~:b": 0.574533177023684, + "~:c": -0.574533158602281, + "~:d": 0.818481293921292, + "~:e": -3.65234727062844e-11, + "~:f": -1.6009260642536e-10 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 20, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c0c", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 4406.15401949945, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 4406.15401949945, + "~:y": 1504.73413333635, + "~:width": 564.02332050295, + "~:height": 565.13479348638, + "~:x1": 4406.15401949945, + "~:y1": 1504.73413333635, + "~:x2": 4970.1773400024, + "~:y2": 2069.86892682273 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 565.13479348638, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9c0d" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fed": { + "~#shape": { + "~:y": 1215.00031369445, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 2567.00012774194, + "~:y": 1215.00031369445 + } + }, + { + "~#point": { + "~:x": 2759.00012774194, + "~:y": 1215.00031369445 + } + }, + { + "~#point": { + "~:x": 2759.00012774194, + "~:y": 1394.00031369445 + } + }, + { + "~#point": { + "~:x": 2567.00012774194, + "~:y": 1394.00031369445 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806ff1329", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fed", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 2567.00012774194, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 2567.00012774194, + "~:y": 1215.00031369445, + "~:width": 192, + "~:height": 179, + "~:x1": 2567.00012774194, + "~:y1": 1215.00031369445, + "~:x2": 2759.00012774194, + "~:y2": 1394.00031369445 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.6 + } + ], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bed": { + "~#shape": { + "~:y": 3733.00037530608, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403397, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 3152.00012350486, + "~:y": 3733.00037530608 + } + }, + { + "~#point": { + "~:x": 3422.93012090826, + "~:y": 3733.00037530608 + } + }, + { + "~#point": { + "~:x": 3422.93012090826, + "~:y": 4003.93162597217 + } + }, + { + "~#point": { + "~:x": 3152.00012350486, + "~:y": 4003.93162597217 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bed", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bec", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bec", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 3152.00012350486, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 3152.00012350486, + "~:y": 3733.00037530608, + "~:width": 270.929997403397, + "~:height": 270.93125066609, + "~:x1": 3152.00012350486, + "~:y1": 3733.00037530608, + "~:x2": 3422.93012090826, + "~:y2": 4003.93162597217 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c0d": { + "~#shape": { + "~:y": 1703.23985330363, + "~:transform": { + "~#matrix": { + "~:a": 0.818481309241701, + "~:b": -0.574533155198194, + "~:c": 0.574533177718632, + "~:d": 0.818481293433472, + "~:e": 4.54747350886464e-13, + "~:f": -2.27373675443232e-13 + } + }, + "~:rotation": 324.933053903474, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "c183266cdfab", + "~:width": 270.930112725792, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 4794.00012046903, + "~:y": 1805.6585938178 + } + }, + { + "~#point": { + "~:x": 5015.75142412457, + "~:y": 1650.00018246347 + } + }, + { + "~#point": { + "~:x": 5171.41044141724, + "~:y": 1871.75236278115 + } + }, + { + "~#point": { + "~:x": 4949.6591377617, + "~:y": 2027.41077413547 + } + } + ], + "~:r2": 20, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.818481293433473, + "~:b": 0.574533155198194, + "~:c": -0.574533177718633, + "~:d": 0.818481309241701, + "~:e": -5.02835920220964e-13, + "~:f": -7.51663267589463e-14 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:r1": 20, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c0d", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9c0c", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9c0c", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 4847.24022458024, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 4847.24022458024, + "~:y": 1703.23985330363, + "~:width": 270.930112725792, + "~:height": 270.931249991688, + "~:x1": 4847.24022458024, + "~:y1": 1703.23985330363, + "~:x2": 5118.17033730603, + "~:y2": 1974.17110329532 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931249991688, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fee": { + "~#shape": { + "~:y": 1215.00031369445, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 2205.00012774194, + "~:y": 1215.00031369445 + } + }, + { + "~#point": { + "~:x": 2397.00012774194, + "~:y": 1215.00031369445 + } + }, + { + "~#point": { + "~:x": 2397.00012774194, + "~:y": 1394.00031369445 + } + }, + { + "~#point": { + "~:x": 2205.00012774194, + "~:y": 1394.00031369445 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806ff6cea", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fee", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:center", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 2205.00012774194, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 2205.00012774194, + "~:y": 1215.00031369445, + "~:width": 192, + "~:height": 179, + "~:x1": 2205.00012774194, + "~:y1": 1215.00031369445, + "~:x2": 2397.00012774194, + "~:y2": 1394.00031369445 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.6 + } + ], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bee": { + "~#shape": { + "~:y": 2565.00029665231, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 2013.99994943684, + "~:y": 2565.00029665231 + } + }, + { + "~#point": { + "~:x": 2490.17586652174, + "~:y": 2565.00029665231 + } + }, + { + "~#point": { + "~:x": 2490.17586652174, + "~:y": 3041.00031870603 + } + }, + { + "~#point": { + "~:x": 2013.99994943684, + "~:y": 3041.00031870603 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bee", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 2013.99994943684, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2013.99994943684, + "~:y": 2565.00029665231, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 2013.99994943684, + "~:y1": 2565.00029665231, + "~:x2": 2490.17586652174, + "~:y2": 3041.00031870603 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bef" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c0e": { + "~#shape": { + "~:y": 1611.16803765226, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 0.818481300480226, + "~:b": -0.574533167679812, + "~:c": 0.574533167679814, + "~:d": 0.818481300480228, + "~:e": 1.34605215862393e-10, + "~:f": 1.01863406598568e-10 + } + }, + "~:rotation": 324.933053903474, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "xxx", + "~:width": 413.067929797302, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 3570.00012510581, + "~:y": 1766.32157998937 + } + }, + { + "~#point": { + "~:x": 3908.08850147298, + "~:y": 1529.00035381599 + } + }, + { + "~#point": { + "~:x": 4139.09939231376, + "~:y": 1858.09901164288 + } + }, + { + "~#point": { + "~:x": 3801.01101594659, + "~:y": 2095.42023781626 + } + } + ], + "~:r2": 20, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.818481300480225, + "~:b": 0.57453316767981, + "~:c": -0.574533167679812, + "~:d": 0.818481300480223, + "~:e": -5.16479464667412e-11, + "~:f": -1.60708454559787e-10 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 20, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c0e", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 3648.01579381114, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 3648.01579381114, + "~:y": 1611.16803765226, + "~:width": 413.067929797302, + "~:height": 402.084516327741, + "~:x1": 3648.01579381114, + "~:y1": 1611.16803765226, + "~:x2": 4061.08372360844, + "~:y2": 2013.25255398 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 402.084516327741, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9c0f" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fef": { + "~#shape": { + "~:y": 1215.00031369445, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Ellipse", + "~:width": 192, + "~:type": "~:circle", + "~:points": [ + { + "~#point": { + "~:x": 1843.00012774194, + "~:y": 1215.00031369445 + } + }, + { + "~#point": { + "~:x": 2035.00012774194, + "~:y": 1215.00031369445 + } + }, + { + "~#point": { + "~:x": 2035.00012774194, + "~:y": 1394.00031369445 + } + }, + { + "~#point": { + "~:x": 1843.00012774194, + "~:y": 1394.00031369445 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806ff8988", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fef", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 1843.00012774194, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#e10808", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ueb1e2a26-b3c3-8058-8006-b3a19119cecb", + "~:offset-x": 40 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1843.00012774194, + "~:y": 1215.00031369445, + "~:width": 192, + "~:height": 179, + "~:x1": 1843.00012774194, + "~:y1": 1215.00031369445, + "~:x2": 2035.00012774194, + "~:y2": 1394.00031369445 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.6 + } + ], + "~:flip-x": null, + "~:height": 179, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bef": { + "~#shape": { + "~:y": 2924.00033662769, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 2372.00018469064, + "~:y": 2924.00033662769 + } + }, + { + "~#point": { + "~:x": 2642.93018209404, + "~:y": 2924.00033662769 + } + }, + { + "~#point": { + "~:x": 2642.93018209404, + "~:y": 3194.93158729378 + } + }, + { + "~#point": { + "~:x": 2372.00018469064, + "~:y": 3194.93158729378 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bef", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bee", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bee", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 2372.00018469064, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2372.00018469064, + "~:y": 2924.00033662769, + "~:width": 270.929997403396, + "~:height": 270.931250666089, + "~:x1": 2372.00018469064, + "~:y1": 2924.00033662769, + "~:x2": 2642.93018209404, + "~:y2": 3194.93158729378 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931250666089, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c0f": { + "~#shape": { + "~:y": 1751.23995333668, + "~:transform": { + "~#matrix": { + "~:a": 0.818481309241701, + "~:b": -0.574533155198194, + "~:c": 0.574533177718632, + "~:d": 0.818481293433472, + "~:e": 4.54747350886464e-13, + "~:f": -2.27373675443232e-13 + } + }, + "~:rotation": 324.933053903474, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "c183266cdfab", + "~:width": 270.930229283618, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 4069.00022844074, + "~:y": 1853.65866168176 + } + }, + { + "~#point": { + "~:x": 4290.75133015836, + "~:y": 1698.0004166126 + } + }, + { + "~#point": { + "~:x": 4446.41046648783, + "~:y": 1919.75275311502 + } + }, + { + "~#point": { + "~:x": 4224.65936477021, + "~:y": 2075.41099818418 + } + } + ], + "~:r2": 20, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.818481293433473, + "~:b": 0.574533155198194, + "~:c": -0.574533177718633, + "~:d": 0.818481309241701, + "~:e": -5.02835920220964e-13, + "~:f": -7.51663267589463e-14 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:r1": 20, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c0f", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9c0e", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9c0e", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 4122.24023282248, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 4122.24023282248, + "~:y": 1751.23995333668, + "~:width": 270.930229283618, + "~:height": 270.931508123429, + "~:x1": 4122.24023282248, + "~:y1": 1751.23995333668, + "~:x2": 4393.17046210609, + "~:y2": 2022.17146146011 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931508123429, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff0": { + "~#shape": { + "~:y": 876.000286376278, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 208.000215015414, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 2576.00010023172, + "~:y": 876.000286376278 + } + }, + { + "~#point": { + "~:x": 2784.00031524713, + "~:y": 876.000286376278 + } + }, + { + "~#point": { + "~:x": 2784.00031524713, + "~:y": 1066.00028548221 + } + }, + { + "~#point": { + "~:x": 2576.00010023172, + "~:y": 1066.00028548221 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b806ffc544", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff0", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 2576.00010023172, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2576.00010023172, + "~:y": 876.000286376278, + "~:width": 208.000215015414, + "~:height": 189.99999910593, + "~:x1": 2576.00010023172, + "~:y1": 876.000286376278, + "~:x2": 2784.00031524713, + "~:y2": 1066.00028548221 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 189.99999910593, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf0": { + "~#shape": { + "~:y": 2565.00029665231, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084896, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 2794.00008527174, + "~:y": 2565.00029665231 + } + }, + { + "~#point": { + "~:x": 3270.17600235663, + "~:y": 2565.00029665231 + } + }, + { + "~#point": { + "~:x": 3270.17600235663, + "~:y": 3041.00031870603 + } + }, + { + "~#point": { + "~:x": 2794.00008527174, + "~:y": 3041.00031870603 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf0", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 2794.00008527174, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2794.00008527174, + "~:y": 2565.00029665231, + "~:width": 476.175917084896, + "~:height": 476.000022053719, + "~:x1": 2794.00008527174, + "~:y1": 2565.00029665231, + "~:x2": 3270.17600235663, + "~:y2": 3041.00031870603 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bf1" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c10": { + "~#shape": { + "~:y": 610.733790539003, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 0.818481293921295, + "~:b": -0.574533177023682, + "~:c": 0.574533158602284, + "~:d": 0.818481306852201, + "~:e": 1.2732925824821e-10, + "~:f": 8.8220986071974e-11 + } + }, + "~:rotation": 324.933053903474, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "xxx", + "~:width": 564.023320502951, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 4186.000584961, + "~:y": 824.050110244007 + } + }, + { + "~#point": { + "~:x": 4647.64312212804, + "~:y": 500 + } + }, + { + "~#point": { + "~:x": 4972.33180006582, + "~:y": 962.55226432038 + } + }, + { + "~#point": { + "~:x": 4510.68926289878, + "~:y": 1286.60237456439 + } + } + ], + "~:r2": 20, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.818481306852199, + "~:b": 0.57453317702368, + "~:c": -0.574533158602283, + "~:d": 0.818481293921293, + "~:e": -5.35307359085768e-11, + "~:f": -1.45362110100614e-10 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 20, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c10", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 4297.15453226193, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 4297.15453226193, + "~:y": 610.733790539003, + "~:width": 564.023320502951, + "~:height": 565.13479348638, + "~:x1": 4297.15453226193, + "~:y1": 610.733790539003, + "~:x2": 4861.17785276488, + "~:y2": 1175.86858402538 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 565.13479348638, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9c11" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff1": { + "~#shape": { + "~:y": 876.000286376278, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 208.000215015413, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 2198.00016333161, + "~:y": 876.000286376278 + } + }, + { + "~#point": { + "~:x": 2406.00037834702, + "~:y": 876.000286376278 + } + }, + { + "~#point": { + "~:x": 2406.00037834702, + "~:y": 1066.00028548221 + } + }, + { + "~#point": { + "~:x": 2198.00016333161, + "~:y": 1066.00028548221 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b807003e68", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff1", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 20, + "~:stroke-color": "#b7c821", + "~:stroke-opacity": 1 + } + ], + "~:x": 2198.00016333161, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#00f080", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2198.00016333161, + "~:y": 876.000286376278, + "~:width": 208.000215015413, + "~:height": 189.99999910593, + "~:x1": 2198.00016333161, + "~:y1": 876.000286376278, + "~:x2": 2406.00037834702, + "~:y2": 1066.00028548221 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 189.99999910593, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf1": { + "~#shape": { + "~:y": 2924.00033662769, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 3152.00013742007, + "~:y": 2924.00033662769 + } + }, + { + "~#point": { + "~:x": 3422.93013482347, + "~:y": 2924.00033662769 + } + }, + { + "~#point": { + "~:x": 3422.93013482347, + "~:y": 3194.93158729378 + } + }, + { + "~#point": { + "~:x": 3152.00013742007, + "~:y": 3194.93158729378 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf1", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf0", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf0", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 3152.00013742007, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 3152.00013742007, + "~:y": 2924.00033662769, + "~:width": 270.929997403396, + "~:height": 270.931250666089, + "~:x1": 3152.00013742007, + "~:y1": 2924.00033662769, + "~:x2": 3422.93013482347, + "~:y2": 3194.93158729378 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931250666089, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c11": { + "~#shape": { + "~:y": 809.24011099148, + "~:transform": { + "~#matrix": { + "~:a": 0.818481309241701, + "~:b": -0.574533155198194, + "~:c": 0.574533177718632, + "~:d": 0.818481293433472, + "~:e": 4.54747350886464e-13, + "~:f": -2.27373675443232e-13 + } + }, + "~:rotation": 324.933053903474, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "c183266cdfab", + "~:width": 270.93005171888, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 4684.99991666207, + "~:y": 911.658800841629 + } + }, + { + "~#point": { + "~:x": 4906.75100791949, + "~:y": 756.000535914766 + } + }, + { + "~#point": { + "~:x": 5062.41001861255, + "~:y": 977.752740097087 + } + }, + { + "~#point": { + "~:x": 4840.65892735513, + "~:y": 1133.41100502395 + } + } + ], + "~:r2": 20, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.818481293433473, + "~:b": 0.574533155198194, + "~:c": -0.574533177718633, + "~:d": 0.818481309241701, + "~:e": -5.02835920220964e-13, + "~:f": -7.51663267589463e-14 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:r1": 20, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c11", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9c10", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9c10", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 4738.23994177787, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 4738.23994177787, + "~:y": 809.24011099148, + "~:width": 270.93005171888, + "~:height": 270.931318955755, + "~:x1": 4738.23994177787, + "~:y1": 809.24011099148, + "~:x2": 5009.16999349675, + "~:y2": 1080.17142994724 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931318955755, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff2": { + "~#shape": { + "~:y": 876.000317816106, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 207.999982557296, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 1820.00001237334, + "~:y": 876.000317816106 + } + }, + { + "~#point": { + "~:x": 2027.99999493064, + "~:y": 876.000317816106 + } + }, + { + "~#point": { + "~:x": 2027.99999493064, + "~:y": 1066.00030053076 + } + }, + { + "~#point": { + "~:x": 1820.00001237334, + "~:y": 1066.00030053076 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b80700707b", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff2", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#d10202", + "~:stroke-opacity": 1 + } + ], + "~:x": 1820.00001237334, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#c41414", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1820.00001237334, + "~:y": 876.000317816106, + "~:width": 207.999982557296, + "~:height": 189.999982714653, + "~:x1": 1820.00001237334, + "~:y1": 876.000317816106, + "~:x2": 2027.99999493064, + "~:y2": 1066.00030053076 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 189.999982714653, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf2": { + "~#shape": { + "~:y": 4980.00043118209, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 2014.00011314881, + "~:y": 4980.00043118209 + } + }, + { + "~#point": { + "~:x": 2490.1760302337, + "~:y": 4980.00043118209 + } + }, + { + "~#point": { + "~:x": 2490.1760302337, + "~:y": 5456.00045323581 + } + }, + { + "~#point": { + "~:x": 2014.00011314881, + "~:y": 5456.00045323581 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf2", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 2014.00011314881, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2014.00011314881, + "~:y": 4980.00043118209, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 2014.00011314881, + "~:y1": 4980.00043118209, + "~:x2": 2490.1760302337, + "~:y2": 5456.00045323581 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bf3" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c12": { + "~#shape": { + "~:y": 716.167871455469, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 0.818481300480222, + "~:b": -0.574533167679814, + "~:c": 0.57453316767981, + "~:d": 0.818481300480228, + "~:e": 1.56433088704944e-10, + "~:f": 7.73070496506989e-11 + } + }, + "~:rotation": 324.933053903474, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "xxx", + "~:width": 413.067929797302, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 3461.00005803431, + "~:y": 871.321413792587 + } + }, + { + "~#point": { + "~:x": 3799.08843440148, + "~:y": 634.0001876192 + } + }, + { + "~#point": { + "~:x": 4030.09932524226, + "~:y": 963.098845446092 + } + }, + { + "~#point": { + "~:x": 3692.01094887509, + "~:y": 1200.42007161948 + } + } + ], + "~:r2": 20, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.818481300480228, + "~:b": 0.574533167679814, + "~:c": -0.574533167679811, + "~:d": 0.818481300480223, + "~:e": -8.36220937615648e-11, + "~:f": -1.53150372517982e-10 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 20, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c12", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 3539.01572673963, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 3539.01572673963, + "~:y": 716.167871455469, + "~:width": 413.067929797302, + "~:height": 402.084516327739, + "~:x1": 3539.01572673963, + "~:y1": 716.167871455469, + "~:x2": 3952.08365653694, + "~:y2": 1118.25238778321 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 402.084516327739, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9c13" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff3": { + "~#shape": { + "~:y": 542.000315096214, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 208.00019713402, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 2563.00005541759, + "~:y": 542.000315096214 + } + }, + { + "~#point": { + "~:x": 2771.00025255161, + "~:y": 542.000315096214 + } + }, + { + "~#point": { + "~:x": 2771.00025255161, + "~:y": 732.000314202145 + } + }, + { + "~#point": { + "~:x": 2563.00005541759, + "~:y": 732.000314202145 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b807008fda", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff3", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 2563.00005541759, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2563.00005541759, + "~:y": 542.000315096214, + "~:width": 208.00019713402, + "~:height": 189.99999910593, + "~:x1": 2563.00005541759, + "~:y1": 542.000315096214, + "~:x2": 2771.00025255161, + "~:y2": 732.000314202145 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": 189.99999910593, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf3": { + "~#shape": { + "~:y": 5339.00024227564, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 2372.00010426199, + "~:y": 5339.00024227564 + } + }, + { + "~#point": { + "~:x": 2642.93010166538, + "~:y": 5339.00024227564 + } + }, + { + "~#point": { + "~:x": 2642.93010166538, + "~:y": 5609.93149294173 + } + }, + { + "~#point": { + "~:x": 2372.00010426199, + "~:y": 5609.93149294173 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf3", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf2", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf2", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 2372.00010426199, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2372.00010426199, + "~:y": 5339.00024227564, + "~:width": 270.929997403396, + "~:height": 270.93125066609, + "~:x1": 2372.00010426199, + "~:y1": 5339.00024227564, + "~:x2": 2642.93010166538, + "~:y2": 5609.93149294173 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c13": { + "~#shape": { + "~:y": 856.2391232107, + "~:transform": { + "~#matrix": { + "~:a": 0.818481309241701, + "~:b": -0.574533155198194, + "~:c": 0.574533177718632, + "~:d": 0.818481293433472, + "~:e": 4.54747350886464e-13, + "~:f": -2.27373675443232e-13 + } + }, + "~:rotation": 324.933053903474, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "c183266cdfab", + "~:width": 270.930008058034, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 3960.000598051, + "~:y": 958.65780868028 + } + }, + { + "~#point": { + "~:x": 4181.75178187885, + "~:y": 802.999513553355 + } + }, + { + "~#point": { + "~:x": 4337.41074501813, + "~:y": 1024.75163734618 + } + }, + { + "~#point": { + "~:x": 4115.65956119027, + "~:y": 1180.4099324731 + } + } + ], + "~:r2": 20, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.818481293433473, + "~:b": 0.574533155198194, + "~:c": -0.574533177718633, + "~:d": 0.818481309241701, + "~:e": -5.02835920220964e-13, + "~:f": -7.51663267589463e-14 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:r1": 20, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c13", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9c12", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9c12", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 4013.24066750554, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 4013.24066750554, + "~:y": 856.2391232107, + "~:width": 270.930008058034, + "~:height": 270.931199605052, + "~:x1": 4013.24066750554, + "~:y1": 856.2391232107, + "~:x2": 4284.17067556358, + "~:y2": 1127.17032281575 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931199605052, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff4": { + "~#shape": { + "~:y": 542.000315096214, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 207.999946794509, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 2192.00013310689, + "~:y": 542.000315096214 + } + }, + { + "~#point": { + "~:x": 2400.0000799014, + "~:y": 542.000315096214 + } + }, + { + "~#point": { + "~:x": 2400.0000799014, + "~:y": 732.000314202145 + } + }, + { + "~#point": { + "~:x": 2192.00013310689, + "~:y": 732.000314202145 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b807008fdb", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 20, + "~:stroke-color": "#b7c821", + "~:stroke-opacity": 1 + } + ], + "~:x": 2192.0001331069, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#00f080", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2192.0001331069, + "~:y": 542.000315096214, + "~:width": 207.999946794509, + "~:height": 189.99999910593, + "~:x1": 2192.0001331069, + "~:y1": 542.000315096214, + "~:x2": 2400.0000799014, + "~:y2": 732.000314202145 + } + }, + "~:fills": [ + { + "~:fill-color": "#7f5217", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": 189.99999910593, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf4": { + "~#shape": { + "~:y": 4980.00043118209, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 2794.00012691339, + "~:y": 4980.00043118209 + } + }, + { + "~#point": { + "~:x": 3270.17604399829, + "~:y": 4980.00043118209 + } + }, + { + "~#point": { + "~:x": 3270.17604399829, + "~:y": 5456.00045323581 + } + }, + { + "~#point": { + "~:x": 2794.00012691339, + "~:y": 5456.00045323581 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 2794.00012691339, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2794.00012691339, + "~:y": 4980.00043118209, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 2794.00012691339, + "~:y1": 4980.00043118209, + "~:x2": 3270.17604399829, + "~:y2": 5456.00045323581 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bf5" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9c14": { + "~#shape": { + "~:y": 3548.79084725864, + "~:transform": { + "~#matrix": { + "~:a": 0.875521645611856, + "~:b": -0.483178898613245, + "~:c": 0.483178842426414, + "~:d": 0.875521676619982, + "~:e": 1.00044417195022e-11, + "~:f": 1.38697942020372e-11 + } + }, + "~:rotation": 331.106771530248, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 224.867986830995, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 4521.00011951727, + "~:y": 3609.65168877195 + } + }, + { + "~#point": { + "~:x": 4717.87690939297, + "~:y": 3501.00022256157 + } + }, + { + "~#point": { + "~:x": 4768.61066013814, + "~:y": 3592.92994839677 + } + }, + { + "~#point": { + "~:x": 4571.73387026244, + "~:y": 3701.58141460715 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.875521676619987, + "~:b": 0.483178898613247, + "~:c": -0.483178842426416, + "~:d": 0.87552164561186, + "~:e": -2.05751448067259e-12, + "~:f": -1.69772401753349e-11 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9c14", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 4532.37139641221, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 4532.37139641221, + "~:y": 3548.79084725864, + "~:width": 224.867986830995, + "~:height": 104.999942651446, + "~:x1": 4532.37139641221, + "~:y1": 3548.79084725864, + "~:x2": 4757.2393832432, + "~:y2": 3653.79078991008 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 104.999942651446, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff5": { + "~#shape": { + "~:y": 542.000314559775, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 207.999946794509, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 1820.00004563271, + "~:y": 542.000314559775 + } + }, + { + "~#point": { + "~:x": 2027.99999242722, + "~:y": 542.000314559775 + } + }, + { + "~#point": { + "~:x": 2027.99999242722, + "~:y": 732.000297274428 + } + }, + { + "~#point": { + "~:x": 1820.00004563271, + "~:y": 732.000297274428 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b80700e25a", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff5", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#d10202", + "~:stroke-opacity": 1 + } + ], + "~:x": 1820.00004563271, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#c41414", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u9c6ef694-ec31-8045-8006-b383bb6b2eda", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1820.00004563271, + "~:y": 542.000314559775, + "~:width": 207.999946794509, + "~:height": 189.999982714653, + "~:x1": 1820.00004563271, + "~:y1": 542.000314559775, + "~:x2": 2027.99999242722, + "~:y2": 732.000297274428 + } + }, + "~:fills": [ + { + "~:fill-color": "#0b3ed5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": 189.999982714653, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf5": { + "~#shape": { + "~:y": 5339.00024227564, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403397, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 3152.00010276778, + "~:y": 5339.00024227564 + } + }, + { + "~#point": { + "~:x": 3422.93010017118, + "~:y": 5339.00024227564 + } + }, + { + "~#point": { + "~:x": 3422.93010017118, + "~:y": 5609.93149294173 + } + }, + { + "~#point": { + "~:x": 3152.00010276778, + "~:y": 5609.93149294173 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf5", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf4", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf4", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 3152.00010276778, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 3152.00010276778, + "~:y": 5339.00024227564, + "~:width": 270.929997403397, + "~:height": 270.93125066609, + "~:x1": 3152.00010276778, + "~:y1": 5339.00024227564, + "~:x2": 3422.93010017118, + "~:y2": 5609.93149294173 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff6": { + "~#shape": { + "~:y": 2585.00053504916, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Board", + "~:width": 1103.9998195998, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 3770.00035044873, + "~:y": 2585.00053206573 + } + }, + { + "~#point": { + "~:x": 4874.00017004853, + "~:y": 2585.0005380326 + } + }, + { + "~#point": { + "~:x": 4874.00016654172, + "~:y": 3119.45044960726 + } + }, + { + "~#point": { + "~:x": 3770.00034694192, + "~:y": 3119.4504436404 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:opacity": 0.8, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:center", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 3770.00034869533, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#140a67", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 300, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~ud2b53ca8-aebb-8099-8006-bdabce5cb46c", + "~:offset-x": 300 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 3770.00034869533, + "~:y": 2585.00053504916, + "~:width": 1103.9998195998, + "~:height": 534.449911574665, + "~:x1": 3770.00034869533, + "~:y1": 2585.00053504916, + "~:x2": 4874.00016829513, + "~:y2": 3119.45044662383 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 534.449911574665, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc7ff7", + "~u813630e3-7f07-80da-8006-c2b969bc7ff8" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf6": { + "~#shape": { + "~:y": 4171.00034672734, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 2013.99992869976, + "~:y": 4171.00034672734 + } + }, + { + "~#point": { + "~:x": 2490.17584578466, + "~:y": 4171.00034672734 + } + }, + { + "~#point": { + "~:x": 2490.17584578466, + "~:y": 4647.00036878106 + } + }, + { + "~#point": { + "~:x": 2013.99992869976, + "~:y": 4647.00036878106 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 2013.99992869976, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2013.99992869976, + "~:y": 4171.00034672734, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 2013.99992869976, + "~:y1": 4171.00034672734, + "~:x2": 2490.17584578466, + "~:y2": 4647.00036878106 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bf7" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff7": { + "~#shape": { + "~:y": 2654.00029065472, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 224.868012345696, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 4664.00014983, + "~:y": 2654.00028934492 + } + }, + { + "~#point": { + "~:x": 4888.8681621757, + "~:y": 2654.00029196453 + } + }, + { + "~#point": { + "~:x": 4888.8681536456, + "~:y": 2759.00026051267 + } + }, + { + "~#point": { + "~:x": 4664.00014129991, + "~:y": 2759.00025789306 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff7", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc7ff6", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc7ff6", + "~:strokes": [], + "~:x": 4664.00014556495, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 4664.00014556495, + "~:y": 2654.00029065472, + "~:width": 224.868012345696, + "~:height": 104.99996854814, + "~:x1": 4664.00014556495, + "~:y1": 2654.00029065472, + "~:x2": 4888.86815791065, + "~:y2": 2759.00025920286 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 104.99996854814, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf7": { + "~#shape": { + "~:y": 4530.00032566757, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 2372.00016395357, + "~:y": 4530.00032566757 + } + }, + { + "~#point": { + "~:x": 2642.93016135696, + "~:y": 4530.00032566757 + } + }, + { + "~#point": { + "~:x": 2642.93016135696, + "~:y": 4800.93157633366 + } + }, + { + "~#point": { + "~:x": 2372.00016395357, + "~:y": 4800.93157633366 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf7", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf6", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf6", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 2372.00016395357, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2372.00016395357, + "~:y": 4530.00032566757, + "~:width": 270.929997403396, + "~:height": 270.93125066609, + "~:x1": 2372.00016395357, + "~:y1": 4530.00032566757, + "~:x2": 2642.93016135696, + "~:y2": 4800.93157633366 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff8": { + "~#shape": { + "~:y": 2834.00024696069, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "1otdj8747ov", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1ppxneff2xr", + "~:font-size": "400", + "~:font-weight": "400", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "HOLA" + } + ], + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "2afvsygzvt", + "~:font-size": "400", + "~:font-weight": "400", + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "HOLA", + "~:width": 986.211443269176, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 3925.99990800704, + "~:y": 2834.00024149059 + } + }, + { + "~#point": { + "~:x": 4912.21135127622, + "~:y": 2834.0002524308 + } + }, + { + "~#point": { + "~:x": 4912.21135127622, + "~:y": 3215.25720785521 + } + }, + { + "~#point": { + "~:x": 3925.99990800704, + "~:y": 3215.257196915 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:constraints-v": "~:top", + "~:constraints-h": "~:left", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff8", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc7ff6", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc7ff6", + "~:strokes": [], + "~:x": 3925.99990800704, + "~:shadow": [ + { + "~:color": { + "~:color": "#ea1212", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u757a30c8-2a19-8062-8006-bdd7693703f6", + "~:offset-x": 20 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 3925.99990800704, + "~:y": 2834.00024696069, + "~:width": 986.211443269176, + "~:height": 381.256955424409, + "~:x1": 3925.99990800704, + "~:y1": 2834.00024696069, + "~:x2": 4912.21135127622, + "~:y2": 3215.2572023851 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 381.256955424409, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf8": { + "~#shape": { + "~:y": 4171.00034672734, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 2794.00012556981, + "~:y": 4171.00034672734 + } + }, + { + "~#point": { + "~:x": 3270.17604265471, + "~:y": 4171.00034672734 + } + }, + { + "~#point": { + "~:x": 3270.17604265471, + "~:y": 4647.00036878106 + } + }, + { + "~#point": { + "~:x": 2794.00012556981, + "~:y": 4647.00036878106 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 2794.00012556981, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 2794.00012556981, + "~:y": 4171.00034672734, + "~:width": 476.175917084897, + "~:height": 476.000022053719, + "~:x1": 2794.00012556981, + "~:y1": 4171.00034672734, + "~:x2": 3270.17604265471, + "~:y2": 4647.00036878106 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bf9" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ff9": { + "~#shape": { + "~:y": 3375.00028799808, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084897, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 489.999957859182, + "~:y": 3375.00028799808 + } + }, + { + "~#point": { + "~:x": 966.175874944079, + "~:y": 3375.00028799808 + } + }, + { + "~#point": { + "~:x": 966.175874944079, + "~:y": 3851.0003100518 + } + }, + { + "~#point": { + "~:x": 489.999957859182, + "~:y": 3851.0003100518 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ff9", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 489.999957859182, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 489.999957859182, + "~:y": 3375.00028799808, + "~:width": 476.175917084897, + "~:height": 476.00002205372, + "~:x1": 489.999957859182, + "~:y1": 3375.00028799808, + "~:x2": 966.175874944079, + "~:y2": 3851.0003100518 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 476.00002205372, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc7ffa" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bf9": { + "~#shape": { + "~:y": 4530.00032566757, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403397, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 3152.000116683, + "~:y": 4530.00032566757 + } + }, + { + "~#point": { + "~:x": 3422.93011408639, + "~:y": 4530.00032566757 + } + }, + { + "~#point": { + "~:x": 3422.93011408639, + "~:y": 4800.93157633366 + } + }, + { + "~#point": { + "~:x": 3152.000116683, + "~:y": 4800.93157633366 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bf9", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf8", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bf8", + "~:strokes": [ + { + "~:stroke-alignment": "~:inner", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 3152.000116683, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ba04e7", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 25, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~uea3497ec-8c4f-80ce-8006-b7431e93c950", + "~:offset-x": 25 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 3152.000116683, + "~:y": 4530.00032566757, + "~:width": 270.929997403397, + "~:height": 270.93125066609, + "~:x1": 3152.000116683, + "~:y1": 4530.00032566757, + "~:x2": 3422.93011408639, + "~:y2": 4800.93157633366 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 270.93125066609, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7ffa": { + "~#shape": { + "~:y": 3734.0002821971, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 848.000071042675, + "~:y": 3734.0002821971 + } + }, + { + "~#point": { + "~:x": 1118.93006844607, + "~:y": 3734.0002821971 + } + }, + { + "~#point": { + "~:x": 1118.93006844607, + "~:y": 4004.93153286319 + } + }, + { + "~#point": { + "~:x": 848.000071042675, + "~:y": 4004.93153286319 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7ffa", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc7ff9", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc7ff9", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 848.000071042675, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#094ae0", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": true, + "~:id": "~udca35925-f5a2-8083-8006-b60be22fea0c", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 848.000071042675, + "~:y": 3734.0002821971, + "~:width": 270.929997403396, + "~:height": 270.931250666088, + "~:x1": 848.000071042675, + "~:y1": 3734.0002821971, + "~:x2": 1118.93006844607, + "~:y2": 4004.93153286319 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931250666088, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bfa": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAD9P5tEIS8ORQMAAAD9P5tEIS8ORT0AvET9lQZF/b+7RBAWB0UDAAAAtX+7RCOWB0V1F7NEAQAURXUXs0QBABRFAgAAAAAAAAAAAAAAAAAAAAAAAAD9P5tEIS8ORQ==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 1241.99997291426, + "~:y": 2161.00030828981 + } + }, + { + "~#point": { + "~:x": 1501.99909592772, + "~:y": 2161.00030828981 + } + }, + { + "~#point": { + "~:x": 1501.99909592772, + "~:y": 2368.00026501296 + } + }, + { + "~#point": { + "~:x": 1241.99997291426, + "~:y": 2368.00026501296 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bfa", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1241.99997291426, + "~:y": 2161.00030828981, + "~:width": 259.999123013458, + "~:height": 206.999956723148, + "~:x1": 1241.99997291426, + "~:y1": 2161.00030828981, + "~:x2": 1501.99909592772, + "~:y2": 2368.00026501296 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bfb": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAD+/0hEIi8ORQMAAAD+/0hEIi8ORT9AhUT9lQZF//+ERBAWB0UDAAAAv7+ERCSWB0XurnhEAQAURe6ueEQBABRFAgAAAAAAAAAAAAAAAAAAAAAAAAD+/0hEIi8ORQ==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 804.000008158981, + "~:y": 2161.00033838998 + } + }, + { + "~#point": { + "~:x": 1063.99913117244, + "~:y": 2161.00033838998 + } + }, + { + "~#point": { + "~:x": 1063.99913117244, + "~:y": 2368.00029511312 + } + }, + { + "~#point": { + "~:x": 804.000008158981, + "~:y": 2368.00029511312 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bfb", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 804.000008158981, + "~:y": 2161.00033838998, + "~:width": 259.999123013458, + "~:height": 206.999956723148, + "~:x1": 804.000008158981, + "~:y1": 2161.00033838998, + "~:x2": 1063.99913117244, + "~:y2": 2368.00029511312 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bdc": { + "~#shape": { + "~:y": 3375.00028799808, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084896, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 1270.00003265892, + "~:y": 3375.00028799808 + } + }, + { + "~#point": { + "~:x": 1746.17594974382, + "~:y": 3375.00028799808 + } + }, + { + "~#point": { + "~:x": 1746.17594974382, + "~:y": 3851.0003100518 + } + }, + { + "~#point": { + "~:x": 1270.00003265892, + "~:y": 3851.0003100518 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bdc", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 1270.00003265892, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1270.00003265892, + "~:y": 3375.00028799808, + "~:width": 476.175917084896, + "~:height": 476.00002205372, + "~:x1": 1270.00003265892, + "~:y1": 3375.00028799808, + "~:x2": 1746.17594974382, + "~:y2": 3851.0003100518 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 476.00002205372, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bdd" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bfc": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAD8f91DIU8NRQMAAAD8f91DIU8NRY5AMET9tQVF/r8vRBA2BkUDAAAAfj8vRCO2BkX+bh5EASATRf5uHkQBIBNFAgAAAAAAAAAAAAAAAAAAAAAAAAD8f91DIU8NRQ==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 443, + "~:y": 2147.00030457082 + } + }, + { + "~#point": { + "~:x": 703.000115897557, + "~:y": 2147.00030457082 + } + }, + { + "~#point": { + "~:x": 703.000115897557, + "~:y": 2354.00026129397 + } + }, + { + "~#point": { + "~:x": 443, + "~:y": 2354.00026129397 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bfc", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 443, + "~:y": 2147.00030457082, + "~:width": 260.000115897557, + "~:height": 206.999956723148, + "~:x1": 443, + "~:y1": 2147.00030457082, + "~:x2": 703.000115897557, + "~:y2": 2354.00026129397 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bdd": { + "~#shape": { + "~:y": 3734.0002821971, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 1628.00003903089, + "~:y": 3734.0002821971 + } + }, + { + "~#point": { + "~:x": 1898.93003643429, + "~:y": 3734.0002821971 + } + }, + { + "~#point": { + "~:x": 1898.93003643429, + "~:y": 4004.93153286319 + } + }, + { + "~#point": { + "~:x": 1628.00003903089, + "~:y": 4004.93153286319 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bdd", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bdc", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bdc", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 1628.00003903089, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#094ae0", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": true, + "~:id": "~udca35925-f5a2-8083-8006-b60be22fea0c", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 1628.00003903089, + "~:y": 3734.0002821971, + "~:width": 270.929997403396, + "~:height": 270.931250666088, + "~:x1": 1628.00003903089, + "~:y1": 3734.0002821971, + "~:x2": 1898.93003643429, + "~:y2": 4004.93153286319 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931250666088, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bfd": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAABYJ5EQ17sRAMAAAABYJ5EQ17sREEgv0T5K91EAeC+RCAs3kQDAAAAwZ++REcs30R5N7ZEAwD4RHk3tkQDAPhEAgAAAAAAAAAAAAAAAAAAAAAAAAABYJ5EQ17sRA==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 1267.0000171205, + "~:y": 1777.00032442205 + } + }, + { + "~#point": { + "~:x": 1527.00013301806, + "~:y": 1777.00032442205 + } + }, + { + "~#point": { + "~:x": 1527.00013301806, + "~:y": 1984.00040411815 + } + }, + { + "~#point": { + "~:x": 1267.0000171205, + "~:y": 1984.00040411815 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bfd", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1267.0000171205, + "~:y": 1777.00032442205, + "~:width": 260.000115897557, + "~:height": 207.000079696094, + "~:x1": 1267.0000171205, + "~:y1": 1777.00032442205, + "~:x2": 1527.00013301806, + "~:y2": 1984.00040411815 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bde": { + "~#shape": { + "~:y": 2566.00032561364, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77a", + "~:width": 476.175917084896, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 490.000017550761, + "~:y": 2566.00032561364 + } + }, + { + "~#point": { + "~:x": 966.175934635658, + "~:y": 2566.00032561364 + } + }, + { + "~#point": { + "~:x": 966.175934635658, + "~:y": 3042.00034766736 + } + }, + { + "~#point": { + "~:x": 490.000017550761, + "~:y": 3042.00034766736 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:blur": { + "~:id": "~u5339c9ee-d6a8-80a6-8006-b710cd2ce7d6", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": true + }, + "~:r1": 0, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bde", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#ff0202", + "~:stroke-opacity": 1 + } + ], + "~:x": 490.000017550761, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#010101", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 40, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u59bee4d9-ff40-808f-8006-b6070426becf", + "~:offset-x": 40 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 490.000017550761, + "~:y": 2566.00032561364, + "~:width": 476.175917084896, + "~:height": 476.000022053719, + "~:x1": 490.000017550761, + "~:y1": 2566.00032561364, + "~:x2": 966.175934635658, + "~:y2": 3042.00034766736 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 476.000022053719, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc9bdf" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bfe": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAAGQE9EQ17sRAMAAAAGQE9EQ17sRENgiET5K91EAyCIRCAs3kQDAAAAw9+HREcs30T27n5EAwD4RPbufkQDAPhEAgAAAAAAAAAAAAAAAAAAAAAAAAAGQE9EQ17sRA==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 829.000042113201, + "~:y": 1777.00032400464 + } + }, + { + "~#point": { + "~:x": 1089.00015801076, + "~:y": 1777.00032400464 + } + }, + { + "~#point": { + "~:x": 1089.00015801076, + "~:y": 1984.00040370073 + } + }, + { + "~#point": { + "~:x": 829.000042113201, + "~:y": 1984.00040370073 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bfe", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 829.000042113201, + "~:y": 1777.00032400464, + "~:width": 260.000115897557, + "~:height": 207.000079696094, + "~:x1": 829.000042113201, + "~:y1": 1777.00032400464, + "~:x2": 1089.00015801076, + "~:y2": 1984.00040370073 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc7fdf": { + "~#shape": { + "~:y": 4824.45130420334, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 0.875521645210578, + "~:b": -0.483178899340361, + "~:c": 0.483178898327598, + "~:d": 0.875521645769497, + "~:e": 9.09494701772928e-13, + "~:f": 2.27373675443232e-13 + } + }, + "~:rotation": 331.106771530248, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Board", + "~:width": 1103.99984135388, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 3805.00024083074, + "~:y": 5124.42974167317 + } + }, + { + "~#point": { + "~:x": 4771.57599824511, + "~:y": 4591.00031345587 + } + }, + { + "~#point": { + "~:x": 5029.8109228195, + "~:y": 5058.92278883939 + } + }, + { + "~#point": { + "~:x": 4063.23516540513, + "~:y": 5592.35221705669 + } + } + ], + "~:r2": 20, + "~:show-content": false, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.875521645769497, + "~:b": 0.483178899340361, + "~:c": -0.483178898327598, + "~:d": 0.875521645210578, + "~:e": -6.86420136105515e-13, + "~:f": -6.38519223360168e-13 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 20, + "~:blur": { + "~:id": "~u08e9047b-7a98-8007-8006-c2b86966f332", + "~:type": "~:layer-blur", + "~:value": 8, + "~:hidden": false + }, + "~:r1": 20, + "~:opacity": 0.8, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc7fdf", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-alignment": "~:center", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 20 + } + ], + "~:x": 3865.40566114818, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#140a67", + "~:opacity": 0.4 + }, + "~:spread": 0, + "~:offset-y": 300, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~ud2b53ca8-aebb-8099-8006-bdabce5cb46c", + "~:offset-x": 300 + } + ], + "~:r4": 20, + "~:selrect": { + "~#rect": { + "~:x": 3865.40566114818, + "~:y": 4824.45130420334, + "~:width": 1103.99984135388, + "~:height": 534.449922105886, + "~:x1": 3865.40566114818, + "~:y1": 4824.45130420334, + "~:x2": 4969.40550250206, + "~:y2": 5358.90122630922 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 534.449922105886, + "~:flip-y": null, + "~:shapes": [ + "~u813630e3-7f07-80da-8006-c2b969bc7fe0", + "~u813630e3-7f07-80da-8006-c2b969bc7fe1" + ] + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bdf": { + "~#shape": { + "~:y": 2925.00035033024, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "b7195d5dd77b", + "~:width": 270.929997403396, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 848.000008663942, + "~:y": 2925.00035033024 + } + }, + { + "~#point": { + "~:x": 1118.93000606734, + "~:y": 2925.00035033024 + } + }, + { + "~#point": { + "~:x": 1118.93000606734, + "~:y": 3195.93160099633 + } + }, + { + "~#point": { + "~:x": 848.000008663942, + "~:y": 3195.93160099633 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bdf", + "~:parent-id": "~u813630e3-7f07-80da-8006-c2b969bc9bde", + "~:frame-id": "~u813630e3-7f07-80da-8006-c2b969bc9bde", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#0109fd", + "~:stroke-opacity": 1 + } + ], + "~:x": 848.000008663942, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#094ae0", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": true, + "~:id": "~udca35925-f5a2-8083-8006-b60be22fea0c", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 848.000008663942, + "~:y": 2925.00035033024, + "~:width": 270.929997403396, + "~:height": 270.931250666089, + "~:x1": 848.000008663942, + "~:y1": 2925.00035033024, + "~:x2": 1118.93000606734, + "~:y2": 3195.93160099633 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 270.931250666089, + "~:flip-y": null + } + }, + "~u813630e3-7f07-80da-8006-c2b969bc9bff": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAAD0/+lDQ57qRAMAAAD0/+lDQ57qRIqANkT5a9tE+v81RCBs3EQDAAAAin81REds3UT6riREA0D2RPquJEQDQPZEAgAAAAAAAAAAAAAAAAAAAAAAAAD0/+lDQ57qRA==" + }, + "~:name": "Path", + "~:width": null, + "~:type": "~:path", + "~:points": [ + { + "~#point": { + "~:x": 468.000012538503, + "~:y": 1763.00032947447 + } + }, + { + "~#point": { + "~:x": 728.000128436061, + "~:y": 1763.00032947447 + } + }, + { + "~#point": { + "~:x": 728.000128436061, + "~:y": 1970.00040917057 + } + }, + { + "~#point": { + "~:x": 468.000012538503, + "~:y": 1970.00040917057 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~u813630e3-7f07-80da-8006-c2b969bc9bff", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 20, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#de1111", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 80, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u70873f92-ec4b-8045-8006-b3a396ef1fe7", + "~:offset-x": 80 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 468.000012538503, + "~:y": 1763.00032947447, + "~:width": 260.000115897557, + "~:height": 207.000079696094, + "~:x1": 468.000012538503, + "~:y1": 1763.00032947447, + "~:x2": 728.000128436061, + "~:y2": 1970.00040917057 + } + }, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 0.4 + } + ], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + } + }, + "~:id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:name": "Page 1" + } + }, + "~:id": "~u9502081a-e1a4-80bc-8006-c2b968723199", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-text-images.json b/frontend/playwright/data/render-wasm/get-file-text-images.json index 18020f2c1e..e04435395a 100644 --- a/frontend/playwright/data/render-wasm/get-file-text-images.json +++ b/frontend/playwright/data/render-wasm/get-file-text-images.json @@ -4,6 +4,7 @@ "fdata/path-data", "plugins/runtime", "design-tokens/v1", + "variants/v1", "layout/grid", "styles/v2", "fdata/pointer-map", @@ -25,8 +26,8 @@ "~:has-media-trimmed": false, "~:comment-thread-seqn": 0, "~:name": "New File 7 (copy)", - "~:revn": 233, - "~:modified-at": "~m1753186774115", + "~:revn": 318, + "~:modified-at": "~m1757071793227", "~:vern": 0, "~:id": "~u4f89252d-ebbc-813e-8006-8699e4149b9a", "~:is-shared": false, @@ -99,7 +100,8 @@ "0004-clean-shadow-color", "0008-fix-library-colors-v4", "0003-convert-path-content-v2", - "0009-clean-library-colors" + "0009-clean-library-colors", + "0010-fix-swap-slots-pointing-non-existent-shapes" ] }, "~:version": 67, @@ -329,13 +331,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } } ], @@ -351,6 +353,42 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e977f9e30ea", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 364.349979565588, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-opacity": 1, + "~:fill-image": { + "~:id": "~u4f89252d-ebbc-813e-8006-8699e4170e18", + "~:width": 443, + "~:height": 441, + "~:mtype": "image/png", + "~:name": "pattern.png", + "~:keep-aspect-ratio": true + } + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -367,15 +405,15 @@ "~:x": 188.99999672174454, "~:y": 318.9999734620724, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 318.9999734620724, "~:x2": 359.0000047683716, - "~:y2": 361.99997143551445 + "~:y2": 362.9999734620724 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, @@ -474,13 +512,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 305.999979064909 + "~:y": 306.9999810914669 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 305.999979064909 + "~:y": 306.9999810914669 } } ], @@ -496,6 +534,35 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e968ea9bb4b", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 308.34998719498253, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(21, 209, 46)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#15d12e", + "~:fill-opacity": 1 + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -519,21 +586,21 @@ "~:x": 188.99999672174454, "~:y": 262.9999810914669, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 262.9999810914669, "~:x2": 359.0000047683716, - "~:y2": 305.999979064909 + "~:y2": 306.9999810914669 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, "~u8e0276b0-5131-8065-8006-87c8c98fa23d": { "~#shape": { - "~:y": 601.000025231285, + "~:y": 579.9999966210555, "~:transform": { "~#matrix": { "~:a": 1, @@ -692,26 +759,26 @@ "~:points": [ { "~#point": { - "~:x": 533.9999873919224, - "~:y": 601.0000252312851 + "~:x": 669.0000026507115, + "~:y": 579.9999966210556 } }, { "~#point": { - "~:x": 818.0000525145931, - "~:y": 601.0000252312851 + "~:x": 953.0000677733822, + "~:y": 579.9999966210556 } }, { "~#point": { - "~:x": 818.0000525145931, - "~:y": 690.9999714607172 + "~:x": 953.0000677733822, + "~:y": 669.9999428504877 } }, { "~#point": { - "~:x": 533.9999873919224, - "~:y": 690.9999714607172 + "~:x": 669.0000026507115, + "~:y": 669.9999428504877 } } ], @@ -729,8 +796,120 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~u8e0276b0-5131-8065-8006-87c8c98fa23d", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 625.3500027245711, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 669.0000026507116, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 45, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🔥" + } + }, + { + "~#rect": { + "~:y": 625.3500027245711, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 714.0000026507116, + "~:x1": 45, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 90, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👩🏿\u200d🚀" + } + }, + { + "~#rect": { + "~:y": 625.3500027245711, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 759.0000026507116, + "~:x1": 90, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 135, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👺" + } + }, + { + "~#rect": { + "~:y": 625.3500027245711, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 804.0000026507116, + "~:x1": 135, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 180, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🚀" + } + }, + { + "~#rect": { + "~:y": 668.5499996728133, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 41.05000305175781, + "~:width": 7.26666259765625, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 669.0000026507116, + "~:x1": 0, + "~:y2": 88.55000305175781, + "~:fills": [], + "~:x2": 7.26666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": " " + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", - "~:x": 533.9999873919226, + "~:x": 669.0000026507116, "~:shadow": [ { "~:color": { @@ -748,14 +927,14 @@ ], "~:selrect": { "~#rect": { - "~:x": 533.9999873919226, - "~:y": 601.000025231285, + "~:x": 669.0000026507116, + "~:y": 579.9999966210555, "~:width": 284.00006512267055, "~:height": 89.99994622943211, - "~:x1": 533.9999873919226, - "~:y1": 601.000025231285, - "~:x2": 818.0000525145931, - "~:y2": 690.9999714607171 + "~:x1": 669.0000026507116, + "~:y1": 579.9999966210555, + "~:x2": 953.0000677733822, + "~:y2": 669.9999428504876 } }, "~:flip-x": null, @@ -871,6 +1050,30 @@ }, "~:id": "~uef609b51-0d34-80f3-8006-5e99460c12bb", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 596.1000958619669, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -9.649993896484375, + "~:width": 144, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 185.92164040549193, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 144, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "萎ポくろ" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -953,7 +1156,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#2244ab", + "~:fill-opacity": 0.6166666666666667 + } + ], "~:font-family": "sourcesanspro", "~:text": "萎ポくろ" } @@ -971,7 +1179,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#2244ab", + "~:fill-opacity": 0.6166666666666667 + } + ], "~:font-family": "sourcesanspro" } ] @@ -1020,8 +1233,70 @@ "~:f": 0 } }, + "~:blur": { + "~:id": "~ufcdfaec2-c882-800a-8006-bdfe640d48c0", + "~:type": "~:layer-blur", + "~:value": 1, + "~:hidden": false + }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e980c195547", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 468.3500178775157, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -9.649993896484375, + "~:width": 72, + "~:text-decoration": "rgba(34, 68, 171, 0.617)", + "~:letter-spacing": "normal", + "~:x": 192.5000022321518, + "~:x1": 9.5, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#2244ab", + "~:fill-opacity": 0.6166666666666667 + } + ], + "~:x2": 81.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "萎ポ" + } + }, + { + "~#rect": { + "~:y": 511.5500148257579, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 33.55000305175781, + "~:width": 72, + "~:text-decoration": "rgba(34, 68, 171, 0.617)", + "~:letter-spacing": "normal", + "~:x": 192.5000022321518, + "~:x1": 9.5, + "~:y2": 88.55000305175781, + "~:fills": [ + { + "~:fill-color": "#2244ab", + "~:fill-opacity": 0.6166666666666667 + } + ], + "~:x2": 81.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "くろ" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -1076,6 +1351,28 @@ "~:line-height": "1.2", "~:font-style": "normal", "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1f62xcal6hw", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🔥" + }, { "~:line-height": "", "~:font-style": "normal", @@ -1096,7 +1393,7 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": "❤️ " + "~:text": " " }, { "~:line-height": "", @@ -1127,7 +1424,7 @@ "~:text-transform": "none", "~:font-id": "sourcesanspro", "~:key": "59c3kg7hq8", - "~:font-size": "24", + "~:font-size": "0", "~:font-weight": "normal", "~:typography-ref-file": null, "~:font-variant-id": "regular", @@ -1206,15 +1503,37 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": " unicode ❤️" + "~:text": " unicode " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "vff0hj0mq3", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🔥" } ], "~:typography-ref-id": null, "~:text-transform": "none", "~:text-align": "left", "~:font-id": "sourcesanspro", - "~:key": "2bd6up3z17w", - "~:font-size": "0", + "~:key": "1gghvlvyoud", + "~:font-size": "24", "~:font-weight": "normal", "~:typography-ref-file": null, "~:text-direction": "ltr", @@ -1278,6 +1597,143 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~u8e0276b0-5131-8065-8006-87c89da3209e", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 34.83332824707031, + "~:text-decoration": "rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 528.9999767398235, + "~:x1": 0, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 34.83332824707031, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "❤️ " + } + }, + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 11.133331298828125, + "~:text-decoration": "rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 563.8333049868938, + "~:x1": 34.83332824707031, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 45.96665954589844, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "I " + } + }, + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 6.116668701171875, + "~:text-decoration": "rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 574.966636285722, + "~:x1": 45.96665954589844, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 52.08332824707031, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "l" + } + }, + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 35.93333435058594, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 581.0833049868938, + "~:x1": 52.08332824707031, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 88.01666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "ove" + } + }, + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 120.41667175292969, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 617.0166393374798, + "~:x1": 88.01666259765625, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 208.43333435058594, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": " unicode ❤️" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [], "~:x": 528.9999767398235, @@ -1407,13 +1863,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } } ], @@ -1429,6 +1885,42 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e9771af0c6e", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 364.349979565588, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-opacity": 1, + "~:fill-image": { + "~:id": "~u4f89252d-ebbc-813e-8006-8699e4170e18", + "~:width": 443, + "~:height": 441, + "~:mtype": "image/png", + "~:name": "pattern.png", + "~:keep-aspect-ratio": true + } + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -1445,15 +1937,15 @@ "~:x": 188.99999672174454, "~:y": 318.9999734620724, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 318.9999734620724, "~:x2": 359.0000047683716, - "~:y2": 361.99997143551445 + "~:y2": 362.9999734620724 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, @@ -1566,13 +2058,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } } ], @@ -1588,6 +2080,42 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e9775677e20", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 364.349979565588, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-opacity": 1, + "~:fill-image": { + "~:id": "~u4f89252d-ebbc-813e-8006-8699e4170e18", + "~:width": 443, + "~:height": 441, + "~:mtype": "image/png", + "~:name": "pattern.png", + "~:keep-aspect-ratio": true + } + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -1604,21 +2132,21 @@ "~:x": 188.99999672174454, "~:y": 318.9999734620724, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 318.9999734620724, "~:x2": 359.0000047683716, - "~:y2": 361.99997143551445 + "~:y2": 362.9999734620724 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, "~u2e773f0c-bc2a-8063-8006-75d73e978b13": { "~#shape": { - "~:y": 271.0000103742148, + "~:y": 271.00000374648164, "~:transform": { "~#matrix": { "~:a": 1, @@ -1630,7 +2158,7 @@ } }, "~:rotation": 0, - "~:grow-type": "~:fixed", + "~:grow-type": "~:auto-width", "~:content": { "~:type": "root", "~:key": "23iz9tepv1l", @@ -1648,7 +2176,7 @@ "~:typography-ref-id": null, "~:text-transform": "none", "~:font-id": "sourcesanspro", - "~:key": "t8mkaljm92", + "~:key": "16puxcfnj7p", "~:font-size": "24", "~:font-weight": "normal", "~:typography-ref-file": null, @@ -1662,15 +2190,37 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": "❤️ I love unicode ❤️" + "~:text": "🦍 I love unicode " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "23z3cwj10cs", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🦍" } ], "~:typography-ref-id": null, "~:text-transform": "none", "~:text-align": "center", "~:font-id": "sourcesanspro", - "~:key": "2bd6up3z17w", - "~:font-size": "24", + "~:key": "xvgbdzwpy1", + "~:font-size": "0", "~:font-weight": "normal", "~:typography-ref-file": null, "~:text-direction": "ltr", @@ -1692,31 +2242,31 @@ "~:vertical-align": "center" }, "~:name": "❤️ I hate emoji ❤️", - "~:width": 337.10167609832115, + "~:width": 209.00000677171096, "~:type": "~:text", "~:points": [ { "~#point": { - "~:x": 401.0000094603646, - "~:y": 271.0000103742148 + "~:x": 401.00001987243246, + "~:y": 271.00000374648164 } }, { "~#point": { - "~:x": 738.1016855586857, - "~:y": 271.0000103742148 + "~:x": 610.0000266441434, + "~:y": 271.00000374648164 } }, { "~#point": { - "~:x": 738.1016855586857, - "~:y": 427.0000100565906 + "~:x": 610.0000266441434, + "~:y": 300.00000428348255 } }, { "~#point": { - "~:x": 401.0000094603646, - "~:y": 427.0000100565906 + "~:x": 401.00001987243246, + "~:y": 300.00000428348255 } } ], @@ -1734,6 +2284,35 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~u2e773f0c-bc2a-8063-8006-75d73e978b13", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 365.2500103742148, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": 61.75, + "~:width": 208.43333435058594, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 465.3333377074349, + "~:x1": 64.33332824707031, + "~:y2": 94.25, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 272.76666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "❤️ I love unicode ❤️" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -1744,7 +2323,7 @@ "~:stroke-opacity": 1 } ], - "~:x": 401.0000094603646, + "~:x": 401.0000198724324, "~:shadow": [ { "~:color": { @@ -1762,18 +2341,18 @@ ], "~:selrect": { "~#rect": { - "~:x": 401.0000094603646, - "~:y": 271.0000103742148, - "~:width": 337.10167609832115, - "~:height": 155.9999996823758, - "~:x1": 401.0000094603646, - "~:y1": 271.0000103742148, - "~:x2": 738.1016855586857, - "~:y2": 427.0000100565906 + "~:x": 401.0000198724324, + "~:y": 271.00000374648164, + "~:width": 209.00000677171096, + "~:height": 29.000000537000915, + "~:x1": 401.0000198724324, + "~:y1": 271.00000374648164, + "~:x2": 610.0000266441434, + "~:y2": 300.00000428348255 } }, "~:flip-x": null, - "~:height": 155.9999996823758, + "~:height": 29.000000537000915, "~:flip-y": null } }, @@ -1975,6 +2554,118 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~uef609b51-0d34-80f3-8006-5e995b054836", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 684.6584327431164, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 339.16327306897387, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 45, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🔥" + } + }, + { + "~#rect": { + "~:y": 684.6584327431164, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 384.16327306897387, + "~:x1": 45, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 90, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👩🏿\u200d🚀" + } + }, + { + "~#rect": { + "~:y": 684.6584327431164, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 429.16327306897387, + "~:x1": 90, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 135, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👺" + } + }, + { + "~#rect": { + "~:y": 684.6584327431164, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 474.16327306897387, + "~:x1": 135, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 180, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🚀" + } + }, + { + "~#rect": { + "~:y": 727.8584296913585, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 41.05000305175781, + "~:width": 7.26666259765625, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 339.16327306897387, + "~:x1": 0, + "~:y2": 88.55000305175781, + "~:fills": [], + "~:x2": 7.26666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": " " + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:x": 339.16327306897387, "~:selrect": { @@ -2020,6 +2711,28 @@ "~:line-height": "1.2", "~:font-style": "normal", "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "16xfalefku7", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🔥" + }, { "~:line-height": "", "~:font-style": "normal", @@ -2040,7 +2753,7 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": "❤️ I " + "~:text": " I " }, { "~:line-height": "", @@ -2084,15 +2797,37 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": " unicode ❤️" + "~:text": " unicode " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "20mlxdc1w6k", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🔥" } ], "~:typography-ref-id": null, "~:text-transform": "none", "~:text-align": "left", "~:font-id": "sourcesanspro", - "~:key": "2bd6up3z17w", - "~:font-size": "0", + "~:key": "26o9ihmqfo3", + "~:font-size": "24", "~:font-weight": "normal", "~:typography-ref-file": null, "~:text-direction": "ltr", @@ -2156,6 +2891,89 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~uef609b51-0d34-80f3-8006-5e98ba9c0e14", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 459.6499959062836, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 45.96665954589844, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 528.9999767398235, + "~:x1": 0, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 45.96665954589844, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "❤️ I " + } + }, + { + "~#rect": { + "~:y": 459.6499959062836, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 42.05000305175781, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 574.966636285722, + "~:x1": 45.96665954589844, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 88.01666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "love" + } + }, + { + "~#rect": { + "~:y": 459.6499959062836, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 120.41667175292969, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 617.0166393374798, + "~:x1": 88.01666259765625, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 208.43333435058594, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": " unicode ❤️" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [], "~:x": 528.9999767398235, @@ -2282,13 +3100,65 @@ "~:f": 0 } }, + "~:blur": { + "~:id": "~u8df74ea5-9311-8065-8006-bdfdeeb5d79d", + "~:type": "~:layer-blur", + "~:value": 1, + "~:hidden": false + }, "~:id": "~uef609b51-0d34-80f3-8006-5e9934d0368b", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 468.3500177125625, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -9.649993896484375, + "~:width": 72, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 276.4999941259201, + "~:x1": 9.5, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 81.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "萎ポ" + } + }, + { + "~#rect": { + "~:y": 511.55001466080466, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 33.55000305175781, + "~:width": 72, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 276.4999941259201, + "~:x1": 9.5, + "~:y2": 88.55000305175781, + "~:fills": [], + "~:x2": 81.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "くろ" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { "~:stroke-style": "~:solid", - "~:stroke-alignment": "~:outer", + "~:stroke-alignment": "~:inner", "~:stroke-width": 1, "~:stroke-color": "#13a9f5", "~:stroke-opacity": 1 @@ -2304,7 +3174,7 @@ "~:spread": 0, "~:offset-y": 4, "~:style": "~:drop-shadow", - "~:blur": 4, + "~:blur": 2, "~:hidden": false, "~:id": "~uef609b51-0d34-80f3-8006-5e99383d5786", "~:offset-x": 4 @@ -2329,7 +3199,7 @@ }, "~uef609b51-0d34-80f3-8006-5e9880f79b0b": { "~#shape": { - "~:y": 269.00000893934515, + "~:y": 236.99999557797076, "~:transform": { "~#matrix": { "~:a": 1, @@ -2353,6 +3223,28 @@ "~:line-height": "1.2", "~:font-style": "normal", "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1mn62cp66z5", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🦍 I love unicode 🦍" + }, { "~:line-height": "", "~:font-style": "normal", @@ -2373,14 +3265,14 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": "❤️ I love unicode ❤️" + "~:text": "" } ], "~:typography-ref-id": null, "~:text-transform": "none", "~:text-align": "right", "~:font-id": "sourcesanspro", - "~:key": "2bd6up3z17w", + "~:key": "1igf9c5g7qb", "~:font-size": "24", "~:font-weight": "normal", "~:typography-ref-file": null, @@ -2408,26 +3300,26 @@ "~:points": [ { "~#point": { - "~:x": 439.0000065171845, - "~:y": 269.00000893934515 + "~:x": 459.9999940731069, + "~:y": 236.99999557797076 } }, { "~#point": { - "~:x": 737.9999993406883, - "~:y": 269.00000893934515 + "~:x": 758.9999868966107, + "~:y": 236.99999557797076 } }, { "~#point": { - "~:x": 737.9999993406883, - "~:y": 298.0000082477825 + "~:x": 758.9999868966107, + "~:y": 265.99999056507147 } }, { "~#point": { - "~:x": 439.0000065171845, - "~:y": 298.0000082477825 + "~:x": 459.9999940731069, + "~:y": 265.99999056507147 } } ], @@ -2445,6 +3337,35 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~uef609b51-0d34-80f3-8006-5e9880f79b0b", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 299.6499723182514, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 208.43333435058594, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 529.5666721665986, + "~:x1": 90.56666564941406, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 299, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "❤️ I love unicode ❤️" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -2455,21 +3376,21 @@ "~:stroke-opacity": 1 } ], - "~:x": 439.0000065171845, + "~:x": 459.9999940731069, "~:selrect": { "~#rect": { - "~:x": 439.0000065171845, - "~:y": 269.00000893934515, + "~:x": 459.9999940731069, + "~:y": 236.99999557797076, "~:width": 298.9999928235038, - "~:height": 28.99999930843734, - "~:x1": 439.0000065171845, - "~:y1": 269.00000893934515, - "~:x2": 737.9999993406883, - "~:y2": 298.0000082477825 + "~:height": 28.999994987100706, + "~:x1": 459.9999940731069, + "~:y1": 236.99999557797076, + "~:x2": 758.9999868966107, + "~:y2": 265.99999056507147 } }, "~:flip-x": null, - "~:height": 28.99999930843734, + "~:height": 28.999994987100706, "~:flip-y": null } }, @@ -2672,6 +3593,96 @@ "~:hidden": false, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e98597c0d17", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 522.3500189623526, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 528.9999944726542, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 45, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🔥" + } + }, + { + "~#rect": { + "~:y": 522.3500189623526, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 573.9999944726542, + "~:x1": 45, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 90, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👩🏿\u200d🚀" + } + }, + { + "~#rect": { + "~:y": 522.3500189623526, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 618.9999944726542, + "~:x1": 90, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 135, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👺" + } + }, + { + "~#rect": { + "~:y": 522.3500189623526, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 663.9999944726542, + "~:x1": 135, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 180, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🚀" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:x": 528.9999944726542, "~:selrect": { @@ -2800,13 +3811,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } } ], @@ -2822,6 +3833,42 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e974ec5dede", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 364.349979565588, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-opacity": 1, + "~:fill-image": { + "~:id": "~u4f89252d-ebbc-813e-8006-8699e4170e18", + "~:width": 443, + "~:height": 441, + "~:mtype": "image/png", + "~:name": "pattern.png", + "~:keep-aspect-ratio": true + } + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -2838,15 +3885,15 @@ "~:x": 188.99999672174454, "~:y": 318.9999734620724, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 318.9999734620724, "~:x2": 359.0000047683716, - "~:y2": 361.99997143551445 + "~:y2": 362.9999734620724 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, @@ -2958,6 +4005,30 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e979761b8f6", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 416.3500138978643, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -9.649993896484375, + "~:width": 144, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999416516704, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 144, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "萎ポくろ" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -2988,7 +4059,7 @@ }, "~uef609b51-0d34-80f3-8006-5e9929d3fa47": { "~#shape": { - "~:y": 537.9999565667342, + "~:y": 526.9999908990096, "~:transform": { "~#matrix": { "~:a": 1, @@ -3025,7 +4096,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "🔥" }, @@ -3042,7 +4118,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "👩🏿\u200d🚀" }, @@ -3059,7 +4140,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "👺" }, @@ -3076,7 +4162,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "🚀" } @@ -3094,7 +4185,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro" }, { @@ -3114,7 +4210,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "" } @@ -3132,7 +4233,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro" } ] @@ -3147,26 +4253,26 @@ "~:points": [ { "~#point": { - "~:x": 441.9999797625279, - "~:y": 537.9999565667343 + "~:x": 450.0000245852208, + "~:y": 526.9999908990097 } }, { "~#point": { - "~:x": 726.0000448851986, - "~:y": 537.9999565667343 + "~:x": 734.0000897078914, + "~:y": 526.9999908990097 } }, { "~#point": { - "~:x": 726.0000448851986, - "~:y": 627.9999027961665 + "~:x": 734.0000897078914, + "~:y": 616.9999371284418 } }, { "~#point": { - "~:x": 441.9999797625279, - "~:y": 627.9999027961665 + "~:x": 450.0000245852208, + "~:y": 616.9999371284418 } } ], @@ -3184,8 +4290,145 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~uef609b51-0d34-80f3-8006-5e9929d3fa47", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 572.3499970025252, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 450.00002458522084, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 45, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🔥" + } + }, + { + "~#rect": { + "~:y": 572.3499970025252, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 495.00002458522084, + "~:x1": 45, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 90, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👩🏿\u200d🚀" + } + }, + { + "~#rect": { + "~:y": 572.3499970025252, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 540.0000245852209, + "~:x1": 90, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 135, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👺" + } + }, + { + "~#rect": { + "~:y": 572.3499970025252, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 585.0000245852209, + "~:x1": 135, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 180, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🚀" + } + }, + { + "~#rect": { + "~:y": 615.5499939507674, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 41.05000305175781, + "~:width": 7.26666259765625, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 450.00002458522084, + "~:x1": 0, + "~:y2": 88.55000305175781, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 7.26666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": " " + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", - "~:x": 441.99997976252797, + "~:x": 450.00002458522084, "~:shadow": [ { "~:color": { @@ -3203,14 +4446,14 @@ ], "~:selrect": { "~#rect": { - "~:x": 441.99997976252797, - "~:y": 537.9999565667342, + "~:x": 450.00002458522084, + "~:y": 526.9999908990096, "~:width": 284.0000651226706, "~:height": 89.99994622943211, - "~:x1": 441.99997976252797, - "~:y1": 537.9999565667342, - "~:x2": 726.0000448851986, - "~:y2": 627.9999027961663 + "~:x1": 450.00002458522084, + "~:y1": 526.9999908990096, + "~:x2": 734.0000897078914, + "~:y2": 616.9999371284417 } }, "~:flip-x": null, @@ -3220,7 +4463,7 @@ }, "~u8e0276b0-5131-8065-8006-87c8d5780f60": { "~#shape": { - "~:y": 213.00001923843956, + "~:y": 166.00000568175594, "~:transform": { "~#matrix": { "~:a": 1, @@ -3295,34 +4538,35 @@ }, "~:hide-in-viewer": false, "~:name": "Text", - "~:width": 170.00000804662704, + "~:width": 170, "~:type": "~:text", "~:points": [ { "~#point": { - "~:x": 186.99999576807022, - "~:y": 213.00001923843956 + "~:x": 372.0000051221425, + "~:y": 166.00000568175594 } }, { "~#point": { - "~:x": 357.00000381469727, - "~:y": 213.00001923843956 + "~:x": 542.0000051221425, + "~:y": 166.00000568175594 } }, { "~#point": { - "~:x": 357.00000381469727, - "~:y": 256.00001721188164 + "~:x": 542.0000051221425, + "~:y": 210.00000568175594 } }, { "~#point": { - "~:x": 186.99999576807022, - "~:y": 256.00001721188164 + "~:x": 372.0000051221425, + "~:y": 210.00000568175594 } } ], + "~:layout-item-h-sizing": "~:fix", "~:transform-inverse": { "~#matrix": { "~:a": 1, @@ -3333,8 +4577,38 @@ "~:f": 0 } }, + "~:layout-item-v-sizing": "~:fix", "~:id": "~u8e0276b0-5131-8065-8006-87c8d5780f60", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 211.35001178527156, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(21, 209, 46)", + "~:letter-spacing": "normal", + "~:x": 372.0000051221425, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#15d12e", + "~:fill-opacity": 1 + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -3352,7 +4626,7 @@ } } ], - "~:x": 186.99999576807022, + "~:x": 372.0000051221425, "~:shadow": [ { "~:color": { @@ -3370,18 +4644,18 @@ ], "~:selrect": { "~#rect": { - "~:x": 186.99999576807022, - "~:y": 213.00001923843956, - "~:width": 170.00000804662704, - "~:height": 42.99999797344208, - "~:x1": 186.99999576807022, - "~:y1": 213.00001923843956, - "~:x2": 357.00000381469727, - "~:y2": 256.00001721188164 + "~:x": 372.0000051221425, + "~:y": 166.00000568175594, + "~:width": 170, + "~:height": 44, + "~:x1": 372.0000051221425, + "~:y1": 166.00000568175594, + "~:x2": 542.0000051221425, + "~:y2": 210.00000568175594 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } } diff --git a/frontend/playwright/data/render-wasm/get-file-text-leaves-decoration.json b/frontend/playwright/data/render-wasm/get-file-text-leaves-decoration.json new file mode 100644 index 0000000000..560dde73cd --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-text-leaves-decoration.json @@ -0,0 +1,5728 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "check_multiple_decorations_and_fonts (copy) 2", + "~:revn": 253, + "~:modified-at": "~m1757072822684", + "~:vern": 0, + "~:id": "~u44471494-966a-8178-8006-c1b0e4befad3", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1756197191725", + "~:data": { + "~:pages": [ + "~ub4cb802d-4245-807d-8006-b4a4b90b79cd" + ], + "~:pages-index": { + "~ub4cb802d-4245-807d-8006-b4a4b90b79cd": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~u02222a8b-99ee-803c-8006-b4a5d6ab5258", + "~u3ae2c7c2-74be-808c-8006-b4a9af001a14", + "~u3ae2c7c2-74be-808c-8006-b4a9b7db5fd2", + "~u73ef3085-9adf-8063-8006-b4ac6c34678a", + "~u0b78601e-aeb6-8065-8006-b4ae461f507b", + "~u0b78601e-aeb6-8065-8006-b4ae598da346", + "~u372dc781-22b4-808b-8006-b4d381e231cc", + "~u372dc781-22b4-808b-8006-b4d32b23831d", + "~u372dc781-22b4-808b-8006-b4d371b35ffb", + "~u8db91f66-0aee-80fd-8006-b4d0d15a1e56" + ] + } + }, + "~u73ef3085-9adf-8063-8006-b4ac6c34678a": { + "~#shape": { + "~:y": 902.0000095367432, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with styles and strokes", + "~:width": 902.6199789047241, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 12.000000476837158, + "~:y": 902.0000095367432 + } + }, + { + "~#point": { + "~:x": 914.6199793815613, + "~:y": 902.0000095367432 + } + }, + { + "~#point": { + "~:x": 914.6199793815613, + "~:y": 1191.0000095367432 + } + }, + { + "~#point": { + "~:x": 12.000000476837158, + "~:y": 1191.0000095367432 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u73ef3085-9adf-8063-8006-b4ac6c34678a", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 961.800012588501, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 541.2333374023438, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 12.000000476837158, + "~:x1": 0, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 541.2333374023438, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 961.800012588501, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 105.5333251953125, + "~:text-decoration": "underline rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 553.2333378791809, + "~:x1": 541.2333374023438, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 646.7666625976562, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 961.800012588501, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 242.60000610351562, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 658.7666630744934, + "~:x1": 646.7666625976562, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 889.3666687011719, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 189.93333435058594, + "~:text-decoration": "underline rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 12.000000476837158, + "~:x1": 0, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 189.93333435058594, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 12.48333740234375, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 201.9333348274231, + "~:x1": 189.93333435058594, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 202.4166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 226.86666870117188, + "~:text-decoration": "underline rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 214.41667222976685, + "~:x1": 202.4166717529297, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 429.28334045410156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 233.81666564941406, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 441.28332567214966, + "~:x1": 429.2833251953125, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 663.0999908447266, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 162.06666564941406, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 675.0999760627747, + "~:x1": 663.0999755859375, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 825.1666412353516, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 12.483322143554688, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 837.1666874885559, + "~:x1": 825.1666870117188, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 837.6500091552734, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1077.0000095367432, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113, + "~:width": 335.3500061035156, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 12.000000476837158, + "~:x1": 0, + "~:y2": 175, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 335.3500061035156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "for most initial " + } + }, + { + "~#rect": { + "~:y": 1077.0000095367432, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113, + "~:width": 220.56666564941406, + "~:text-decoration": "underline rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 347.3500065803528, + "~:x1": 335.3500061035156, + "~:y2": 175, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 555.9166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#c62d2d", + "~:stroke-opacity": 1 + } + ], + "~:x": 12.000000476837158, + "~:selrect": { + "~#rect": { + "~:x": 12.000000476837158, + "~:y": 902.0000095367432, + "~:width": 902.6199789047241, + "~:height": 289, + "~:x1": 12.000000476837158, + "~:y1": 902.0000095367432, + "~:x2": 914.6199793815613, + "~:y2": 1191.0000095367432 + } + }, + "~:flip-x": null, + "~:height": 289, + "~:flip-y": null + } + }, + "~u372dc781-22b4-808b-8006-b4d371b35ffb": { + "~#shape": { + "~:y": 571.7656477947236, + "~:transform": { + "~#matrix": { + "~:a": 0.9952165422528338, + "~:b": -0.09769357208288199, + "~:c": 0.09769403860773807, + "~:d": 0.995216496457183, + "~:e": 3.865352482534945e-12, + "~:f": 2.5011104298755527e-12 + } + }, + "~:rotation": 354.393619242564, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "2a53nvhqyyr", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "ofebpym2li", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "entangle with" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "e0l9fbir9t", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "note 1", + "~:width": 347.00040933215763, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1791.9998194733364, + "~:y": 588.8996672430844 + } + }, + { + "~#point": { + "~:x": 2137.3403670092043, + "~:y": 554.9999577412037 + } + }, + { + "~#point": { + "~:x": 2144.86280026297, + "~:y": 631.6315493340364 + } + }, + { + "~#point": { + "~:x": 1799.522252727099, + "~:y": 665.5312588359168 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9952164964572922, + "~:b": 0.0976935720828927, + "~:c": -0.09769403860774878, + "~:d": 0.995216542252943, + "~:e": -3.602518976342419e-12, + "~:f": -2.8667665651918355e-12 + } + }, + "~:id": "~u372dc781-22b4-808b-8006-b4d371b35ffb", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 650.2785904104855, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "64px", + "~:font-weight": "200", + "~:y1": -3.100006103515625, + "~:width": 379.5333251953125, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1794.851845488379, + "~:x1": 0, + "~:y2": 79.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 379.5333251953125, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 83, + "~:text": "entangle with" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 1794.9311052020744, + "~:selrect": { + "~#rect": { + "~:x": 1794.9311052020744, + "~:y": 571.7656477947236, + "~:width": 347.00040933215763, + "~:height": 76.99992098767355, + "~:x1": 1794.9311052020744, + "~:y1": 571.7656477947236, + "~:x2": 2141.931514534232, + "~:y2": 648.7655687823972 + } + }, + "~:flip-x": false, + "~:height": 76.99992098767355, + "~:flip-y": false + } + }, + "~u372dc781-22b4-808b-8006-b4d32b23831d": { + "~#shape": { + "~:y": 721.9912496728758, + "~:transform": { + "~#matrix": { + "~:a": 0.9979062226750979, + "~:b": 0.06467743614521781, + "~:c": -0.0646769110437404, + "~:d": 0.9979062567084362, + "~:e": 1.6143530956469476e-11, + "~:f": 8.640199666842818e-12 + } + }, + "~:rotation": 3.7083231923678, + "~:last-resize-direction": "~:horizontal", + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "2a53nvhqyyr", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "16mtpdh59ga", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "kinds of stroke" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "pn0g2pci1v", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "4b6outrc3n", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "note 2", + "~:width": 651.5976369308551, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1403.9800868616605, + "~:y": 700.9998211476991 + } + }, + { + "~#point": { + "~:x": 2054.2134457049383, + "~:y": 743.1434959059359 + } + }, + { + "~#point": { + "~:x": 2049.2332981915206, + "~:y": 819.9826484450987 + } + }, + { + "~#point": { + "~:x": 1398.9999393482426, + "~:y": 777.8389736868622 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9979062567085724, + "~:b": -0.06467743614522664, + "~:c": 0.06467691104374923, + "~:d": 0.997906222675234, + "~:e": -1.666855197208204e-11, + "~:f": -7.57798682010339e-12 + } + }, + "~:id": "~u372dc781-22b4-808b-8006-b4d32b23831d", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 801.8906385194807, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "64px", + "~:font-weight": "200", + "~:y1": -3.100006103515625, + "~:width": 422.25, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1400.8079278537045, + "~:x1": 0, + "~:y2": 79.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 422.25, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 83, + "~:text": "kinds of stroke" + } + }, + { + "~#rect": { + "~:y": 801.8906385194807, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "64px", + "~:font-weight": "200", + "~:y1": -3.100006103515625, + "~:width": 16.633331298828125, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1823.0579278537045, + "~:x1": 422.25, + "~:y2": 79.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 438.8833312988281, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 83, + "~:text": " " + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 1400.8078740611627, + "~:selrect": { + "~#rect": { + "~:x": 1400.8078740611627, + "~:y": 721.9912496728758, + "~:width": 651.5976369308551, + "~:height": 76.99997024704669, + "~:x1": 1400.8078740611627, + "~:y1": 721.9912496728758, + "~:x2": 2052.4055109920178, + "~:y2": 798.9912199199225 + } + }, + "~:flip-x": null, + "~:height": 76.99997024704669, + "~:flip-y": null + } + }, + "~u02222a8b-99ee-803c-8006-b4a5d6ab5258": { + "~#shape": { + "~:y": 51.00000008146496, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with different styles", + "~:width": 874.6199485640761, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 26.99999924039914, + "~:y": 51.00000008146496 + } + }, + { + "~#point": { + "~:x": 901.6199478044753, + "~:y": 51.00000008146496 + } + }, + { + "~#point": { + "~:x": 901.6199478044753, + "~:y": 225.0000036577428 + } + }, + { + "~#point": { + "~:x": 26.99999924039914, + "~:y": 225.0000036577428 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u02222a8b-99ee-803c-8006-b4a5d6ab5258", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 111.30000972747621, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 490.91668701171875, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 26.999996885981773, + "~:x1": 0, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 490.91668701171875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 111.30000972747621, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 95.66665649414062, + "~:text-decoration": "line-through rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 517.9166838977005, + "~:x1": 490.91668701171875, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 586.5833435058594, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 111.30000972747621, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 213.13333129882812, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 613.583309874263, + "~:x1": 586.5833129882812, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 799.7166442871094, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 176.85000610351562, + "~:text-decoration": "underline rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 26.999996885981773, + "~:x1": 0, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 176.85000610351562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 9.683334350585938, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 203.8500029894974, + "~:x1": 176.85000610351562, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 186.53334045410156, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 209.59999084472656, + "~:text-decoration": "line-through rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 213.53333734008334, + "~:x1": 186.53334045410156, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 396.1333312988281, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 202.88333129882812, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 423.1333281848099, + "~:x1": 396.1333312988281, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 599.0166625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 148.43333435058594, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 626.016659483638, + "~:x1": 599.0166625976562, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 747.4499969482422, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 75.56666564941406, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 774.450009093013, + "~:x1": 747.4500122070312, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 823.0166778564453, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " for " + } + }, + { + "~#rect": { + "~:y": 226.5000066757184, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 112.5, + "~:width": 236.10000610351562, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 26.999996885981773, + "~:x1": 0, + "~:y2": 175.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 236.10000610351562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "most initial " + } + }, + { + "~#rect": { + "~:y": 226.5000066757184, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 112.5, + "~:width": 211.93333435058594, + "~:text-decoration": "line-through rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 263.1000029894974, + "~:x1": 236.10000610351562, + "~:y2": 175.5, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 448.03334045410156, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 26.99999924039912, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u87480ed2-12e1-804c-8006-c0758bb799fe", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 26.99999924039912, + "~:y": 51.00000008146496, + "~:width": 874.6199485640761, + "~:height": 174.00000357627783, + "~:x1": 26.99999924039912, + "~:y1": 51.00000008146496, + "~:x2": 901.6199478044753, + "~:y2": 225.0000036577428 + } + }, + "~:flip-x": null, + "~:height": 174.00000357627783, + "~:flip-y": null + } + }, + "~u0b78601e-aeb6-8065-8006-b4ae461f507b": { + "~#shape": { + "~:y": 1158.9999732971191, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with different styles and smooth font", + "~:width": 902.6199789047241, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 13.999999761581421, + "~:y": 1158.9999732971191 + } + }, + { + "~#point": { + "~:x": 916.6199786663055, + "~:y": 1158.9999732971191 + } + }, + { + "~#point": { + "~:x": 916.6199786663055, + "~:y": 1447.9999732971191 + } + }, + { + "~#point": { + "~:x": 13.999999761581421, + "~:y": 1447.9999732971191 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u0b78601e-aeb6-8065-8006-b4ae461f507b", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 1218.799976348877, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 541.2333374023438, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 13.999999761581421, + "~:x1": 0, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 541.2333374023438, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 1218.799976348877, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 105.5333251953125, + "~:text-decoration": "line-through rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 555.2333371639252, + "~:x1": 541.2333374023438, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 646.7666625976562, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 1218.799976348877, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 242.60000610351562, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 660.7666623592377, + "~:x1": 646.7666625976562, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 889.3666687011719, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 189.93333435058594, + "~:text-decoration": "line-through rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 13.999999761581421, + "~:x1": 0, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 189.93333435058594, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 12.48333740234375, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 203.93333411216736, + "~:x1": 189.93333435058594, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 202.4166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 226.86666870117188, + "~:text-decoration": "line-through rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 216.4166715145111, + "~:x1": 202.4166717529297, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 429.28334045410156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 233.81666564941406, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 443.2833249568939, + "~:x1": 429.2833251953125, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 663.0999908447266, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 162.06666564941406, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 677.0999753475189, + "~:x1": 663.0999755859375, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 825.1666412353516, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 12.483322143554688, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 839.1666867733002, + "~:x1": 825.1666870117188, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 837.6500091552734, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1333.9999732971191, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113, + "~:width": 335.3500061035156, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 13.999999761581421, + "~:x1": 0, + "~:y2": 175, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 335.3500061035156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "for most initial " + } + }, + { + "~#rect": { + "~:y": 1333.9999732971191, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113, + "~:width": 220.56666564941406, + "~:text-decoration": "line-through rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 349.35000586509705, + "~:x1": 335.3500061035156, + "~:y2": 175, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 555.9166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 13.999999761581421, + "~:selrect": { + "~#rect": { + "~:x": 13.999999761581421, + "~:y": 1158.9999732971191, + "~:width": 902.6199789047241, + "~:height": 289, + "~:x1": 13.999999761581421, + "~:y1": 1158.9999732971191, + "~:x2": 916.6199786663055, + "~:y2": 1447.9999732971191 + } + }, + "~:flip-x": null, + "~:height": 289, + "~:flip-y": null + } + }, + "~u3ae2c7c2-74be-808c-8006-b4a9af001a14": { + "~#shape": { + "~:y": 315.99999931258725, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with different color and font", + "~:width": 824.9510596295723, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 31.00000099539099, + "~:y": 315.99999931258725 + } + }, + { + "~#point": { + "~:x": 855.9510606249634, + "~:y": 315.99999931258725 + } + }, + { + "~#point": { + "~:x": 855.9510606249634, + "~:y": 490.0000003407674 + } + }, + { + "~#point": { + "~:x": 31.00000099539099, + "~:y": 490.0000003407674 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u3ae2c7c2-74be-808c-8006-b4a9af001a14", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 375.29999923706055, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -1.6999969482421875, + "~:width": 612.8333129882812, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 31.000000256992166, + "~:x1": 0, + "~:y2": 59.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 612.8333129882812, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 375.29999923706055, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -1.6999969482421875, + "~:width": 111.06666564941406, + "~:text-decoration": "underline rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 643.8333132452734, + "~:x1": 612.8333129882812, + "~:y2": 59.30000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 723.8999786376953, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 375.29999923706055, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -1.6999969482421875, + "~:width": 17.383346557617188, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 754.9000246710547, + "~:x1": 723.9000244140625, + "~:y2": 59.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 741.2833709716797, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 263.48333740234375, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 31.000000256992166, + "~:x1": 0, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 263.48333740234375, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "other, the " + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 231.5, + "~:text-decoration": "underline rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 294.4833376593359, + "~:x1": 263.48333740234375, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 494.98333740234375, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 17.383331298828125, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 525.9833376593359, + "~:x1": 494.98333740234375, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 512.3666687011719, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 256.79998779296875, + "~:text-decoration": "underline rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 543.3666994757422, + "~:x1": 512.36669921875, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 769.1666870117188, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 17.383331298828125, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 800.1666872687109, + "~:x1": 769.1666870117188, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 786.5500183105469, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 490.49999618530273, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113.5, + "~:width": 254.71665954589844, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 31.000000256992166, + "~:x1": 0, + "~:y2": 174.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 254.71665954589844, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "system is " + } + }, + { + "~#rect": { + "~:y": 490.49999618530273, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113.5, + "~:width": 176.25, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 285.7166598028906, + "~:x1": 254.71665954589844, + "~:y2": 174.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 430.96665954589844, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 490.49999618530273, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113.5, + "~:width": 256.3500061035156, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 461.96667506167967, + "~:x1": 430.9666748046875, + "~:y2": 174.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 687.3166809082031, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": " for most " + } + }, + { + "~#rect": { + "~:y": 548.1000022888184, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 171.10000610351562, + "~:width": 170.01666259765625, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 31.000000256992166, + "~:x1": 0, + "~:y2": 232.10000610351562, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 170.01666259765625, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "initial " + } + }, + { + "~#rect": { + "~:y": 548.1000022888184, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 171.10000610351562, + "~:width": 252.68333435058594, + "~:text-decoration": "underline rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 201.01666285464842, + "~:x1": 170.01666259765625, + "~:y2": 232.10000610351562, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 422.6999969482422, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 31.00000099539102, + "~:selrect": { + "~#rect": { + "~:x": 31.00000099539102, + "~:y": 315.99999931258725, + "~:width": 824.9510596295723, + "~:height": 174.00000102818012, + "~:x1": 31.00000099539102, + "~:y1": 315.99999931258725, + "~:x2": 855.9510606249634, + "~:y2": 490.0000003407674 + } + }, + "~:flip-x": null, + "~:height": 174.00000102818012, + "~:flip-y": null + } + }, + "~u0b78601e-aeb6-8065-8006-b4ae598da346": { + "~#shape": { + "~:y": 64.99999809265137, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with different styles and shadow", + "~:width": 902.6199789047241, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1007.9999961853027, + "~:y": 64.99999809265137 + } + }, + { + "~#point": { + "~:x": 1910.6199750900269, + "~:y": 64.99999809265137 + } + }, + { + "~#point": { + "~:x": 1910.6199750900269, + "~:y": 353.99999809265137 + } + }, + { + "~#point": { + "~:x": 1007.9999961853027, + "~:y": 353.99999809265137 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u0b78601e-aeb6-8065-8006-b4ae598da346", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 119.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -7, + "~:width": 541.2333374023438, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1007.9999961853027, + "~:x1": 0, + "~:y2": 55, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 541.2333374023438, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 119.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -7, + "~:width": 105.5333251953125, + "~:text-decoration": "line-through rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 1549.2333335876465, + "~:x1": 541.2333374023438, + "~:y2": 55, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 646.7666625976562, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 119.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -7, + "~:width": 242.60000610351562, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1654.766658782959, + "~:x1": 646.7666625976562, + "~:y2": 55, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 889.3666687011719, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 189.93333435058594, + "~:text-decoration": "line-through rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 1007.9999961853027, + "~:x1": 0, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 189.93333435058594, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 12.48333740234375, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1197.9333305358887, + "~:x1": 189.93333435058594, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 202.4166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 226.86666870117188, + "~:text-decoration": "line-through rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 1210.4166679382324, + "~:x1": 202.4166717529297, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 429.28334045410156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 233.81666564941406, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1437.2833213806152, + "~:x1": 429.2833251953125, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 663.0999908447266, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 162.06666564941406, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1671.0999717712402, + "~:x1": 663.0999755859375, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 825.1666412353516, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 12.483322143554688, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1833.1666831970215, + "~:x1": 825.1666870117188, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 837.6500091552734, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 215.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 89, + "~:width": 335.3500061035156, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1007.9999961853027, + "~:x1": 0, + "~:y2": 151, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 335.3500061035156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "for most initial " + } + }, + { + "~#rect": { + "~:y": 215.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 89, + "~:width": 220.56666564941406, + "~:text-decoration": "line-through rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 1343.3500022888184, + "~:x1": 335.3500061035156, + "~:y2": 151, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 555.9166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 1007.9999961853027, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u4943b8c5-d461-806f-8006-b73eda553863", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1007.9999961853027, + "~:y": 64.99999809265137, + "~:width": 902.6199789047241, + "~:height": 289, + "~:x1": 1007.9999961853027, + "~:y1": 64.99999809265137, + "~:x2": 1910.6199750900269, + "~:y2": 353.99999809265137 + } + }, + "~:flip-x": null, + "~:height": 289, + "~:flip-y": null + } + }, + "~u3ae2c7c2-74be-808c-8006-b4a9b7db5fd2": { + "~#shape": { + "~:y": 622.9999774894502, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes thin underline", + "~:width": 829.9510483261171, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 18.000000167961677, + "~:y": 622.9999774894502 + } + }, + { + "~#point": { + "~:x": 847.9510484940788, + "~:y": 622.9999774894502 + } + }, + { + "~#point": { + "~:x": 847.9510484940788, + "~:y": 796.9999742111947 + } + }, + { + "~#point": { + "~:x": 18.000000167961677, + "~:y": 796.9999742111947 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u3ae2c7c2-74be-808c-8006-b4a9b7db5fd2", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 683.2999839782715, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 490.91668701171875, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 18.00000020002892, + "~:x1": 0, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 490.91668701171875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 683.2999839782715, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 95.66665649414062, + "~:text-decoration": "underline rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 508.91668721174767, + "~:x1": 490.91668701171875, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 586.5833435058594, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 683.2999839782715, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 213.13333129882812, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 604.5833131883102, + "~:x1": 586.5833129882812, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 799.7166442871094, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 176.85000610351562, + "~:text-decoration": "underline rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 18.00000020002892, + "~:x1": 0, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 176.85000610351562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 9.683334350585938, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 194.85000630354455, + "~:x1": 176.85000610351562, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 186.53334045410156, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 209.59999084472656, + "~:text-decoration": "underline rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 204.53334065413048, + "~:x1": 186.53334045410156, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 396.1333312988281, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 202.88333129882812, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 414.13333149885705, + "~:x1": 396.1333312988281, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 599.0166625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 148.43333435058594, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 617.0166627976852, + "~:x1": 599.0166625976562, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 747.4499969482422, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 75.56666564941406, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 765.4500124070602, + "~:x1": 747.4500122070312, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 823.0166778564453, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " for " + } + }, + { + "~#rect": { + "~:y": 798.4999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 112.5, + "~:width": 236.10000610351562, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 18.00000020002892, + "~:x1": 0, + "~:y2": 175.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 236.10000610351562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "most initial " + } + }, + { + "~#rect": { + "~:y": 798.4999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 112.5, + "~:width": 211.93333435058594, + "~:text-decoration": "underline rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 254.10000630354455, + "~:x1": 236.10000610351562, + "~:y2": 175.5, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 448.03334045410156, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 18.00000016796173, + "~:selrect": { + "~#rect": { + "~:x": 18.00000016796173, + "~:y": 622.9999774894502, + "~:width": 829.9510483261171, + "~:height": 173.99999672174454, + "~:x1": 18.00000016796173, + "~:y1": 622.9999774894502, + "~:x2": 847.9510484940788, + "~:y2": 796.9999742111947 + } + }, + "~:flip-x": null, + "~:height": 173.99999672174454, + "~:flip-y": null + } + }, + "~u372dc781-22b4-808b-8006-b4d381e231cc": { + "~#shape": { + "~:y": 1030.1928728054145, + "~:transform": { + "~#matrix": { + "~:a": 0.9667771933303442, + "~:b": -0.2556205360613699, + "~:c": 0.25561985332985415, + "~:d": 0.9667773738475791, + "~:e": 7.73070496506989e-12, + "~:f": 4.320099833421409e-12 + } + }, + "~:rotation": 345.18964078504564, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "2a53nvhqyyr", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "ou0m2kc4di", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "design" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "lei7j6hl8", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "note 3", + "~:width": 168.0000082191185, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1418.9999686428457, + "~:y": 1052.9440733902131 + } + }, + { + "~#point": { + "~:x": 1581.4185450684, + "~:y": 1009.9998212309276 + } + }, + { + "~#point": { + "~:x": 1601.1013260686657, + "~:y": 1084.4418767973168 + } + }, + { + "~#point": { + "~:x": 1438.6827496431108, + "~:y": 1127.3861289566028 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9667773738478213, + "~:b": 0.2556205360614339, + "~:c": -0.25561985332991816, + "~:d": 0.9667771933305863, + "~:e": -6.369567358332796e-12, + "~:f": -6.152700939167038e-12 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~u372dc781-22b4-808b-8006-b4d381e231cc", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 1107.7773422702744, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "64px", + "~:font-weight": "200", + "~:y1": -3.100006103515625, + "~:width": 188.8333282470703, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1425.7019294316813, + "~:x1": 0, + "~:y2": 79.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 188.8333282470703, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 83, + "~:text": "design" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 1426.0506432461964, + "~:selrect": { + "~#rect": { + "~:x": 1426.0506432461964, + "~:y": 1030.1928728054145, + "~:width": 168.0000082191185, + "~:height": 77.00020457670121, + "~:x1": 1426.0506432461964, + "~:y1": 1030.1928728054145, + "~:x2": 1594.0506514653148, + "~:y2": 1107.1930773821157 + } + }, + "~:flip-x": null, + "~:height": 77.00020457670121, + "~:flip-y": null + } + }, + "~u8db91f66-0aee-80fd-8006-b4d0d15a1e56": { + "~#shape": { + "~:y": 544.9999732821145, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:last-resize-direction": "~:horizontal", + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "4", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1qg2rfjeltu", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "When three " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1i5z272bai3", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "bodies" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "juq703mtm3", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "2fbxrvcprv9", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "orbit" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1qcp8fvrfct", + "~:font-size": "0", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "9madaw4nm", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "6jblrptau9", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "each" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "c8k8ui5e7a", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " other, the " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "12yz53vlcq9", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "resulting" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "17560zmv6qd", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "2bzh4tglr6t", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "dynamical" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1117tsar9pu", + "~:font-size": "0", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "9wu2w9l2z1", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " system is " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "nmaiszc59b", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "chaotic" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "haol76vdi7", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " for most initial " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1110bgrqyy", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "conditions " + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "gfont-sofia-sans", + "~:key": "qe37ujule6", + "~:font-size": "0", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans" + }, + { + "~:line-height": "4", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "16hglqhlep1", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "gfont-sofia-sans", + "~:key": "2s11myqei4", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans" + }, + { + "~:line-height": "4", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "dniyoqo1os", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " " + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "gfont-sofia-sans", + "~:key": "ljvpiew0gz", + "~:font-size": "0", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "The Three-Kinds-Of-Stroke Problem", + "~:width": 1313.8100164113944, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1123.9999631135577, + "~:y": 544.9999732821145 + } + }, + { + "~#point": { + "~:x": 2437.8099795249523, + "~:y": 544.9999732821145 + } + }, + { + "~#point": { + "~:x": 2437.8099795249523, + "~:y": 1984.9999947397866 + } + }, + { + "~#point": { + "~:x": 1123.9999631135577, + "~:y": 1984.9999947397866 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u8db91f66-0aee-80fd-8006-b4d0d15a1e56", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 378.5333251953125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1156.3166287629715, + "~:x1": 32.31666564941406, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 410.84999084472656, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "When three " + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 205.3333282470703, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1534.849969217073, + "~:x1": 410.8500061035156, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 616.1833343505859, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "bodies" + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 14.899993896484375, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1740.1833127229324, + "~:x1": 616.183349609375, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 631.0833435058594, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 148.70001220703125, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1755.0832761018387, + "~:x1": 631.0833129882812, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 779.7833251953125, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "orbit" + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 14.899993896484375, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1903.78328830887, + "~:x1": 779.7833251953125, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 794.6833190917969, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 151.2833251953125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1918.6833127229324, + "~:x1": 794.683349609375, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 945.9666748046875, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 335.51666259765625, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 2069.966637918245, + "~:x1": 945.9666748046875, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 1281.4833374023438, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 275.83331298828125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1136.533303567659, + "~:x1": 12.533340454101562, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 288.3666534423828, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 14.899993896484375, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1412.3666318147293, + "~:x1": 288.3666687011719, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 303.26666259765625, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 319.1500244140625, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1427.2666257112137, + "~:x1": 303.26666259765625, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 622.4166870117188, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 324.45001220703125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1746.4166501252762, + "~:x1": 622.4166870117188, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 946.86669921875, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 235.14999389648438, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 2070.8666623323074, + "~:x1": 946.86669921875, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 1182.0166931152344, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 119.25, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 2306.0165646760574, + "~:x1": 1182.0166015625, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 1301.2666015625, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " for " + } + }, + { + "~#rect": { + "~:y": 1308.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 676.5, + "~:width": 364.1499938964844, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1422.9833005159012, + "~:x1": 298.98333740234375, + "~:y2": 763.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 663.1333312988281, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "most initial " + } + }, + { + "~#rect": { + "~:y": 1308.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 676.5, + "~:width": 351.683349609375, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1787.1332638948074, + "~:x1": 663.13330078125, + "~:y2": 763.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 1014.816650390625, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "conndition " + } + }, + { + "~#rect": { + "~:y": 1596.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 964.5, + "~:width": 14.900009155273438, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1773.4499753205887, + "~:x1": 649.4500122070312, + "~:y2": 1051.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 664.3500213623047, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1884.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 1252.5, + "~:width": 14.900009155273438, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1773.4499753205887, + "~:x1": 649.4500122070312, + "~:y2": 1339.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 664.3500213623047, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 2, + "~:stroke-color": "#d324ee", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 2, + "~:stroke-color": "#0ca6ff", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 2, + "~:stroke-color": "#84ac00", + "~:stroke-opacity": 1 + } + ], + "~:x": 1123.9999631135574, + "~:selrect": { + "~#rect": { + "~:x": 1123.9999631135574, + "~:y": 544.9999732821145, + "~:width": 1313.8100164113944, + "~:height": 1440.0000214576721, + "~:x1": 1123.9999631135574, + "~:y1": 544.9999732821145, + "~:x2": 2437.809979524952, + "~:y2": 1984.9999947397866 + } + }, + "~:flip-x": null, + "~:height": 1440.0000214576721, + "~:flip-y": null + } + } + }, + "~:id": "~ub4cb802d-4245-807d-8006-b4a4b90b79cd", + "~:name": "Page 1", + "~:background": "#e8e9ea" + } + }, + "~:id": "~u44471494-966a-8178-8006-c1b0e4befad3", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + }, + "~:typographies": { + "~:count": 0, + "~:sample": [] + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-text-shadows-and-blurs.json b/frontend/playwright/data/render-wasm/get-file-text-shadows-and-blurs.json new file mode 100644 index 0000000000..06ee07870a --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-text-shadows-and-blurs.json @@ -0,0 +1,4701 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "text_strokes_shadows_opacity_blur", + "~:revn": 333, + "~:modified-at": "~m1757067323203", + "~:vern": 0, + "~:id": "~u15b74473-2908-8094-8006-bdb4fbd2c6a3", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1756805434187", + "~:data": { + "~:pages": [ + "~u15b74473-2908-8094-8006-bdb4fbd2c6a4" + ], + "~:pages-index": { + "~u15b74473-2908-8094-8006-bdb4fbd2c6a4": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~uc469627b-737e-80a7-8006-c19b9bc554c9", + "~uc469627b-737e-80a7-8006-c19b9bc596e8", + "~uc469627b-737e-80a7-8006-c19b9bc596e9", + "~u199bd8a8-1f62-8077-8006-c09980f8a086", + "~u199bd8a8-1f62-8077-8006-c099c4d01fb8", + "~u199bd8a8-1f62-8077-8006-c099e8f3d114", + "~u199bd8a8-1f62-8077-8006-c09980f8a088", + "~u199bd8a8-1f62-8077-8006-c09918f84a1a", + "~u199bd8a8-1f62-8077-8006-c09918f84a1b", + "~u199bd8a8-1f62-8077-8006-c09918f84a1c", + "~u920149f5-9682-80b4-8006-bf004ecf1a26", + "~u920149f5-9682-80b4-8006-bf004ecf48a8", + "~u920149f5-9682-80b4-8006-bf004ecf48a9", + "~ua43799d4-2e7f-80d2-8006-bef061e80cb4", + "~ua43799d4-2e7f-80d2-8006-bef061e80cb5", + "~ua43799d4-2e7f-80d2-8006-bef061e80cb6", + "~ua43799d4-2e7f-80d2-8006-beef9d2c4b42", + "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2d", + "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2e", + "~ud50240ec-f763-80e3-8006-beef3ba2c4b3", + "~ud50240ec-f763-80e3-8006-beef18e3ac34", + "~ud50240ec-f763-80e3-8006-beef3ba2c4b4", + "~ud50240ec-f763-80e3-8006-beef280f5cb6", + "~ud50240ec-f763-80e3-8006-beef3ba2c4b5" + ] + } + }, + "~u199bd8a8-1f62-8077-8006-c09980f8a086": { + "~#shape": { + "~:y": 8340.999804016881, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 662.0000551742614, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297040166, + "~:y": 8340.999804016881 + } + }, + { + "~#point": { + "~:x": -10349.000241865904, + "~:y": 8340.999804016881 + } + }, + { + "~#point": { + "~:x": -10349.000241865904, + "~:y": 8398.999804302288 + } + }, + { + "~#point": { + "~:x": -11011.000297040166, + "~:y": 8398.999804302288 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09980f8a086", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8401.049807068639, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 661.316650390625, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297040166, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 661.316650390625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297040166, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297040166, + "~:y": 8340.999804016881, + "~:width": 662.0000551742614, + "~:height": 58.00000028540671, + "~:x1": -11011.000297040166, + "~:y1": 8340.999804016881, + "~:x2": -10349.000241865904, + "~:y2": 8398.999804302288 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-bef061e80cb6": { + "~#shape": { + "~:y": 8593.000470161438, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + blur + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 839, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999999969, + "~:y": 8593.000470161438 + } + }, + { + "~#point": { + "~:x": -11093.999999999969, + "~:y": 8593.000470161438 + } + }, + { + "~#point": { + "~:x": -11093.999999999969, + "~:y": 8651.000470446845 + } + }, + { + "~#point": { + "~:x": -11932.999999999969, + "~:y": 8651.000470446845 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefd76a79a8", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-bef061e80cb6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8653.300473213196, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 838.7000122070312, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999969, + "~:x1": 0, + "~:y2": 60.30000305175781, + "~:fills": [], + "~:x2": 838.7000122070312, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "inner shadow + no fill + blur + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999969, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999969, + "~:y": 8593.000470161438, + "~:width": 839, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999969, + "~:y1": 8593.000470161438, + "~:x2": -11093.999999999969, + "~:y2": 8651.000470446845 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-bef061e80cb4": { + "~#shape": { + "~:y": 8466.000139590858, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + blur + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 835, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933, + "~:y": 8466.000139590858 + } + }, + { + "~#point": { + "~:x": -11098, + "~:y": 8466.000139590858 + } + }, + { + "~#point": { + "~:x": -11098, + "~:y": 8524.000139859878 + } + }, + { + "~#point": { + "~:x": -11933, + "~:y": 8524.000139859878 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefafd2df5f", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-bef061e80cb4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8526.050142642616, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 834.9833374023438, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11933, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 834.9833374023438, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + no fill + blur + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11933, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11933, + "~:y": 8466.000139590858, + "~:width": 835, + "~:height": 58.00000026901944, + "~:x1": -11933, + "~:y1": 8466.000139590858, + "~:x2": -11098, + "~:y2": 8524.000139859878 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000026901944, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-bef061e80cb5": { + "~#shape": { + "~:y": 8528.999816596508, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + blur + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 858, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999999978, + "~:y": 8528.999816596508 + } + }, + { + "~#point": { + "~:x": -11074.999999999978, + "~:y": 8528.999816596508 + } + }, + { + "~#point": { + "~:x": -11074.999999999978, + "~:y": 8586.999816881915 + } + }, + { + "~#point": { + "~:x": -11932.999999999978, + "~:y": 8586.999816881915 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefd4d05fa5", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-bef061e80cb5", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8589.299819648266, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 857.4666748046875, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999978, + "~:x1": 0, + "~:y2": 60.30000305175781, + "~:fills": [], + "~:x2": 857.4666748046875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "inner shadow + no fill + blur + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999978, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999978, + "~:y": 8528.999816596508, + "~:width": 858, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999978, + "~:y1": 8528.999816596508, + "~:x2": -11074.999999999978, + "~:y2": 8586.999816881915 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2d": { + "~#shape": { + "~:y": 8337.999809026718, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + blur + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 849, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999999978, + "~:y": 8337.999809026718 + } + }, + { + "~#point": { + "~:x": -11083.999999999978, + "~:y": 8337.999809026718 + } + }, + { + "~#point": { + "~:x": -11083.999999999978, + "~:y": 8395.999809312125 + } + }, + { + "~#point": { + "~:x": -11932.999999999978, + "~:y": 8395.999809312125 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefd4d05fa5", + "~:type": "~:layer-blur", + "~:value": 1, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2d", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8398.049812078476, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 848.0499877929688, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999978, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 848.0499877929688, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + blur + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999978, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999978, + "~:y": 8337.999809026718, + "~:width": 849, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999978, + "~:y1": 8337.999809026718, + "~:x2": -11083.999999999978, + "~:y2": 8395.999809312125 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u920149f5-9682-80b4-8006-bf004ecf1a26": { + "~#shape": { + "~:y": 7888.999850913791, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 649, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.00029712164, + "~:y": 7888.999850913791 + } + }, + { + "~#point": { + "~:x": -10362.00029712164, + "~:y": 7888.999850913791 + } + }, + { + "~#point": { + "~:x": -10362.00029712164, + "~:y": 7946.999851199198 + } + }, + { + "~#point": { + "~:x": -11011.00029712164, + "~:y": 7946.999851199198 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u920149f5-9682-80b4-8006-bf004ecf1a26", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 7949.049853965549, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 648.25, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.00029712164, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 648.25, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.00029712164, + "~:shadow": [ + { + "~:color": { + "~:color": "#da0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.00029712164, + "~:y": 7888.999850913791, + "~:width": 649, + "~:height": 58.00000028540671, + "~:x1": -11011.00029712164, + "~:y1": 7888.999850913791, + "~:x2": -10362.00029712164, + "~:y2": 7946.999851199198 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2e": { + "~#shape": { + "~:y": 8402.000462532043, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + blur + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 830, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999999969, + "~:y": 8402.000462532043 + } + }, + { + "~#point": { + "~:x": -11102.999999999969, + "~:y": 8402.000462532043 + } + }, + { + "~#point": { + "~:x": -11102.999999999969, + "~:y": 8460.00046281745 + } + }, + { + "~#point": { + "~:x": -11932.999999999969, + "~:y": 8460.00046281745 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefd76a79a8", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2e", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8462.050465583801, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 829.2833251953125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999969, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 829.2833251953125, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + blur + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999969, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999969, + "~:y": 8402.000462532043, + "~:width": 830, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999969, + "~:y1": 8402.000462532043, + "~:x2": -11102.999999999969, + "~:y2": 8460.00046281745 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u920149f5-9682-80b4-8006-bf004ecf48a9": { + "~#shape": { + "~:y": 8017.999770209102, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 652, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297121609, + "~:y": 8017.999770209102 + } + }, + { + "~#point": { + "~:x": -10359.000297121609, + "~:y": 8017.999770209102 + } + }, + { + "~#point": { + "~:x": -10359.000297121609, + "~:y": 8075.999770494509 + } + }, + { + "~#point": { + "~:x": -11011.000297121609, + "~:y": 8075.999770494509 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u920149f5-9682-80b4-8006-bf004ecf48a9", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8078.04977326086, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 651.8333129882812, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.000297121609, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 651.8333129882812, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297121609, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297121609, + "~:y": 8017.999770209102, + "~:width": 652, + "~:height": 58.00000028540671, + "~:x1": -11011.000297121609, + "~:y1": 8017.999770209102, + "~:x2": -10359.000297121609, + "~:y2": 8075.999770494509 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u920149f5-9682-80b4-8006-bf004ecf48a8": { + "~#shape": { + "~:y": 7954.000052977608, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 671, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297121618, + "~:y": 7954.000052977608 + } + }, + { + "~#point": { + "~:x": -10340.000297121618, + "~:y": 7954.000052977608 + } + }, + { + "~#point": { + "~:x": -10340.000297121618, + "~:y": 8012.000056715959 + } + }, + { + "~#point": { + "~:x": -11011.000297121618, + "~:y": 8012.000056715959 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u920149f5-9682-80b4-8006-bf004ecf48a8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8014.050056029366, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 670.5999755859375, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.000297121618, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 670.5999755859375, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297121618, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297121618, + "~:y": 7954.000052977608, + "~:width": 671, + "~:height": 58.00000373835064, + "~:x1": -11011.000297121618, + "~:y1": 7954.000052977608, + "~:x2": -10340.000297121618, + "~:y2": 8012.000056715959 + } + }, + "~:flip-x": null, + "~:height": 58.00000373835064, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-beef9d2c4b42": { + "~#shape": { + "~:y": 8275.000131964684, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + blur + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 826.0000000000018, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933, + "~:y": 8275.000131964684 + } + }, + { + "~#point": { + "~:x": -11106.999999999998, + "~:y": 8275.000131964684 + } + }, + { + "~#point": { + "~:x": -11106.999999999998, + "~:y": 8333.00013225009 + } + }, + { + "~#point": { + "~:x": -11933, + "~:y": 8333.00013225009 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefafd2df5f", + "~:type": "~:layer-blur", + "~:value": 1, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-beef9d2c4b42", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8335.050135016441, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 825.7000122070312, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11933, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 825.7000122070312, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + blur + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11933, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11933, + "~:y": 8275.000131964684, + "~:width": 826.0000000000018, + "~:height": 58.00000028540671, + "~:x1": -11933, + "~:y1": 8275.000131964684, + "~:x2": -11106.999999999998, + "~:y2": 8333.00013225009 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c09980f8a088": { + "~#shape": { + "~:y": 8405.99951793518, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 643.0000638284164, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297093136, + "~:y": 8405.99951793518 + } + }, + { + "~#point": { + "~:x": -10368.00023326472, + "~:y": 8405.99951793518 + } + }, + { + "~#point": { + "~:x": -10368.00023326472, + "~:y": 8463.999518220588 + } + }, + { + "~#point": { + "~:x": -11011.000297093136, + "~:y": 8463.999518220588 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09980f8a088", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8466.049520986939, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 642.5499877929688, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297093138, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 642.5499877929688, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 0.6611111111111111 + } + ], + "~:x": -11011.000297093138, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297093138, + "~:y": 8405.99951793518, + "~:width": 643.0000638284164, + "~:height": 58.00000028540671, + "~:x1": -11011.000297093138, + "~:y1": 8405.99951793518, + "~:x2": -10368.000233264722, + "~:y2": 8463.999518220588 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~uc469627b-737e-80a7-8006-c19b9bc596e9": { + "~#shape": { + "~:y": 8599.999635622788, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + blur + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 768, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297063973, + "~:y": 8599.999635622788 + } + }, + { + "~#point": { + "~:x": -10243.000297063973, + "~:y": 8599.999635622788 + } + }, + { + "~#point": { + "~:x": -10243.000297063973, + "~:y": 8657.999635908194 + } + }, + { + "~#point": { + "~:x": -11011.000297063973, + "~:y": 8657.999635908194 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~uc469627b-737e-80a7-8006-c19bc34bf392", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~uc469627b-737e-80a7-8006-c19b9bc596e9", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8660.049638674545, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 767.3333129882812, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297063973, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 767.3333129882812, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + blur + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 0.6611111111111111 + } + ], + "~:x": -11011.000297063973, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297063973, + "~:y": 8599.999635622788, + "~:width": 768, + "~:height": 58.00000028540671, + "~:x1": -11011.000297063973, + "~:y1": 8599.999635622788, + "~:x2": -10243.000297063973, + "~:y2": 8657.999635908194 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~uc469627b-737e-80a7-8006-c19b9bc554c9": { + "~#shape": { + "~:y": 8534.999921823697, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + blur + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 787, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.00029706397, + "~:y": 8534.999921823697 + } + }, + { + "~#point": { + "~:x": -10224.00029706397, + "~:y": 8534.999921823697 + } + }, + { + "~#point": { + "~:x": -10224.00029706397, + "~:y": 8592.999922109104 + } + }, + { + "~#point": { + "~:x": -11011.00029706397, + "~:y": 8592.999922109104 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~uc469627b-737e-80a7-8006-c19bc34d410f", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~uc469627b-737e-80a7-8006-c19b9bc554c9", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8595.049924875455, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 786.0999755859375, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.00029706397, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 786.0999755859375, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + blur + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.00029706397, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.00029706397, + "~:y": 8534.999921823697, + "~:width": 787, + "~:height": 58.00000028540671, + "~:x1": -11011.00029706397, + "~:y1": 8534.999921823697, + "~:x2": -10224.00029706397, + "~:y2": 8592.999922109104 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~uc469627b-737e-80a7-8006-c19b9bc596e8": { + "~#shape": { + "~:y": 8471.000207687573, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + blur + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 764, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297023293, + "~:y": 8471.000207687573 + } + }, + { + "~#point": { + "~:x": -10247.000297023293, + "~:y": 8471.000207687573 + } + }, + { + "~#point": { + "~:x": -10247.000297023293, + "~:y": 8529.00020797298 + } + }, + { + "~#point": { + "~:x": -11011.000297023293, + "~:y": 8529.00020797298 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~uc469627b-737e-80a7-8006-c19bc34dee28", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~uc469627b-737e-80a7-8006-c19b9bc596e8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8531.050210739331, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 763.75, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297023293, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 763.75, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + blur + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297023293, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297023293, + "~:y": 8471.000207687573, + "~:width": 764, + "~:height": 58.00000028540671, + "~:x1": -11011.000297023293, + "~:y1": 8471.000207687573, + "~:x2": -10247.000297023293, + "~:y2": 8529.00020797298 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c099e8f3d114": { + "~#shape": { + "~:y": 8277.000090476804, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 639, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297067703, + "~:y": 8277.000090476804 + } + }, + { + "~#point": { + "~:x": -10372.000297067703, + "~:y": 8277.000090476804 + } + }, + { + "~#point": { + "~:x": -10372.000297067703, + "~:y": 8335.00009076221 + } + }, + { + "~#point": { + "~:x": -11011.000297067703, + "~:y": 8335.00009076221 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c099e8f3d114", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8337.050093528562, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 638.9666748046875, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297067703, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 638.9666748046875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297067703, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297067703, + "~:y": 8277.000090476804, + "~:width": 639, + "~:height": 58.00000028540671, + "~:x1": -11011.000297067703, + "~:y1": 8277.000090476804, + "~:x2": -10372.000297067703, + "~:y2": 8335.00009076221 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef3ba2c4b3": { + "~#shape": { + "~:y": 8084.000120898814, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 711, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933.00000005209, + "~:y": 8084.000120898814 + } + }, + { + "~#point": { + "~:x": -11222.00000005209, + "~:y": 8084.000120898814 + } + }, + { + "~#point": { + "~:x": -11222.00000005209, + "~:y": 8142.000121184221 + } + }, + { + "~#point": { + "~:x": -11933.00000005209, + "~:y": 8142.000121184221 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef3ba2c4b3", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8144.050123950572, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 710.2000122070312, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11933.00000005209, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 710.2000122070312, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + no fill + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11933.00000005209, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11933.00000005209, + "~:y": 8084.000120898814, + "~:width": 711, + "~:height": 58.00000028540671, + "~:x1": -11933.00000005209, + "~:y1": 8084.000120898814, + "~:x2": -11222.00000005209, + "~:y2": 8142.000121184221 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef3ba2c4b4": { + "~#shape": { + "~:y": 8147.999797905316, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 733, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999098394, + "~:y": 8147.999797905316 + } + }, + { + "~#point": { + "~:x": -11199.999999098394, + "~:y": 8147.999797905316 + } + }, + { + "~#point": { + "~:x": -11199.999999098394, + "~:y": 8205.999801643668 + } + }, + { + "~#point": { + "~:x": -11932.999999098394, + "~:y": 8205.999801643668 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef3ba2c4b4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8208.049800957073, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 732.5499877929688, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999098394, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 732.5499877929688, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + no fill + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999098394, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999098394, + "~:y": 8147.999797905316, + "~:width": 733, + "~:height": 58.00000373835155, + "~:x1": -11932.999999098394, + "~:y1": 8147.999797905316, + "~:x2": -11199.999999098394, + "~:y2": 8205.999801643668 + } + }, + "~:flip-x": null, + "~:height": 58.00000373835155, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef18e3ac34": { + "~#shape": { + "~:y": 7956.999790430069, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 724.0000642528557, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933, + "~:y": 7956.999790430069 + } + }, + { + "~#point": { + "~:x": -11208.999935747144, + "~:y": 7956.999790430069 + } + }, + { + "~#point": { + "~:x": -11208.999935747144, + "~:y": 8014.999790715476 + } + }, + { + "~#point": { + "~:x": -11933, + "~:y": 8014.999790715476 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef18e3ac34", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8017.049793481827, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 723.2666625976562, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999998, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 723.2666625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999998, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999998, + "~:y": 7956.999790430069, + "~:width": 724.0000642528557, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999998, + "~:y1": 7956.999790430069, + "~:x2": -11208.999935747142, + "~:y2": 8014.999790715476 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef3ba2c4b5": { + "~#shape": { + "~:y": 8211.000454923244, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 714, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999098385, + "~:y": 8211.000454923244 + } + }, + { + "~#point": { + "~:x": -11218.999999098385, + "~:y": 8211.000454923244 + } + }, + { + "~#point": { + "~:x": -11218.999999098385, + "~:y": 8269.00045520865 + } + }, + { + "~#point": { + "~:x": -11932.999999098385, + "~:y": 8269.00045520865 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef3ba2c4b5", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8271.050457975001, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 713.7833251953125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999098385, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 713.7833251953125, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + no fill + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999098385, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999098385, + "~:y": 8211.000454923244, + "~:width": 714, + "~:height": 58.00000028540671, + "~:x1": -11932.999999098385, + "~:y1": 8211.000454923244, + "~:x2": -11218.999999098385, + "~:y2": 8269.00045520865 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef280f5cb6": { + "~#shape": { + "~:y": 8019.999955674739, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 705.0000649508474, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999098385, + "~:y": 8019.999955674739 + } + }, + { + "~#point": { + "~:x": -11227.999934147538, + "~:y": 8019.999955674739 + } + }, + { + "~#point": { + "~:x": -11227.999934147538, + "~:y": 8077.999955960146 + } + }, + { + "~#point": { + "~:x": -11932.999999098385, + "~:y": 8077.999955960146 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef280f5cb6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8080.049958726497, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 704.5, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999098385, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 704.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 0.6611111111111111 + } + ], + "~:x": -11932.999999098385, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999098385, + "~:y": 8019.999955674739, + "~:width": 705.0000649508474, + "~:height": 58.00000028540671, + "~:x1": -11932.999999098385, + "~:y1": 8019.999955674739, + "~:x2": -11227.999934147538, + "~:y2": 8077.999955960146 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c09918f84a1c": { + "~#shape": { + "~:y": 8212.000376701355, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + blur + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 776.9999690055847, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297005885, + "~:y": 8212.000376701355 + } + }, + { + "~#point": { + "~:x": -10234.0003280003, + "~:y": 8212.000376701355 + } + }, + { + "~#point": { + "~:x": -10234.0003280003, + "~:y": 8270.000376986762 + } + }, + { + "~#point": { + "~:x": -11011.000297005885, + "~:y": 8270.000376986762 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u199bd8a8-1f62-8077-8006-c0991e7a9433", + "~:type": "~:layer-blur", + "~:value": 2, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09918f84a1c", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8272.050379753113, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 776.61669921875, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.000297005885, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 776.61669921875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + blur + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297005885, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297005885, + "~:y": 8212.000376701355, + "~:width": 776.9999690055847, + "~:height": 58.00000028540671, + "~:x1": -11011.000297005885, + "~:y1": 8212.000376701355, + "~:x2": -10234.0003280003, + "~:y2": 8270.000376986762 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c09918f84a1a": { + "~#shape": { + "~:y": 8082.999973101323, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + blur + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 774.0000381469727, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.00029706955, + "~:y": 8082.999973101323 + } + }, + { + "~#point": { + "~:x": -10237.000258922577, + "~:y": 8082.999973101323 + } + }, + { + "~#point": { + "~:x": -10237.000258922577, + "~:y": 8140.99997338673 + } + }, + { + "~#point": { + "~:x": -11011.00029706955, + "~:y": 8140.99997338673 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u199bd8a8-1f62-8077-8006-c0991e78ddd1", + "~:type": "~:layer-blur", + "~:value": 2, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09918f84a1a", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8143.049976153081, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 773.0333251953125, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.00029706955, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 773.0333251953125, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + blur + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.00029706955, + "~:shadow": [ + { + "~:color": { + "~:color": "#da0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.00029706955, + "~:y": 8082.999973101323, + "~:width": 774.0000381469727, + "~:height": 58.00000028540671, + "~:x1": -11011.00029706955, + "~:y1": 8082.999973101323, + "~:x2": -10237.000258922577, + "~:y2": 8140.99997338673 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c09918f84a1b": { + "~#shape": { + "~:y": 8148.000173137, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + blur + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 795.9999673366547, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.00029707068, + "~:y": 8148.000173136999 + } + }, + { + "~#point": { + "~:x": -10215.000329734024, + "~:y": 8148.000173136999 + } + }, + { + "~#point": { + "~:x": -10215.000329734024, + "~:y": 8206.000176871226 + } + }, + { + "~#point": { + "~:x": -11011.00029707068, + "~:y": 8206.000176871226 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u199bd8a8-1f62-8077-8006-c0991e79c1d7", + "~:type": "~:layer-blur", + "~:value": 2, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09918f84a1b", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8208.050176188757, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 795.38330078125, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.00029707068, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 795.38330078125, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + blur + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.00029707068, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.00029707068, + "~:y": 8148.000173137, + "~:width": 795.9999673366547, + "~:height": 58.000003734226084, + "~:x1": -11011.00029707068, + "~:y1": 8148.000173137, + "~:x2": -10215.000329734024, + "~:y2": 8206.000176871226 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.000003734226084, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c099c4d01fb8": { + "~#shape": { + "~:y": 7893.000113364988, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 701.0000560127901, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933.000132173522, + "~:y": 7893.000113364988 + } + }, + { + "~#point": { + "~:x": -11232.000076160732, + "~:y": 7893.000113364988 + } + }, + { + "~#point": { + "~:x": -11232.000076160732, + "~:y": 7951.000113650394 + } + }, + { + "~#point": { + "~:x": -11933.000132173522, + "~:y": 7951.000113650394 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c099c4d01fb8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 7953.050116416745, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 700.9166870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11933.000132173522, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 700.9166870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11933.000132173522, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11933.000132173522, + "~:y": 7893.000113364988, + "~:width": 701.0000560127901, + "~:height": 58.00000028540671, + "~:x1": -11933.000132173522, + "~:y1": 7893.000113364988, + "~:x2": -11232.000076160732, + "~:y2": 7951.000113650394 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + } + }, + "~:id": "~u15b74473-2908-8094-8006-bdb4fbd2c6a4", + "~:name": "Page 1" + } + }, + "~:id": "~u15b74473-2908-8094-8006-bdb4fbd2c6a3", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-text-shadows-combination.json b/frontend/playwright/data/render-wasm/get-file-text-shadows-combination.json new file mode 100644 index 0000000000..6214ef93cb --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-text-shadows-combination.json @@ -0,0 +1,905 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "New File 2", + "~:revn": 401, + "~:modified-at": "~m1757076417573", + "~:vern": 0, + "~:id": "~u15b74473-2908-8094-8006-bc90c3982c73", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1756728830560", + "~:data": { + "~:pages": [ + "~u15b74473-2908-8094-8006-bc90c3982c74" + ], + "~:pages-index": { + "~u15b74473-2908-8094-8006-bc90c3982c74": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~u88db2850-996a-804f-8006-c063323d68a4", + "~uf94516f3-2d43-80b3-8006-c1b5c96d7dae", + "~uf94516f3-2d43-80b3-8006-c1b60a252bcf" + ] + } + }, + "~u88db2850-996a-804f-8006-c063323d68a4": { + "~#shape": { + "~:y": -865.0000046417117, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:last-resize-direction": "~:horizontal", + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "23svy7uenp6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "shadows with multiple strokes and no fill" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "sourcesanspro", + "~:key": "e92bgu67k4", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 506.1299901710943, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -251.00000411998855, + "~:y": -865.0000046417117 + } + }, + { + "~#point": { + "~:x": 255.12998605110573, + "~:y": -865.0000046417117 + } + }, + { + "~#point": { + "~:x": 255.12998605110573, + "~:y": -749.0000040708983 + } + }, + { + "~#point": { + "~:x": -251.00000411998855, + "~:y": -749.0000040708983 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u88db2850-996a-804f-8006-c063323d68a4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": -804.7000015899539, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 464.2166748046875, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -230.05000717174636, + "~:x1": 20.949996948242188, + "~:y2": 60.30000305175781, + "~:fills": [], + "~:x2": 485.1666717529297, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "shadows with multiple " + } + }, + { + "~#rect": { + "~:y": -747.1000107452273, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 354.3333435058594, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -175.10001022350417, + "~:x1": 75.89999389648438, + "~:y2": 117.89999389648438, + "~:fills": [], + "~:x2": 430.23333740234375, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "strokes and no fill" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#00ff11", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#ff00b1", + "~:stroke-opacity": 1 + } + ], + "~:x": -251.00000411998855, + "~:shadow": [ + { + "~:color": { + "~:color": "#7750e1", + "~:opacity": 0.4722222222222222 + }, + "~:spread": 0, + "~:offset-y": 10, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b5b7323de5", + "~:offset-x": 10 + }, + { + "~:color": { + "~:color": "#559fe1", + "~:opacity": 0.7333333333333333 + }, + "~:spread": 0, + "~:offset-y": -10, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u427eca67-5b7f-80e6-8006-c0a7398ff4b4", + "~:offset-x": -10 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -251.00000411998855, + "~:y": -865.0000046417117, + "~:width": 506.1299901710943, + "~:height": 116.00000057081343, + "~:x1": -251.00000411998855, + "~:y1": -865.0000046417117, + "~:x2": 255.12998605110573, + "~:y2": -749.0000040708983 + } + }, + "~:flip-x": null, + "~:height": 116.00000057081343, + "~:flip-y": null + } + }, + "~uf94516f3-2d43-80b3-8006-c1b5c96d7dae": { + "~#shape": { + "~:y": -723.9999884292483, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:last-resize-direction": "~:horizontal", + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "23svy7uenp6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#214ccd", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "shadows with multiple strokes and solid fill" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "sourcesanspro", + "~:key": "e92bgu67k4", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#214ccd", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 609.1300277709961, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -303.0000086630885, + "~:y": -723.9999884292483 + } + }, + { + "~#point": { + "~:x": 306.1300191079076, + "~:y": -723.9999884292483 + } + }, + { + "~#point": { + "~:x": 306.1300191079076, + "~:y": -607.9999878584349 + } + }, + { + "~#point": { + "~:x": -303.0000086630885, + "~:y": -607.9999878584349 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b5c96d7dae", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": -663.6999853774905, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 464.2166748046875, + "~:text-decoration": "rgb(33, 76, 205)", + "~:letter-spacing": "normal", + "~:x": -230.55001171484633, + "~:x1": 72.44999694824219, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#214ccd", + "~:fill-opacity": 1 + } + ], + "~:x2": 536.6666717529297, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "shadows with multiple " + } + }, + { + "~#rect": { + "~:y": -606.099994532764, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 398.8500061035156, + "~:text-decoration": "rgb(33, 76, 205)", + "~:letter-spacing": "normal", + "~:x": -197.8666773642604, + "~:x1": 105.13333129882812, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#214ccd", + "~:fill-opacity": 1 + } + ], + "~:x2": 503.98333740234375, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "strokes and solid fill" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#00ff11", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 3, + "~:stroke-color": "#ff00b1", + "~:stroke-opacity": 1 + } + ], + "~:x": -303.0000086630885, + "~:shadow": [ + { + "~:color": { + "~:color": "#7750e1", + "~:opacity": 0.4722222222222222 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b5b7323de5", + "~:offset-x": 4 + }, + { + "~:color": { + "~:color": "#559fe1", + "~:opacity": 0.7333333333333333 + }, + "~:spread": 0, + "~:offset-y": -4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u427eca67-5b7f-80e6-8006-c0a7398ff4b4", + "~:offset-x": -4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -303.0000086630885, + "~:y": -723.9999884292483, + "~:width": 609.1300277709961, + "~:height": 116.00000057081343, + "~:x1": -303.0000086630885, + "~:y1": -723.9999884292483, + "~:x2": 306.1300191079076, + "~:y2": -607.9999878584349 + } + }, + "~:flip-x": null, + "~:height": 116.00000057081343, + "~:flip-y": null + } + }, + "~uf94516f3-2d43-80b3-8006-c1b60a252bcf": { + "~#shape": { + "~:y": -581.9999718032777, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "23svy7uenp6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#ff7700", + "~:fill-opacity": 0.38333333333333336 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "shadows with multiple strokes and transparent fill" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "sourcesanspro", + "~:key": "e92bgu67k4", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#ff7700", + "~:fill-opacity": 0.38333333333333336 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 753.1299834251404, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -374.99998553834683, + "~:y": -581.9999718032777 + } + }, + { + "~#point": { + "~:x": 378.1299978867936, + "~:y": -581.9999718032777 + } + }, + { + "~#point": { + "~:x": 378.1299978867936, + "~:y": -523.999971517871 + } + }, + { + "~#point": { + "~:x": -374.99998553834683, + "~:y": -523.999971517871 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b60a252bcf", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": -521.6999687515199, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 706.3333740234375, + "~:text-decoration": "rgba(255, 119, 0, 0.383)", + "~:letter-spacing": "normal", + "~:x": -351.5999916418624, + "~:x1": 23.399993896484375, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#ff7700", + "~:fill-opacity": 0.38333333333333336 + } + ], + "~:x2": 729.7333679199219, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "shadows with multiple strokes and " + } + }, + { + "~#rect": { + "~:y": -464.09997790679336, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 295.48333740234375, + "~:text-decoration": "rgba(255, 119, 0, 0.383)", + "~:letter-spacing": "normal", + "~:x": -146.18331988893272, + "~:x1": 228.81666564941406, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#ff7700", + "~:fill-opacity": 0.38333333333333336 + } + ], + "~:x2": 524.3000030517578, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "transparent fill" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 3, + "~:stroke-color": "#ff00b0", + "~:stroke-opacity": 0.37222222222222223 + } + ], + "~:x": -374.9999855383468, + "~:shadow": [ + { + "~:color": { + "~:color": "#00fb08", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b5b7323de5", + "~:offset-x": 4 + }, + { + "~:color": { + "~:color": "#559fe1", + "~:opacity": 0.7333333333333333 + }, + "~:spread": 0, + "~:offset-y": -4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u427eca67-5b7f-80e6-8006-c0a7398ff4b4", + "~:offset-x": -4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -374.9999855383468, + "~:y": -581.9999718032777, + "~:width": 753.1299834251404, + "~:height": 58.00000028540671, + "~:x1": -374.9999855383468, + "~:y1": -581.9999718032777, + "~:x2": 378.1299978867936, + "~:y2": -523.999971517871 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + } + }, + "~:id": "~u15b74473-2908-8094-8006-bc90c3982c74", + "~:name": "Page 1" + } + }, + "~:id": "~u15b74473-2908-8094-8006-bc90c3982c73", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-text-shadows-order.json b/frontend/playwright/data/render-wasm/get-file-text-shadows-order.json new file mode 100644 index 0000000000..d5933c9689 --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-text-shadows-order.json @@ -0,0 +1,130 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "test_shadows_order", + "~:revn": 13, + "~:modified-at": "~m1759415785228", + "~:vern": 0, + "~:id": "~u48ffa82f-6950-81b5-8006-e49a2a39657f", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes", + "0011-fix-invalid-text-touched-flags", + "0012-fix-position-data" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1759415649509", + "~:data": { + "~:pages": [ + "~u48ffa82f-6950-81b5-8006-e49a2a396580" + ], + "~:pages-index": { + "~u48ffa82f-6950-81b5-8006-e49a2a396580": { + "~:objects": { + "~#penpot/objects-map/v2": { + "~u00000000-0000-0000-0000-000000000000": "[\"~#shape\",[\"^ \",\"~:y\",0,\"~:hide-fill-on-export\",false,\"~:transform\",[\"~#matrix\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:rotation\",0,\"~:name\",\"Root Frame\",\"~:width\",0.01,\"~:type\",\"~:frame\",\"~:points\",[[\"~#point\",[\"^ \",\"~:x\",0.0,\"~:y\",0.0]],[\"^:\",[\"^ \",\"~:x\",0.01,\"~:y\",0.0]],[\"^:\",[\"^ \",\"~:x\",0.01,\"~:y\",0.01]],[\"^:\",[\"^ \",\"~:x\",0.0,\"~:y\",0.01]]],\"~:r2\",0,\"~:proportion-lock\",false,\"~:transform-inverse\",[\"^3\",[\"^ \",\"~:a\",1.0,\"~:b\",0.0,\"~:c\",0.0,\"~:d\",1.0,\"~:e\",0.0,\"~:f\",0.0]],\"~:r3\",0,\"~:r1\",0,\"~:id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:parent-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:frame-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:strokes\",[],\"~:x\",0,\"~:proportion\",1.0,\"~:r4\",0,\"~:selrect\",[\"~#rect\",[\"^ \",\"~:x\",0,\"~:y\",0,\"^6\",0.01,\"~:height\",0.01,\"~:x1\",0,\"~:y1\",0,\"~:x2\",0.01,\"~:y2\",0.01]],\"~:fills\",[[\"^ \",\"~:fill-color\",\"#FFFFFF\",\"~:fill-opacity\",1]],\"~:flip-x\",null,\"^H\",0.01,\"~:flip-y\",null,\"~:shapes\",[\"~uae1a2ead-2994-80a4-8006-e49a2b880688\",\"~uae1a2ead-2994-80a4-8006-e49a3c230916\"]]]", + "~uae1a2ead-2994-80a4-8006-e49a2b880688": "[\"~#shape\",[\"^ \",\"~:y\",483.4820356242563,\"~:transform\",[\"~#matrix\",[\"^ \",\"~:a\",0.9788217705787964,\"~:b\",0.20471429222452875,\"~:c\",-0.20471415002509374,\"~:d\",0.9788218003188844,\"~:e\",0.0,\"~:f\",-9.094947017729282E-13]],\"~:rotation\",11.812776963021975,\"~:last-resize-direction\",\"horizontal\",\"~:grow-type\",\"~:fixed\",\"~:content\",[\"^ \",\"~:type\",\"root\",\"~:key\",\"1e7hxl490w2\",\"~:children\",[[\"^ \",\"^8\",\"paragraph-set\",\"^:\",[[\"^ \",\"~:line-height\",\"1.2\",\"~:font-style\",\"normal\",\"^:\",[[\"^ \",\"^;\",\"\",\"^<\",\"normal\",\"~:text-transform\",\"uppercase\",\"~:font-id\",\"gfont-seymour-one\",\"^9\",\"1q0daub9a4o\",\"~:font-size\",\"72\",\"~:font-weight\",\"400\",\"~:font-variant-id\",\"regular\",\"~:text-decoration\",\"none\",\"~:letter-spacing\",\"-10\",\"~:fills\",[[\"^ \",\"~:fill-color\",\"#80ffdb\",\"~:fill-opacity\",1]],\"~:font-family\",\"Seymour One\",\"~:text\",\"hello world\"]],\"^=\",\"uppercase\",\"~:text-align\",\"center\",\"^>\",\"gfont-seymour-one\",\"^9\",\"1njiv0webbj\",\"^?\",\"0\",\"^@\",\"400\",\"~:text-direction\",\"ltr\",\"^8\",\"paragraph\",\"^A\",\"regular\",\"^B\",\"none\",\"^C\",\"-10\",\"^D\",[[\"^ \",\"^E\",\"#80ffdb\",\"^F\",1]],\"^G\",\"Seymour One\"]]]],\"~:vertical-align\",\"top\"],\"~:hide-in-viewer\",false,\"~:name\",\"Text\",\"~:width\",696.7786469812631,\"^8\",\"^H\",\"~:points\",[[\"~#point\",[\"^ \",\"~:x\",642.8707961222883,\"~:y\",415.00002146255576]],[\"^P\",[\"^ \",\"~:x\",1324.8929050619865,\"~:y\",557.6405690164898]],[\"^P\",[\"^ \",\"~:x\",1270.0221499044503,\"~:y\",820.0000167712013]],[\"^P\",[\"^ \",\"~:x\",588.0000409647498,\"~:y\",677.359469217266]]],\"~:layout-item-h-sizing\",\"~:fix\",\"~:transform-inverse\",[\"^2\",[\"^ \",\"~:a\",0.9788218003188955,\"~:b\",-0.20471429222453108,\"~:c\",0.20471415002509608,\"~:d\",0.9788217705788075,\"~:e\",1.8618643482577324E-13,\"~:f\",8.902332143214221E-13]],\"~:page-id\",\"~uca00b4e9-7831-806e-8006-e483daa11f18\",\"~:layout-item-v-sizing\",\"^R\",\"~:id\",\"~uae1a2ead-2994-80a4-8006-e49a2b880688\",\"~:parent-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:position-data\",[[\"~#rect\",[\"^ \",\"~:y\",550.8231760071114,\"^<\",\"normal\",\"^=\",\"uppercase\",\"^?\",\"72px\",\"^@\",\"400\",\"~:y1\",-2.3000030517578125,\"^N\",339.1499938964844,\"^B\",\"none\",\"^C\",\"-10px\",\"~:x\",689.2688958782501,\"~:x1\",69.91667175292969,\"~:y2\",88.69999694824219,\"^D\",[[\"^ \",\"^E\",\"#80ffdb\",\"^F\",1]],\"~:x2\",409.06666564941406,\"~:direction\",\"ltr\",\"^G\",\"\\\"Seymour One\\\"\",\"~:height\",91,\"^H\",\"hello \"]],[\"^Y\",[\"^ \",\"~:y\",637.2231851623849,\"^<\",\"normal\",\"^=\",\"uppercase\",\"^?\",\"72px\",\"^@\",\"400\",\"^Z\",84.10000610351562,\"^N\",380.4666748046875,\"^B\",\"none\",\"^C\",\"-10px\",\"~:x\",668.6188867229766,\"^[\",49.26666259765625,\"^10\",175.10000610351562,\"^D\",[[\"^ \",\"^E\",\"#80ffdb\",\"^F\",1]],\"^11\",429.73333740234375,\"^12\",\"ltr\",\"^G\",\"\\\"Seymour One\\\"\",\"^13\",91,\"^H\",\"world\"]]],\"~:frame-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:strokes\",[],\"~:x\",608.0571495227366,\"~:shadow\",[[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e488b9656709\",\"~:style\",\"~:drop-shadow\",\"~:color\",[\"^ \",\"~:opacity\",1,\"^19\",\"#64dfdf\"],\"~:offset-x\",4,\"~:offset-y\",4,\"~:blur\",0,\"~:spread\",0,\"~:hidden\",false],[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e4890c135b3b\",\"^17\",\"^18\",\"^19\",[\"^ \",\"^1:\",1,\"^19\",\"#56cfe1\"],\"^1;\",6,\"^1<\",8,\"^1=\",0,\"^1>\",0,\"^1?\",false],[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e4894e9ec462\",\"^17\",\"^18\",\"^19\",[\"^ \",\"^1:\",1,\"^19\",\"#5390d9\"],\"^1;\",4,\"^1<\",12,\"^1=\",0,\"^1>\",0,\"^1?\",false],[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e4898979e7f9\",\"^17\",\"^18\",\"^19\",[\"^ \",\"^1:\",1,\"^19\",\"#5e60ce\"],\"^1;\",2,\"^1<\",16,\"^1=\",0,\"^1>\",0,\"^1?\",false],[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e489ba59dbd0\",\"^17\",\"^18\",\"^19\",[\"^ \",\"^1:\",1,\"^19\",\"#6930c3\"],\"^1;\",0,\"^1<\",20,\"^1=\",0,\"^1>\",0,\"^1?\",false]],\"~:selrect\",[\"^Y\",[\"^ \",\"~:x\",608.0571495227366,\"~:y\",483.4820356242563,\"^N\",696.7786469812631,\"^13\",268.03596698524456,\"^[\",608.0571495227366,\"^Z\",483.4820356242563,\"^11\",1304.8357965039997,\"^10\",751.5180026095009]],\"^D\",[],\"~:flip-x\",null,\"^13\",268.03596698524456,\"~:flip-y\",null]]", + "~uae1a2ead-2994-80a4-8006-e49a3c230916": "[\"~#shape\",[\"^ \",\"~:y\",574.6013159890737,\"~:transform\",[\"~#matrix\",[\"^ \",\"~:a\",0.8985240774403216,\"~:b\",-0.4389242329377807,\"~:c\",0.4389243127700668,\"~:d\",0.8985240384426714,\"~:e\",-2.5011104298755527E-12,\"~:f\",1.1937117960769683E-12]],\"~:rotation\",333.964740304884,\"~:last-resize-direction\",\"horizontal\",\"~:grow-type\",\"~:auto-height\",\"~:content\",[\"^ \",\"~:type\",\"root\",\"~:key\",\"1e7hxl490w2\",\"~:children\",[[\"^ \",\"^8\",\"paragraph-set\",\"^:\",[[\"^ \",\"~:line-height\",\"1.2\",\"~:font-style\",\"normal\",\"^:\",[[\"^ \",\"^;\",\"\",\"^<\",\"normal\",\"~:text-transform\",\"uppercase\",\"~:font-id\",\"gfont-seymour-one\",\"^9\",\"1q0daub9a4o\",\"~:font-size\",\"72\",\"~:font-weight\",\"400\",\"~:font-variant-id\",\"regular\",\"~:text-decoration\",\"none\",\"~:letter-spacing\",\"-10\",\"~:fills\",[[\"^ \",\"~:fill-color\",\"#80ffdb\",\"~:fill-opacity\",1]],\"~:font-family\",\"Seymour One\",\"~:text\",\"hello world\"]],\"^=\",\"uppercase\",\"~:text-align\",\"center\",\"^>\",\"gfont-seymour-one\",\"^9\",\"1njiv0webbj\",\"^?\",\"0\",\"^@\",\"400\",\"~:text-direction\",\"ltr\",\"^8\",\"paragraph\",\"^A\",\"regular\",\"^B\",\"none\",\"^C\",\"-10\",\"^D\",[[\"^ \",\"^E\",\"#80ffdb\",\"^F\",1]],\"^G\",\"Seymour One\"]]]],\"~:vertical-align\",\"top\"],\"~:hide-in-viewer\",false,\"~:name\",\"Text\",\"~:width\",697.0002208799245,\"^8\",\"^H\",\"~:points\",[[\"~#point\",[\"^ \",\"~:x\",186.99991883808582,\"~:y\",731.9301311484297]],[\"^P\",[\"^ \",\"~:x\",813.2711110149318,\"~:y\",425.9999446754641]],[\"^P\",[\"^ \",\"~:x\",851.0186650659188,\"~:y\",503.27315214029437]],[\"^P\",[\"^ \",\"~:x\",224.74747288907042,\"~:y\",809.2033386132608]]],\"~:layout-item-h-sizing\",\"~:fix\",\"~:transform-inverse\",[\"^2\",[\"^ \",\"~:a\",0.8985240384426737,\"~:b\",0.4389242329377818,\"~:c\",-0.43892431277006794,\"~:d\",0.8985240774403239,\"~:e\",2.77125697378148E-12,\"~:f\",2.5219186626122624E-14]],\"~:page-id\",\"~uca00b4e9-7831-806e-8006-e483daa11f18\",\"~:layout-item-v-sizing\",\"^R\",\"~:id\",\"~uae1a2ead-2994-80a4-8006-e49a3c230916\",\"~:parent-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:position-data\",[[\"~#rect\",[\"^ \",\"~:y\",632.821684222062,\"^<\",\"normal\",\"^=\",\"uppercase\",\"^?\",\"72px\",\"^@\",\"400\",\"~:y1\",-2.3000030517578125,\"^N\",339.1499938964844,\"^B\",\"none\",\"^C\",\"-10px\",\"~:x\",291.2682359356231,\"~:x1\",69.91667175292969,\"~:y2\",88.69999694824219,\"^D\",[[\"^ \",\"^E\",\"#80ffdb\",\"^F\",1]],\"~:x2\",409.06666564941406,\"~:direction\",\"ltr\",\"^G\",\"\\\"Seymour One\\\"\",\"~:height\",91,\"^H\",\"hello \"]],[\"^Y\",[\"^ \",\"~:y\",719.2216933773354,\"^<\",\"normal\",\"^=\",\"uppercase\",\"^?\",\"72px\",\"^@\",\"400\",\"^Z\",84.10000610351562,\"^N\",380.4666748046875,\"^B\",\"none\",\"^C\",\"-10px\",\"~:x\",270.6182267803497,\"^[\",49.26666259765625,\"^10\",175.10000610351562,\"^D\",[[\"^ \",\"^E\",\"#80ffdb\",\"^F\",1]],\"^11\",429.73333740234375,\"^12\",\"ltr\",\"^G\",\"\\\"Seymour One\\\"\",\"^13\",91,\"^H\",\"world\"]]],\"~:frame-id\",\"~u00000000-0000-0000-0000-000000000000\",\"~:strokes\",[],\"~:x\",170.50918151203996,\"~:shadow\",[[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e488b9656709\",\"~:style\",\"~:inner-shadow\",\"~:color\",[\"^ \",\"~:opacity\",1,\"^19\",\"#64dfdf\"],\"~:offset-x\",8,\"~:offset-y\",12,\"~:blur\",0,\"~:spread\",0,\"~:hidden\",false],[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e4890c135b3b\",\"^17\",\"^18\",\"^19\",[\"^ \",\"^1:\",1,\"^19\",\"#56cfe1\"],\"^1;\",6,\"^1<\",10,\"^1=\",0,\"^1>\",0,\"^1?\",false],[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e4894e9ec462\",\"^17\",\"^18\",\"^19\",[\"^ \",\"^1:\",1,\"^19\",\"#5390d9\"],\"^1;\",4,\"^1<\",12,\"^1=\",0,\"^1>\",0,\"^1?\",false],[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e4898979e7f9\",\"^17\",\"^18\",\"^19\",[\"^ \",\"^1:\",1,\"^19\",\"#5e60ce\"],\"^1;\",4,\"^1<\",8,\"^1=\",0,\"^1>\",0,\"^1?\",false],[\"^ \",\"^V\",\"~u68cfab5e-652d-8097-8006-e489ba59dbd0\",\"^17\",\"^18\",\"^19\",[\"^ \",\"^1:\",1,\"^19\",\"#6930c3\"],\"^1;\",4,\"^1<\",4,\"^1=\",0,\"^1>\",0,\"^1?\",false]],\"~:selrect\",[\"^Y\",[\"^ \",\"~:x\",170.50918151203996,\"~:y\",574.6013159890737,\"^N\",697.0002208799245,\"^13\",86.00065131057738,\"^[\",170.50918151203996,\"^Z\",574.6013159890737,\"^11\",867.5094023919645,\"^10\",660.601967299651]],\"^D\",[],\"~:flip-x\",null,\"^13\",86.00065131057738,\"~:flip-y\",null]]" + } + }, + "~:id": "~u48ffa82f-6950-81b5-8006-e49a2a396580", + "~:name": "Page 1" + } + }, + "~:id": "~u48ffa82f-6950-81b5-8006-e49a2a39657f", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-subpath-stroke-shadow.json b/frontend/playwright/data/render-wasm/get-subpath-stroke-shadow.json new file mode 100644 index 0000000000..fe83df6227 --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-subpath-stroke-shadow.json @@ -0,0 +1,567 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "small_closed_path", + "~:revn": 25, + "~:modified-at": "~m1758717395171", + "~:vern": 0, + "~:id": "~u3f7c3cc4-556d-80fa-8006-da2505231c2b", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes", + "0011-fix-invalid-text-touched-flags" + ] + }, + "~:version": 67, + "~:project-id": "~uf084c276-e46f-8168-8006-ce89321fde44", + "~:created-at": "~m1758713852044", + "~:data": { + "~:pages": [ + "~u3f7c3cc4-556d-80fa-8006-da2505231c2c" + ], + "~:pages-index": { + "~u3f7c3cc4-556d-80fa-8006-da2505231c2c": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~ue758a369-49fb-801a-8006-da250da25b70" + ] + } + }, + "~ue758a369-49fb-801a-8006-da250da25b70": { + "~#shape": { + "~:y": 289.0000254924257, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "test", + "~:width": 1269.396990548183, + "~:type": "~:group", + "~:svg-attrs": { + "~:width": "36.938", + "~:height": "39.605" + }, + "~:points": [ + { + "~#point": { + "~:x": 15.99999664735742, + "~:y": 289.0000254924257 + } + }, + { + "~#point": { + "~:x": 1285.3969871955405, + "~:y": 289.0000254924257 + } + }, + { + "~#point": { + "~:x": 1285.3969871955405, + "~:y": 1473.2282874172934 + } + }, + { + "~#point": { + "~:x": 15.99999664735742, + "~:y": 1473.2282874172934 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~ue758a369-49fb-801a-8006-da250da25b70", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 15.99999664735742, + "~:proportion": 1, + "~:selrect": { + "~#rect": { + "~:x": 15.99999664735742, + "~:y": 289.0000254924257, + "~:width": 1269.396990548183, + "~:height": 1184.2282619248676, + "~:x1": 15.99999664735742, + "~:y1": 289.0000254924257, + "~:x2": 1285.3969871955405, + "~:y2": 1473.2282874172934 + } + }, + "~:fills": [], + "~:flip-x": false, + "~:height": 1184.2282619248676, + "~:flip-y": false, + "~:shapes": [ + "~ue758a369-49fb-801a-8006-da250da460cc", + "~ue758a369-49fb-801a-8006-da250da8073d" + ] + } + }, + "~ue758a369-49fb-801a-8006-da250da460cc": { + "~#shape": { + "~:y": 289.00001521099387, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "base-background", + "~:width": 1269.3871566880562, + "~:type": "~:rect", + "~:svg-attrs": { + "~:fill": "none", + "~:id": "base-background" + }, + "~:points": [ + { + "~#point": { + "~:x": 15.99999664735742, + "~:y": 289.000015210994 + } + }, + { + "~#point": { + "~:x": 1285.3871533354136, + "~:y": 289.000015210994 + } + }, + { + "~#point": { + "~:x": 1285.3871533354136, + "~:y": 1473.2279626015984 + } + }, + { + "~#point": { + "~:x": 15.99999664735742, + "~:y": 1473.2279626015984 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:hidden": true, + "~:id": "~ue758a369-49fb-801a-8006-da250da460cc", + "~:parent-id": "~ue758a369-49fb-801a-8006-da250da25b70", + "~:svg-viewbox": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 9.773, + "~:height": 10.479, + "~:x1": 0, + "~:y1": 0, + "~:x2": 9.773, + "~:y2": 10.479 + } + }, + "~:svg-defs": {}, + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 10, + "~:stroke-color": "#cd0e8f", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 10, + "~:stroke-color": "#0c31e0", + "~:stroke-opacity": 1 + } + ], + "~:x": 15.99999664735742, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 15.99999664735742, + "~:y": 289.00001521099387, + "~:width": 1269.3871566880562, + "~:height": 1184.2279473906046, + "~:x1": 15.99999664735742, + "~:y1": 289.00001521099387, + "~:x2": 1285.3871533354136, + "~:y2": 1473.2279626015984 + } + }, + "~:fills": [ + { + "~:fill-color": "#5dde7f", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 1184.2279473906046, + "~:flip-y": null + } + }, + "~ue758a369-49fb-801a-8006-da250da8073d": { + "~#shape": { + "~:y": null, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:content": { + "~#penpot/path-data": "~bAQAAAAAAAAAAAAAAAAAAAAAAAADjUdRDEjSzRAMAAACCMVxDcLSoRNAmHELOeoxEwOGYQedsaEQDAAAAoJ8sQdsdVERgfotBn4tMRKCcckIpujJEAwAAAEISE0MUMv5DcbaDQ/I0qkMFm6tDvp6XQwMAAABdgM5DUnmIQ0vk80MGbZFDZuQNRK4ns0MDAAAANqYnRLiG3kNs9i9ERsH6Q8p4LUR7ng9EAwAAABz6KkSnEx5EdDksRLdzH0Rkn1FECwFGRAMAAABgLHtEn/9vRA3pgETb0HREhkKKRNvQdEQDAAAAosOXRNvQdERoGaZEFjGTRO+dnkSKhJ1EAwAAAFd2mkTiXqNErPB0RDjLsERkn1FEZGi0RAMAAABALSBEar65RJg/B0ROZrlE41HUQxI0s0QCAAAAAAAAAAAAAAAAAAAAAAAAAONR1EMSNLNEAQAAAAAAAAAAAAAAAAAAAAAAAAD2l1tEbOauRAMAAABXFIBEHEGqRNi5lkRWaZ9En4CbRP7emEQDAAAA/9OeRJSRlETvnZ5EKLWTRCnXmUS49otEAwAAALI6lESAU4JEYIGLRBXidkSzJIdEbft5RAMAAADUr4VEGQN7RGgogkQ1q3pEPn5+RBtCeEQDAAAAfBx0RNvQdES+/iVE5GYoRL7+JUTnhCFEAwAAAL7+JUS3cx9ETlQkRFC7HUSu1iFEULsdRAMAAAAIVx9EULsdRJSuHURZORhEuhgeRD+vEUQDAAAAzIMeRCSjBUTMgx5EJKMFRK7WIUTllQ5EAwAAAHi+JEQciRdEmCglRNnYFkSqkiVE4XQKRAMAAAC+/iVE3CD8Q+SqIkSyzPFDZuQNRAqQykMDAAAApW/iQwwtlEOhA8xDyluPQ91Io0Os6LVDAwAAAMeKhENEI9JDtmEgQ7YPE0RcLrVC9fQ5RAMAAACQc1FCJUxPRKAbMEJ551dEkHNRQktkZ0QDAAAAxOWTQvJQh0Rmem5DUiqiRFVXykPAqaxEAwAAAGBqBkTSRLVELH8jROTItUT2l1tEbOauRAIAAAAAAAAAAAAAAAAAAAAAAAAA9pdbRGzmrkQBAAAAAAAAAAAAAAAAAAAAAAAAAL0W7kMIK41EAwAAACtP2UMgvIREbTT8Q9HyeETA4BJE53x/RAMAAAA+cBxECKOBRJSuHURkq4JEXNkcRJ7diEQDAAAABpsbROiTj0SqXBpE+BeQRLxmC0RGnJBEAwAAAN3e/UNWIJFEu471QyhEkES9Fu5DCCuNRAIAAAAAAAAAAAAAAAAAAAAAAAAAvRbuQwgrjUQBAAAAAAAAAAAAAAAAAAAAAAAAAEj0FERKaopEAwAAAGQcGUQkLYhEZBwZRKLMhkRI9BREILyERAMAAABQeg1E4pqARPTABET2HoFEB7P+Q4DEhUQDAAAA7WT2Q57diEQlN/dD7hGKRMwtAERqcotEAwAAAPJ8CEQar41EwiQPRGaDjURI9BREDGqKRAIAAAAAAAAAAAAAAAAAAAAAAAAASPQURAxqikQBAAAAAAAAAAAAAAAAAAAAAAAAACaTRUSBtGZEAwAAAJgoJUQBYkdElK4dRC9mPUSUrh1EKboyRAMAAACUrh1EoTgtRBjDH0QhmS5EPusjRPgzN0QDAAAA0LopRCnoQkTecFdEv8hzROBlZkTLdH5EAwAAAPaOakTUxoBEGPhqRAijgUQqpGdEJvuBRAMAAACKJmVEJvuBRHTHVUQV4nZEJpNFRIG0ZkQCAAAAAAAAAAAAAAAAAAAAAAAAACaTRUSBtGZEAQAAAAAAAAAAAAAAAAAAAAAAAADNKtBDiFsHRAMAAADt1cxDzEoFRFN+zkMNeQBEp33TQ5gQ+kMDAAAAxc3bQ65L7EPFzdtDrkvsQwWi3EOYEPpDAwAAAAWi3EMNeQBEN8vgQw46A0SDxOVDDjoDRAMAAADfwepDDjoDRE9s7EPMSgVEmevpQ4hbB0QDAAAApW/iQ+PUC0RzztZD49QLRM0q0EOIWwdEAgAAAAAAAAAAAAAAAAAAAAAAAADNKtBDiFsHRAEAAAAAAAAAAAAAAAAAAAAAAAAAN/LkQ7BO90MDAAAAN/LkQ2598kNNGelDsszxQ70W7kPs3fNDAwAAAOU78kOwTvdD7WT2Q5gQ+kPtZPZD3CD8QwMAAADtZPZDFDL+Q+U78kPg4f5DvRbuQ+Dh/kMDAAAATRnpQ+Dh/kM38uRD3CD8Qzfy5EOiT/dDAgAAAAAAAAAAAAAAAAAAAAAAAAA38uRDok/3QwEAAAAAAAAAAAAAAAAAAAAAAAAATr0JRPxU2EMCAAAAAAAAAAAAAAAAAAAAAAAAADzYAUSWbsZDAgAAAAAAAAAAAAAAAAAAAAAAAAC8ZgtETuPUQwMAAAA6zBBEQibdQ0j0FERoueRDSPQURPQY5kMDAAAASPQURPia60NyoRFEennnQ069CUT8VNhDAgAAAAAAAAAAAAAAAAAAAAAAAABOvQlE/FTYQw==" + }, + "~:name": "svg-path", + "~:width": null, + "~:type": "~:path", + "~:svg-attrs": { + "~:style": { + "~:strokeWidth": "0.296442" + } + }, + "~:points": [ + { + "~#point": { + "~:x": 16.000007651096666, + "~:y": 289.0000106633722 + } + }, + { + "~#point": { + "~:x": 1285.3965909402777, + "~:y": 289.0000106633722 + } + }, + { + "~#point": { + "~:x": 1285.3965909402777, + "~:y": 1473.196270402294 + } + }, + { + "~#point": { + "~:x": 16.000007651096666, + "~:y": 1473.196270402294 + } + } + ], + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:svg-transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": -83.989157, + "~:f": -73.223098 + } + }, + "~:id": "~ue758a369-49fb-801a-8006-da250da8073d", + "~:parent-id": "~ue758a369-49fb-801a-8006-da250da25b70", + "~:svg-viewbox": { + "~#rect": { + "~:x": 0.000003135483506132297, + "~:y": -0.0000027832518292754405, + "~:width": 9.773072575314877, + "~:height": 10.478719602207821, + "~:x1": 0.000003135483506132297, + "~:y1": -0.0000027832518292754405, + "~:x2": 9.773075710798384, + "~:y2": 10.478716818955991 + } + }, + "~:svg-defs": {}, + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 10, + "~:stroke-color": "#cd0e8f", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 10, + "~:stroke-color": "#0c31e0", + "~:stroke-opacity": 1 + } + ], + "~:x": null, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u055fbfc6-9f69-80cb-8006-da327c4b1584", + "~:offset-x": 20 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 16.00000765109678, + "~:y": 289.0000106633721, + "~:width": 1269.3965832891809, + "~:height": 1184.196259738922, + "~:x1": 16.00000765109678, + "~:y1": 289.0000106633721, + "~:x2": 1285.3965909402777, + "~:y2": 1473.196270402294 + } + }, + "~:fills": [ + { + "~:fill-color": "#5dde7f", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": null, + "~:flip-y": null + } + } + }, + "~:id": "~u3f7c3cc4-556d-80fa-8006-da2505231c2c", + "~:name": "Page 1" + } + }, + "~:id": "~u3f7c3cc4-556d-80fa-8006-da2505231c2b", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/workspace/get-file-typography-tokens.json b/frontend/playwright/data/workspace/get-file-typography-tokens.json index 35ed171867..8e3497af70 100644 --- a/frontend/playwright/data/workspace/get-file-typography-tokens.json +++ b/frontend/playwright/data/workspace/get-file-typography-tokens.json @@ -92,6 +92,7 @@ "~:font-family": ["42dot Sans"], "~:font-size": "100", "~:font-weight": "300", + "~:line-height": "2", "~:letter-spacing": "2", "~:text-case": "uppercase", "~:text-decoration": "underline" diff --git a/frontend/playwright/ui/pages/DashboardPage.js b/frontend/playwright/ui/pages/DashboardPage.js index f297218d3e..5967d0e74e 100644 --- a/frontend/playwright/ui/pages/DashboardPage.js +++ b/frontend/playwright/ui/pages/DashboardPage.js @@ -288,6 +288,14 @@ export class DashboardPage extends BaseWebSocketPage { ); await expect(this.mainHeading).toHaveText("Libraries"); } + + async openProfileMenu() { + await this.userAccount.click(); + } + + async clickProfileMenuItem(menuSection) { + await this.sidebarMenu.getByText(menuSection).click(); + } } export default DashboardPage; diff --git a/frontend/playwright/ui/render-wasm-specs/shapes.spec.js b/frontend/playwright/ui/render-wasm-specs/shapes.spec.js index a2717632b4..c7b8810d22 100644 --- a/frontend/playwright/ui/render-wasm-specs/shapes.spec.js +++ b/frontend/playwright/ui/render-wasm-specs/shapes.spec.js @@ -179,3 +179,35 @@ test("Renders a file with blurs applied to any kind of shape", async ({ await expect(workspace.canvas).toHaveScreenshot(); }); + +test("Renders a file with shadows applied to any kind of shape", async ({ + page, +}) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile("render-wasm/get-file-shadows.json"); + + await workspace.goToWorkspace({ + id: "9502081a-e1a4-80bc-8006-c2b968723199", + pageId: "9502081a-e1a4-80bc-8006-c2b96872319a", + }); + await workspace.waitForFirstRender(); + + await expect(workspace.canvas).toHaveScreenshot(); +}); + +test("Renders a file with a closed path shape with multiple segments using strokes and shadow", async ({ + page, +}) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile("render-wasm/get-subpath-stroke-shadow.json"); + + await workspace.goToWorkspace({ + id: "3f7c3cc4-556d-80fa-8006-da2505231c2b", + pageId: "3f7c3cc4-556d-80fa-8006-da2505231c2c", + }); + await workspace.waitForFirstRender(); + + await expect(workspace.canvas).toHaveScreenshot(); +}); diff --git a/frontend/playwright/ui/render-wasm-specs/shapes.spec.js-snapshots/Renders-a-file-with-a-closed-path-shape-with-multiple-segments-using-strokes-and-shadow-1.png b/frontend/playwright/ui/render-wasm-specs/shapes.spec.js-snapshots/Renders-a-file-with-a-closed-path-shape-with-multiple-segments-using-strokes-and-shadow-1.png new file mode 100644 index 0000000000..e57814f403 Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/shapes.spec.js-snapshots/Renders-a-file-with-a-closed-path-shape-with-multiple-segments-using-strokes-and-shadow-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/shapes.spec.js-snapshots/Renders-a-file-with-shadows-applied-to-any-kind-of-shape-1.png b/frontend/playwright/ui/render-wasm-specs/shapes.spec.js-snapshots/Renders-a-file-with-shadows-applied-to-any-kind-of-shape-1.png new file mode 100644 index 0000000000..b0e6c72e8d Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/shapes.spec.js-snapshots/Renders-a-file-with-shadows-applied-to-any-kind-of-shape-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js b/frontend/playwright/ui/render-wasm-specs/texts.spec.js index f7fcb4b754..7b6dc9aec8 100644 --- a/frontend/playwright/ui/render-wasm-specs/texts.spec.js +++ b/frontend/playwright/ui/render-wasm-specs/texts.spec.js @@ -227,6 +227,96 @@ test("Renders a file with multiple emoji", async ({ page }) => { await expect(workspace.canvas).toHaveScreenshot(); }); +test("Renders a file with multiple text shadows, strokes, and blur combinations", async ({ + page, +}) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + + await workspace.mockGetFile( + "render-wasm/get-file-text-shadows-and-blurs.json", + ); + + await workspace.goToWorkspace({ + id: "15b74473-2908-8094-8006-bdb4fbd2c6a3", + pageId: "15b74473-2908-8094-8006-bdb4fbd2c6a4", + }); + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + +test("Renders a file with different text leaves decoration", async ({ + page, +}) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile( + "render-wasm/get-file-text-leaves-decoration.json", + ); + + await workspace.goToWorkspace({ + id: "15b74473-2908-8094-8006-bdb4fbd2c6a3", + pageId: "15b74473-2908-8094-8006-bdb4fbd2c6a4", + }); + + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + +test("Renders a file with different text shadows combinations", async ({ + page, +}) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile( + "render-wasm/get-file-text-shadows-combination.json", + ); + + await workspace.goToWorkspace({ + id: "15b74473-2908-8094-8006-bdb4fbd2c6a3", + pageId: "15b74473-2908-8094-8006-bc90c3982c74", + }); + + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + +test("Renders a file with multiple text shadows in order", async ({ + page, +}) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile( + "render-wasm/get-file-text-shadows-order.json", + ); + + await workspace.goToWorkspace({ + id: "48ffa82f-6950-81b5-8006-e49a2a39657f", + pageId: "48ffa82f-6950-81b5-8006-e49a2a396580", + }); + + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + +test("Renders a file with text in frames and different strokes, shadows, and blurs", async ({ + page, +}) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile( + "render-wasm/get-file-frame-clipping-shadows-and-texts.json", + ); + + await workspace.goToWorkspace({ + id: "44471494-966a-8178-8006-c5bd93f0fe72", + pageId: "44471494-966a-8178-8006-c5bd93f0fe73", + }); + + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + test("Renders a file with texts with different alignments", async ({ page, }) => { diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-leaves-decoration-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-leaves-decoration-1.png new file mode 100644 index 0000000000..d519d9afab Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-leaves-decoration-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-shadows-combinations-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-shadows-combinations-1.png new file mode 100644 index 0000000000..ff8b34555d Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-shadows-combinations-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-emoji-and-text-decoration-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-emoji-and-text-decoration-1.png index 3fbabb451d..bde8aa497e 100644 Binary files a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-emoji-and-text-decoration-1.png and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-emoji-and-text-decoration-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-in-order-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-in-order-1.png new file mode 100644 index 0000000000..103e1f87f7 Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-in-order-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-strokes-and-blur-combinations-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-strokes-and-blur-combinations-1.png new file mode 100644 index 0000000000..6475826679 Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-strokes-and-blur-combinations-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-styled-texts-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-styled-texts-1.png index 0fc974b205..d4f7241ea5 100644 Binary files a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-styled-texts-1.png and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-styled-texts-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-text-in-frames-and-different-strokes-shadows-and-blurs-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-text-in-frames-and-different-strokes-shadows-and-blurs-1.png new file mode 100644 index 0000000000..75d9405c45 Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-text-in-frames-and-different-strokes-shadows-and-blurs-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-texts-with-images-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-texts-with-images-1.png index 565b69d0bf..767cc7a0ed 100644 Binary files a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-texts-with-images-1.png and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-texts-with-images-1.png differ diff --git a/frontend/playwright/ui/specs/colorpicker.spec.js b/frontend/playwright/ui/specs/colorpicker.spec.js index db2e3ccdfe..78244f0e63 100644 --- a/frontend/playwright/ui/specs/colorpicker.spec.js +++ b/frontend/playwright/ui/specs/colorpicker.spec.js @@ -93,7 +93,9 @@ test("Create a LINEAR gradient", async ({ page }) => { await expect(inputOpacityGlobal).toHaveValue("50"); await expect(inputOpacityGlobal).toBeVisible(); - await expect(workspacePage.page.getByText("Linear gradient")).toBeVisible(); + await expect( + workspacePage.page.getByText("Linear gradient").nth(1), + ).toBeVisible(); }); test("Create a RADIAL gradient", async ({ page }) => { @@ -175,12 +177,14 @@ test("Create a RADIAL gradient", async ({ page }) => { await expect(inputOpacityGlobal).toHaveValue("50"); await expect(inputOpacityGlobal).toBeVisible(); - await expect(workspacePage.page.getByText("Radial gradient")).toBeVisible(); + await expect( + workspacePage.page.getByText("Radial gradient").nth(1), + ).toBeVisible(); }); test("Gradient stops limit", async ({ page }) => { const workspacePage = new WorkspacePage(page); - await workspacePage.mockConfigFlags(["enable-frontend-binary-fills"]); + await workspacePage.mockConfigFlags(["enable-feature-render-wasm"]); await workspacePage.setupEmptyFile(page); await workspacePage.mockRPC( diff --git a/frontend/playwright/ui/specs/dashboard-teams.spec.js b/frontend/playwright/ui/specs/dashboard-teams.spec.js new file mode 100644 index 0000000000..8a95cf8e12 --- /dev/null +++ b/frontend/playwright/ui/specs/dashboard-teams.spec.js @@ -0,0 +1,31 @@ +import { test, expect } from "@playwright/test"; +import DashboardPage from "../pages/DashboardPage"; + +test.beforeEach(async ({ page }) => { + await DashboardPage.init(page); + await DashboardPage.mockRPC( + page, + "get-profile", + "logged-in-user/get-profile-logged-in-no-onboarding.json", + ); +}); + +test("BUG 12359 - Selected invitations count is not pluralized", async ({ + page, +}) => { + const dashboardPage = new DashboardPage(page); + await dashboardPage.setupDashboardFull(); + await dashboardPage.setupTeamInvitations(); + + await dashboardPage.goToSecondTeamInvitationsSection(); + + await expect(page.getByText("test1@mail.com")).toBeVisible(); + + // NOTE: we cannot use check() or getByLabel() because the checkbox + // is hidden inside the label. + await page.getByText("test1@mail.com").click(); + await expect(page.getByText("1 invitation selected")).toBeVisible(); + + await page.getByText("test2@mail.com").check(); + await expect(page.getByText("2 invitations selected")).toBeVisible(); +}); diff --git a/frontend/playwright/ui/specs/design-tab.spec.js b/frontend/playwright/ui/specs/design-tab.spec.js index 1774b4f9b3..293c438ee7 100644 --- a/frontend/playwright/ui/specs/design-tab.spec.js +++ b/frontend/playwright/ui/specs/design-tab.spec.js @@ -71,7 +71,7 @@ test.describe("Shape attributes", () => { page, }) => { const workspace = new WorkspacePage(page); - await workspace.mockConfigFlags(["enable-frontend-binary-fills"]); + await workspace.mockConfigFlags(["enable-feature-render-wasm"]); await workspace.setupEmptyFile(); await workspace.mockRPC(/get\-file\?/, "design/get-file-fills-limit.json"); @@ -251,3 +251,87 @@ test("BUG 11177 - Font size input not showing 'mixed' when needed", async ({ await expect(fontSizeInput).toHaveValue(""); await expect(fontSizeInput).toHaveAttribute("placeholder", "Mixed"); }); + +test("BUG 12287 Fix identical text fills not being added/removed", async ({ + page, +}) => { + const workspace = new WorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockRPC(/get\-file\?/, "design/get-file-12287.json"); + + await workspace.goToWorkspace({ + fileId: "4bdef584-e28a-8155-8006-f3f8a71b382e", + pageId: "4bdef584-e28a-8155-8006-f3f8a71b382f", + }); + + await workspace.clickLeafLayer("Lorem ipsum"); + + const addFillButton = workspace.page.getByRole("button", { + name: "Add fill", + }); + + await addFillButton.click(); + await addFillButton.click(); + await addFillButton.click(); + await addFillButton.click(); + + await expect( + workspace.page.getByRole("button", { name: "#B1B2B5" }), + ).toHaveCount(4); + + await workspace.page + .getByRole("button", { name: "Remove color" }) + .first() + .click(); + + await expect( + workspace.page.getByRole("button", { name: "#B1B2B5" }), + ).toHaveCount(3); +}); + +test("BUG 12384 - Export crashing when exporting a board", async ({ page }) => { + const workspace = new WorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockRPC(/get\-file\?/, "design/get-file-12384.json"); + + let hasExportRequestBeenIntercepted = false; + await workspace.page.route("**/api/export", (route) => { + if (hasExportRequestBeenIntercepted) { + route.continue(); + return; + } + + hasExportRequestBeenIntercepted = true; + const payload = route.request().postData(); + const parsedPayload = JSON.parse(payload); + + expect(parsedPayload["~:exports"]).toHaveLength(1); + expect(parsedPayload["~:exports"][0]["~:file-id"]).toBe( + "~ufa6ce865-34dd-80ac-8006-fe0dab5539a7", + ); + expect(parsedPayload["~:exports"][0]["~:page-id"]).toBe( + "~ufa6ce865-34dd-80ac-8006-fe0dab5539a8", + ); + + route.fulfill({ + status: 200, + contentType: "application/json", + response: {}, + }); + }); + + await workspace.goToWorkspace({ + fileId: "fa6ce865-34dd-80ac-8006-fe0dab5539a7", + pageId: "fa6ce865-34dd-80ac-8006-fe0dab5539a8", + }); + + await workspace.clickLeafLayer("Board"); + + let exportRequest = workspace.page.waitForRequest("**/api/export"); + + await workspace.rightSidebar + .getByRole("button", { name: "Export 1 element" }) + .click(); + + await exportRequest; +}); diff --git a/frontend/playwright/ui/specs/profile-menu.spec.js b/frontend/playwright/ui/specs/profile-menu.spec.js new file mode 100644 index 0000000000..fdb35e28e6 --- /dev/null +++ b/frontend/playwright/ui/specs/profile-menu.spec.js @@ -0,0 +1,43 @@ +import { test, expect } from "@playwright/test"; +import DashboardPage from "../pages/DashboardPage"; + +test.beforeEach(async ({ page }) => { + await DashboardPage.init(page); + await DashboardPage.mockRPC( + page, + "get-profile", + "logged-in-user/get-profile-logged-in-no-onboarding.json", + ); +}); + +test("Navigate to penpot changelog from profile menu", async ({ page }) => { + const dashboardPage = new DashboardPage(page); + await dashboardPage.goToDashboard(); + + await dashboardPage.openProfileMenu(); + await dashboardPage.clickProfileMenuItem("About Penpot"); + + // Listen for the new page (tab) that opens when clicking "Penpot Changelog" + const [newPage] = await Promise.all([ + page.context().waitForEvent("page"), + dashboardPage.clickProfileMenuItem("Penpot Changelog"), + ]); + + await newPage.waitForLoadState(); + await expect(newPage).toHaveURL( + "https://github.com/penpot/penpot/blob/develop/CHANGES.md", + ); +}); + +test("Opens release notes from current version from profile menu", async ({ + page, +}) => { + const dashboardPage = new DashboardPage(page); + await dashboardPage.goToDashboard(); + + await dashboardPage.openProfileMenu(); + await dashboardPage.clickProfileMenuItem("About Penpot"); + await expect(page.getByText("Version 0.0.0 notes")).toBeVisible(); + await dashboardPage.clickProfileMenuItem("Version"); + await expect(page.getByText("new in penpot?")).toBeVisible(); +}); diff --git a/frontend/playwright/ui/specs/render-wasm.spec.js b/frontend/playwright/ui/specs/render-wasm.spec.js index abf8fae464..df33f19566 100644 --- a/frontend/playwright/ui/specs/render-wasm.spec.js +++ b/frontend/playwright/ui/specs/render-wasm.spec.js @@ -1,18 +1,12 @@ import { test, expect } from "@playwright/test"; -import { WorkspacePage } from "../pages/WorkspacePage"; -import { BaseWebSocketPage } from "../pages/BaseWebSocketPage"; +import { WasmWorkspacePage } from "../pages/WasmWorkspacePage"; test.beforeEach(async ({ page }) => { - await WorkspacePage.init(page); - await BaseWebSocketPage.mockRPC( - page, - "get-teams", - "get-teams-render-wasm.json", - ); + await WasmWorkspacePage.init(page); }); test("BUG 10867 - Crash when loading comments", async ({ page }) => { - const workspacePage = new WorkspacePage(page); + const workspacePage = new WasmWorkspacePage(page); await workspacePage.setupEmptyFile(); await workspacePage.goToWorkspace(); @@ -21,3 +15,45 @@ test("BUG 10867 - Crash when loading comments", async ({ page }) => { workspacePage.rightSidebar.getByText("Show all comments"), ).toBeVisible(); }); + +test("BUG 12164 - Crash when trying to fetch a missing font", async ({ + page, +}) => { + // mock fetching a missing font + // FIXME: this is very hacky. I suspect something might be going on with + // beicon, fetch or http/send and the way we handle requests failures that + // make Plawyright stop execution of the JS thread immediately. + await page.addInitScript(() => { + // Override fetch specifically for the failing font route + const originalFetch = window.fetch; + window.fetch = (url, options) => { + if (url.includes("/internal/gfonts/font/crimsonpro")) { + console.log("Intercepting font request:", url); + // Return a rejected promise that we handle + return Promise.reject(new Error("Font not found (mocked)")); + } + return originalFetch.call(window, url, options); + }; + }); + + const workspacePage = new WasmWorkspacePage(page); + await workspacePage.setupEmptyFile(); + await workspacePage.mockGetFile("render-wasm/get-file-12164.json"); + // FIXME: remove this once we fix the issue of downloading emoji fonts that are + // not needed. + await workspacePage.mockGoogleFont( + "noto", + "render-wasm/assets/notosansjpsubset.ttf", + ); + + await workspacePage.goToWorkspace({ + id: "2b7f0188-51a1-8193-8006-e05bad874e2e", + pageId: "2b7f0188-51a1-8193-8006-e05bad87b74d", + }); + + await workspacePage.waitForFirstRender({ hideUI: false }); + + await expect( + workspacePage.page.getByText("Internal Error"), + ).not.toBeVisible(); +}); diff --git a/frontend/playwright/ui/specs/tokens.spec.js b/frontend/playwright/ui/specs/tokens.spec.js index e1d707268f..668d47e207 100644 --- a/frontend/playwright/ui/specs/tokens.spec.js +++ b/frontend/playwright/ui/specs/tokens.spec.js @@ -46,7 +46,7 @@ const setupTokensFile = async (page, options = {}) => { } = options; const workspacePage = new WorkspacePage(page); - if (flags.length) { + if (flags.length > 0) { await workspacePage.mockConfigFlags(flags); } @@ -95,6 +95,24 @@ const setupTypographyTokensFile = async (page, options = {}) => { }); }; +const checkInputFieldWithError = async (tokenThemeUpdateCreateModal, inputLocator) => { + await expect(inputLocator).toHaveAttribute("aria-invalid", "true"); + + const errorMessageId = await inputLocator.getAttribute("aria-describedby"); + await expect( + tokenThemeUpdateCreateModal.locator(`#${errorMessageId}`), + ).toBeVisible(); +}; + +const checkInputFieldWithoutError = async (tokenThemeUpdateCreateModal, inputLocator) => { + expect( + await inputLocator.getAttribute("aria-invalid") + ).toBeNull(); + expect( + await inputLocator.getAttribute("aria-describedby") + ).toBeNull(); +}; + test.describe("Tokens: Tokens Tab", () => { test("Clicking tokens tab button opens tokens sidebar tab", async ({ page, @@ -174,7 +192,7 @@ test.describe("Tokens: Tokens Tab", () => { ).toBeEnabled(); // Tokens tab panel should have two tokens with the color red / #ff0000 - await expect(tokensTabPanel.getByTitle("#ff0000")).toHaveCount(2); + await expect(tokensTabPanel.getByRole("button", {name: "#ff0000"})).toHaveCount(2); // Global set has been auto created and is active await expect( @@ -806,18 +824,25 @@ test.describe("Tokens: Themes modal", () => { }) .click(); - await tokenThemeUpdateCreateModal - .getByLabel("Group") - .fill("New Group name"); - await tokenThemeUpdateCreateModal - .getByLabel("Theme") - .fill("New Theme name"); + const groupInput = tokenThemeUpdateCreateModal.getByLabel("Group"); + const nameInput = tokenThemeUpdateCreateModal.getByLabel("Theme"); + const saveButton = tokenThemeUpdateCreateModal.getByRole("button", { + name: "Save theme", + }); + + await groupInput.fill("Core"); // Invalid because "Core / Light" theme already exists + await nameInput.fill("Light"); - await tokenThemeUpdateCreateModal - .getByRole("button", { - name: "Save theme", - }) - .click(); + await checkInputFieldWithError(tokenThemeUpdateCreateModal, nameInput); + await expect(saveButton).toBeDisabled(); + + await groupInput.fill("New Group name"); + await nameInput.fill("New Theme name"); + + await checkInputFieldWithoutError(tokenThemeUpdateCreateModal, nameInput); + await expect(saveButton).not.toBeDisabled(); + + await saveButton.click(); await expect( tokenThemeUpdateCreateModal.getByText("New Theme name"), @@ -845,12 +870,36 @@ test.describe("Tokens: Themes modal", () => { .first() .click(); - await tokenThemeUpdateCreateModal - .getByLabel("Theme") - .fill("Changed Theme name"); - await tokenThemeUpdateCreateModal - .getByLabel("Group") - .fill("Changed Group name"); + const groupInput = tokenThemeUpdateCreateModal.getByLabel("Group"); + const nameInput = tokenThemeUpdateCreateModal.getByLabel("Theme"); + const saveButton = tokenThemeUpdateCreateModal.getByRole("button", { + name: "Save theme", + }); + + await groupInput.fill("Core"); // Invalid because "Core / Dark" theme already exists + await nameInput.fill("Dark"); + + await checkInputFieldWithError(tokenThemeUpdateCreateModal, nameInput); + await expect(saveButton).toBeDisabled(); + + await groupInput.fill("Core"); // Valid because "Core / Light" theme already exists + await nameInput.fill("Light"); // but it's the same theme we are editing + + await checkInputFieldWithoutError(tokenThemeUpdateCreateModal, nameInput); + await expect(saveButton).not.toBeDisabled(); + + await nameInput.fill("Changed Theme name"); // New names should be also valid + await groupInput.fill("Changed Group name"); + + await checkInputFieldWithoutError(tokenThemeUpdateCreateModal, nameInput); + await expect(saveButton).not.toBeDisabled(); + + expect( + await nameInput.getAttribute("aria-invalid") + ).toBeNull(); + expect( + await nameInput.getAttribute("aria-describedby") + ).toBeNull(); const checkboxes = await tokenThemeUpdateCreateModal .locator('[role="checkbox"]') @@ -864,11 +913,15 @@ test.describe("Tokens: Themes modal", () => { } } - await tokenThemeUpdateCreateModal - .getByRole("button", { - name: "Save theme", - }) - .click(); + const firstButton = await tokenThemeUpdateCreateModal + .getByTestId('tokens-set-item') + .first(); + + await firstButton.click(); + + await expect(saveButton).not.toBeDisabled(); + + await saveButton.click(); await expect( tokenThemeUpdateCreateModal.getByText("Changed Theme name"), @@ -879,7 +932,10 @@ test.describe("Tokens: Themes modal", () => { }); test.describe("Tokens: Apply token", () => { - test("User applies color token to a shape", async ({ page }) => { + // When deleting the "enable-token-color" flag, permanently remove this test. + test("User applies color token to a shape without tokens on design-tab", async ({ + page, + }) => { const { workspacePage, tokensSidebar, tokenContextMenuForToken } = await setupTokensFile(page); @@ -909,6 +965,35 @@ test.describe("Tokens: Themes modal", () => { await expect(inputColor).toHaveValue("000000"); }); + test("User applies color token to a shape", async ({ page }) => { + const { workspacePage, tokensSidebar, tokenContextMenuForToken } = + await setupTokensFile(page, { flags: ["enable-token-color"] }); + + await page.getByRole("tab", { name: "Layers" }).click(); + + await workspacePage.layers + .getByTestId("layer-row") + .filter({ hasText: "Button" }) + .click(); + + const tokensTabButton = page.getByRole("tab", { name: "Tokens" }); + await tokensTabButton.click(); + + await tokensSidebar + .getByRole("button") + .filter({ hasText: "Color" }) + .click(); + + await tokensSidebar + .getByRole("button", { name: "colors.black" }) + .click({ button: "right" }); + await tokenContextMenuForToken.getByText("Fill").click(); + + await expect( + workspacePage.page.getByLabel("Name: colors.black"), + ).toBeVisible(); + }); + test("User applies typography token to a text shape", async ({ page }) => { const { workspacePage, tokensSidebar, tokenContextMenuForToken } = await setupTypographyTokensFile(page); @@ -960,6 +1045,12 @@ test.describe("Tokens: Themes modal", () => { name: /save/i, }); + // Fill font-family to verify to verify that input value doesn't get split into list of characters + const fontFamilyField = tokensUpdateCreateModal + .getByLabel("Font family") + .first(); + await fontFamilyField.fill("OneWord"); + // Invalidate incorrect values for font size const fontSizeField = tokensUpdateCreateModal.getByLabel(/Font Size/i); await fontSizeField.fill("invalid"); @@ -968,14 +1059,149 @@ test.describe("Tokens: Themes modal", () => { ).toBeVisible(); await expect(saveButton).toBeDisabled(); - // Allow empty fields + // Show error with line-height depending on invalid font-size await fontSizeField.fill(""); + await expect(saveButton).toBeDisabled(); + + // Fill in values for all fields and verify they persist when switching tabs + await fontSizeField.fill("16"); + + const fontWeightField = + tokensUpdateCreateModal.getByLabel(/Font Weight/i); + const letterSpacingField = + tokensUpdateCreateModal.getByLabel(/Letter Spacing/i); + const lineHeightField = + tokensUpdateCreateModal.getByLabel(/Line Height/i); + const textCaseField = tokensUpdateCreateModal.getByLabel(/Text Case/i); + const textDecorationField = + tokensUpdateCreateModal.getByLabel(/Text Decoration/i); + + // Capture all values before switching tabs + const originalValues = { + fontSize: await fontSizeField.inputValue(), + fontFamily: await fontFamilyField.inputValue(), + fontWeight: await fontWeightField.inputValue(), + letterSpacing: await letterSpacingField.inputValue(), + lineHeight: await lineHeightField.inputValue(), + textCase: await textCaseField.inputValue(), + textDecoration: await textDecorationField.inputValue(), + }; + + // Switch to reference tab and back to composite tab + const referenceTabButton = + tokensUpdateCreateModal.getByTestId("reference-opt"); + await referenceTabButton.click(); + + // Empty reference tab should be disabled + await expect(saveButton).toBeDisabled(); + + const compositeTabButton = + tokensUpdateCreateModal.getByTestId("composite-opt"); + await compositeTabButton.click(); + + // Filled composite tab should be enabled await expect(saveButton).toBeEnabled(); + // Verify all values are preserved after switching tabs + await expect(fontSizeField).toHaveValue(originalValues.fontSize); + await expect(fontFamilyField).toHaveValue(originalValues.fontFamily); + await expect(fontWeightField).toHaveValue(originalValues.fontWeight); + await expect(letterSpacingField).toHaveValue( + originalValues.letterSpacing, + ); + await expect(lineHeightField).toHaveValue(originalValues.lineHeight); + await expect(textCaseField).toHaveValue(originalValues.textCase); + await expect(textDecorationField).toHaveValue( + originalValues.textDecoration, + ); + await saveButton.click(); // Modal should close, token should be visible (with new name) in sidebar await expect(tokensUpdateCreateModal).not.toBeVisible(); }); + + test("User cant submit empty typography token or reference", async ({ + page, + }) => { + const { tokensUpdateCreateModal, tokenThemesSetsSidebar, tokensSidebar } = + await setupTypographyTokensFile(page); + + const tokensTabPanel = page.getByRole("tabpanel", { name: "tokens" }); + await tokensTabPanel + .getByRole("button", { name: "Add Token: Typography" }) + .click(); + + await expect(tokensUpdateCreateModal).toBeVisible(); + + const nameField = tokensUpdateCreateModal.getByLabel("Name"); + await nameField.fill("typography.empty"); + + const valueField = tokensUpdateCreateModal.getByLabel("Font Size"); + + // Insert a value and then delete it + await valueField.fill("1"); + await valueField.fill(""); + + // Submit button should be disabled when field is empty + const submitButton = tokensUpdateCreateModal.getByRole("button", { + name: "Save", + }); + await expect(submitButton).toBeDisabled(); + + // Switch to reference tab, should not be submittable either + const referenceTabButton = + tokensUpdateCreateModal.getByTestId("reference-opt"); + await referenceTabButton.click(); + await expect(submitButton).toBeDisabled(); + }); + + test("User adds typography token with reference", async ({ page }) => { + const { tokensUpdateCreateModal, tokenThemesSetsSidebar, tokensSidebar } = + await setupTypographyTokensFile(page); + + const newTokenTitle = "NewReference"; + + const tokensTabPanel = page.getByRole("tabpanel", { name: "tokens" }); + await tokensTabPanel + .getByRole("button", { name: "Add Token: Typography" }) + .click(); + + await expect(tokensUpdateCreateModal).toBeVisible(); + + const nameField = tokensUpdateCreateModal.getByLabel("Name"); + await nameField.fill(newTokenTitle); + + const referenceTabButton = + tokensUpdateCreateModal.getByTestId("reference-opt"); + referenceTabButton.click(); + + const referenceField = tokensUpdateCreateModal.getByLabel("Reference"); + await referenceField.fill("{Full}"); + + const submitButton = tokensUpdateCreateModal.getByRole("button", { + name: "Save", + }); + + const resolvedValue = + await tokensUpdateCreateModal.getByText("Resolved value:"); + await expect(resolvedValue).toBeVisible(); + await expect(resolvedValue).toContainText("Font Family: 42dot Sans"); + await expect(resolvedValue).toContainText("Font Size: 100"); + await expect(resolvedValue).toContainText("Font Weight: 300"); + await expect(resolvedValue).toContainText("Letter Spacing: 2"); + await expect(resolvedValue).toContainText("Text Case: uppercase"); + await expect(resolvedValue).toContainText("Text Decoration: underline"); + + await expect(submitButton).toBeEnabled(); + await submitButton.click(); + + await expect(tokensUpdateCreateModal).not.toBeVisible(); + + const newToken = tokensSidebar.getByRole("button", { + name: newTokenTitle, + }); + await expect(newToken).toBeVisible(); + }); }); }); diff --git a/frontend/playwright/ui/specs/variants.spec.js b/frontend/playwright/ui/specs/variants.spec.js index 5cfbb1ff9f..580017437a 100644 --- a/frontend/playwright/ui/specs/variants.spec.js +++ b/frontend/playwright/ui/specs/variants.spec.js @@ -150,8 +150,8 @@ test("User copy paste a variant container", async ({ page }) => { await workspacePage.clickAt(500, 500); await workspacePage.page.keyboard.press("Control+v"); - const variant_original = await findVariant(workspacePage, 0); - const variant_duplicate = await findVariant(workspacePage, 1); + const variant_original = await findVariant(workspacePage, 1); + const variant_duplicate = await findVariant(workspacePage, 0); // Expand the layers await variant_duplicate.container.getByRole("button").first().click(); diff --git a/frontend/playwright/ui/specs/workspace.spec.js b/frontend/playwright/ui/specs/workspace.spec.js index 107ea3189b..411d01d9a8 100644 --- a/frontend/playwright/ui/specs/workspace.spec.js +++ b/frontend/playwright/ui/specs/workspace.spec.js @@ -271,7 +271,7 @@ test("Bug 9066 - Problem with grid layout", async ({ page }) => { await workspacePage.clickToggableLayer("Group"); await page.getByText("A", { exact: true }).click(); - await workspacePage.rightSidebar.getByTestId("swap-component-btn").click(); + await workspacePage.rightSidebar.getByTestId("component-pill-button").click(); await page.getByTitle("C", { exact: true }).click(); diff --git a/frontend/playwright/ui/visual-specs/visual-viewer.spec.js b/frontend/playwright/ui/visual-specs/visual-viewer.spec.js index ef6901f702..977eb57fcb 100644 --- a/frontend/playwright/ui/visual-specs/visual-viewer.spec.js +++ b/frontend/playwright/ui/visual-specs/visual-viewer.spec.js @@ -62,7 +62,7 @@ test("User goes to the Viewer Comments", async ({ page }) => { await viewerPage.showComments(); await viewerPage.showCommentsThread(1); await expect( - viewerPage.page.getByRole("textbox", { name: "Reply" }), + viewerPage.page.getByRole("button", { name: "Post" }), ).toBeVisible(); await expect(viewerPage.page).toHaveScreenshot(); @@ -101,7 +101,11 @@ test("User goes to the Viewer Inspect code", async ({ page }) => { await viewerPage.showCode(); - await expect(viewerPage.page.getByText("Size and position")).toBeVisible(); + await expect( + viewerPage.page.getByRole("button", { + name: "Toggle panel Size & Position", + }), + ).toBeVisible(); await expect(viewerPage.page).toHaveScreenshot(); }); @@ -117,7 +121,11 @@ test("User goes to the Viewer Inspect code, code tab", async ({ page }) => { }); await viewerPage.showCode(); - await viewerPage.page.getByRole("tab", { name: "code" }).click(); + await viewerPage.page + .getByRole("combobox") + .filter({ hasText: "Styles" }) + .click(); + await viewerPage.page.getByRole("option", { name: "Code" }).click(); await expect( viewerPage.page.getByRole("button", { name: "Copy all code" }), diff --git a/frontend/playwright/ui/visual-specs/workspace.spec.js b/frontend/playwright/ui/visual-specs/workspace.spec.js index e594ea343f..418b92861d 100644 --- a/frontend/playwright/ui/visual-specs/workspace.spec.js +++ b/frontend/playwright/ui/visual-specs/workspace.spec.js @@ -95,9 +95,7 @@ test.describe("Assets tab", () => { await workspace.clickLibrary("Testing library 1"); await expect( - workspace.librariesModal.getByText( - "There are no Shared Libraries available", - ), + workspace.librariesModal.getByText("File library"), ).toBeVisible(); await expect(workspace.page).toHaveScreenshot(); }); diff --git a/frontend/resources/images/features/2.11-invitations.gif b/frontend/resources/images/features/2.11-invitations.gif new file mode 100644 index 0000000000..35556347e2 Binary files /dev/null and b/frontend/resources/images/features/2.11-invitations.gif differ diff --git a/frontend/resources/images/features/2.11-menu.gif b/frontend/resources/images/features/2.11-menu.gif new file mode 100644 index 0000000000..cc686593e5 Binary files /dev/null and b/frontend/resources/images/features/2.11-menu.gif differ diff --git a/frontend/resources/images/features/2.11-slide-0.jpg b/frontend/resources/images/features/2.11-slide-0.jpg new file mode 100644 index 0000000000..155bd8774c Binary files /dev/null and b/frontend/resources/images/features/2.11-slide-0.jpg differ diff --git a/frontend/resources/images/features/2.11-typography-token.gif b/frontend/resources/images/features/2.11-typography-token.gif new file mode 100644 index 0000000000..ea87cb42c0 Binary files /dev/null and b/frontend/resources/images/features/2.11-typography-token.gif differ diff --git a/frontend/resources/images/features/2.11-variants.gif b/frontend/resources/images/features/2.11-variants.gif new file mode 100644 index 0000000000..8e44da260f Binary files /dev/null and b/frontend/resources/images/features/2.11-variants.gif differ diff --git a/frontend/resources/images/icons/drop-shadow.svg b/frontend/resources/images/icons/drop-shadow.svg new file mode 100644 index 0000000000..5b5abcd8e7 --- /dev/null +++ b/frontend/resources/images/icons/drop-shadow.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/resources/images/icons/inner-shadow.svg b/frontend/resources/images/icons/inner-shadow.svg new file mode 100644 index 0000000000..9b9459d85d --- /dev/null +++ b/frontend/resources/images/icons/inner-shadow.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/resources/images/thumbnails/template-penpot-design-system.jpg b/frontend/resources/images/thumbnails/template-penpot-design-system.jpg index 0b2db57f48..f675ff85f1 100644 Binary files a/frontend/resources/images/thumbnails/template-penpot-design-system.jpg and b/frontend/resources/images/thumbnails/template-penpot-design-system.jpg differ diff --git a/frontend/resources/styles/common/refactor/basic-rules.scss b/frontend/resources/styles/common/refactor/basic-rules.scss index c4e8ea422e..91093d5e0d 100644 --- a/frontend/resources/styles/common/refactor/basic-rules.scss +++ b/frontend/resources/styles/common/refactor/basic-rules.scss @@ -4,6 +4,13 @@ // // Copyright (c) KALEIDOS INC +@use "./spacing.scss" as *; +@use "./borders.scss" as *; +@use "./mixins.scss" as *; +@use "./focus.scss" as *; +@use "./shadows.scss" as *; +@use "./z-index.scss" as *; + // SCROLLBAR .new-scrollbar { scrollbar-width: thin; @@ -52,7 +59,6 @@ .button-primary { @include buttonStyle; @include flexCenter; - @include focusPrimary; @include headlineSmallTypography; background-color: var(--button-primary-background-color-rest); border: $s-1 solid var(--button-primary-border-color-rest); @@ -63,15 +69,16 @@ span svg { stroke: var(--button-primary-foreground-color-rest); } + @include focusPrimary; &:hover { background-color: var(--button-primary-background-color-hover); border: $s-1 solid var(--button-primary-border-color-hover); color: var(--button-primary-foreground-color-hover); + text-decoration: none; svg, span svg { stroke: var(--button-primary-foreground-color-hover); } - text-decoration: none; } &:active { background-color: var(--button-primary-background-color-active); @@ -96,7 +103,6 @@ .button-secondary { @include buttonStyle; @include flexCenter; - @include focusSecondary; border-radius: $br-8; background-color: var(--button-secondary-background-color-rest); border: $s-1 solid var(--button-secondary-border-color-rest); @@ -105,6 +111,7 @@ span svg { stroke: var(--button-secondary-foreground-color-rest); } + @include focusSecondary; &:hover { background-color: var(--button-secondary-background-color-hover); border: $s-1 solid var(--button-secondary-border-color-hover); @@ -138,7 +145,6 @@ .button-tertiary { @include buttonStyle; @include flexCenter; - @include focusTertiary; --button-tertiary-border-width: #{$s-2}; border-radius: $br-8; color: var(--button-tertiary-foreground-color-rest); @@ -150,6 +156,7 @@ span svg { stroke: var(--button-tertiary-foreground-color-rest); } + @include focusTertiary; &:hover { background-color: var(--button-tertiary-background-color-hover); color: var(--button-tertiary-foreground-color-hover); @@ -197,7 +204,6 @@ .button-radio { @include buttonStyle; @include flexCenter; - @include focusRadio; border-radius: $br-8; color: var(--button-radio-foreground-color-rest); border-color: $s-1 solid var(--button-radio-background-color-rest); @@ -205,6 +211,7 @@ span svg { stroke: var(--button-radio-foreground-color-rest); } + @include focusRadio; &:hover { background-color: var(--button-radio-background-color-rest); color: var(--button-radio-foreground-color-hover); @@ -324,7 +331,6 @@ } .input-element { - @include focusInput; display: flex; align-items: center; height: $s-32; @@ -349,6 +355,7 @@ color: var(--input-placeholder-color); } + @include focusInput; &:hover { border: $s-1 solid var(--input-border-color-hover); background-color: var(--input-background-color-hover); diff --git a/frontend/resources/styles/common/refactor/borders.scss b/frontend/resources/styles/common/refactor/borders.scss index 76949a647f..4c4d27ab00 100644 --- a/frontend/resources/styles/common/refactor/borders.scss +++ b/frontend/resources/styles/common/refactor/borders.scss @@ -5,12 +5,12 @@ // Copyright (c) KALEIDOS INC // Border radius -$br-0: $s-0; -$br-2: $s-2; -$br-4: $s-4; +$br-0: 0; +$br-2: 2px; +$br-4: 4px; $br-5: 0.313rem; -$br-6: $s-6; -$br-8: $s-8; -$br-10: calc($s-8 + $s-2); -$br-12: $s-12; +$br-6: 6px; +$br-8: 8px; +$br-10: 10px; +$br-12: 12px; $br-circle: 50%; diff --git a/frontend/resources/styles/common/refactor/common-refactor.scss b/frontend/resources/styles/common/refactor/common-refactor.scss index 952beb6cc6..a6098ee978 100644 --- a/frontend/resources/styles/common/refactor/common-refactor.scss +++ b/frontend/resources/styles/common/refactor/common-refactor.scss @@ -8,13 +8,13 @@ // MAIN STYLES //################################################# -@import "common/refactor/fonts.scss"; -@import "common/refactor/spacing.scss"; -@import "common/refactor/borders.scss"; -@import "common/refactor/opacity.scss"; -@import "common/refactor/shadows.scss"; -@import "common/refactor/z-index.scss"; -@import "common/refactor/mixins.scss"; -@import "common/refactor/focus.scss"; -@import "common/refactor/animations.scss"; -@import "common/refactor/basic-rules.scss"; +@forward "./fonts.scss"; +@forward "./spacing.scss"; +@forward "./borders.scss"; +@forward "./opacity.scss"; +@forward "./shadows.scss"; +@forward "./z-index.scss"; +@forward "./mixins.scss"; +@forward "./focus.scss"; +@forward "./animations.scss"; +@forward "./basic-rules.scss"; diff --git a/frontend/resources/styles/common/refactor/design-tokens.scss b/frontend/resources/styles/common/refactor/design-tokens.scss index 54ccc918ca..3caa88cdd5 100644 --- a/frontend/resources/styles/common/refactor/design-tokens.scss +++ b/frontend/resources/styles/common/refactor/design-tokens.scss @@ -384,11 +384,6 @@ --dashboard-list-foreground-color: var(--color-foreground-primary); --dashboard-list-text-foreground-color: var(--color-foreground-secondary); - --flow-tag-background-color: var(--color-background-tertiary); - --flow-tag-foreground-color: var(--color-foreground-secondary); - --flow-tag-background-color-hover: var(--color-background-quaternary); - --flow-tag-foreground-color-hover: var(--color-accent-primary); - --communication-tag-background-color: var(--color-foreground-primary); --communication-tag-foreground-color: var(--color-background-tertiary); diff --git a/frontend/resources/styles/common/refactor/focus.scss b/frontend/resources/styles/common/refactor/focus.scss index 8efdeebd5e..0ac2dde780 100644 --- a/frontend/resources/styles/common/refactor/focus.scss +++ b/frontend/resources/styles/common/refactor/focus.scss @@ -4,6 +4,8 @@ // // Copyright (c) KALEIDOS INC +@use "./spacing.scss" as *; + @mixin focusType($type) { $realType: ""; @if $type { diff --git a/frontend/resources/styles/common/refactor/mixins.scss b/frontend/resources/styles/common/refactor/mixins.scss index f2d734ccf0..c4d07d09e2 100644 --- a/frontend/resources/styles/common/refactor/mixins.scss +++ b/frontend/resources/styles/common/refactor/mixins.scss @@ -4,6 +4,9 @@ // // Copyright (c) KALEIDOS INC +@use "./fonts.scss" as *; +@use "./spacing.scss" as *; + @mixin flexCenter { display: flex; justify-content: center; @@ -146,7 +149,6 @@ position: relative; min-height: $s-32; width: $s-144; - max-width: $s-144; padding: calc($s-8 - $s-1) 0 calc($s-8 - $s-1) calc($s-8 - $s-1); border-radius: $s-8; box-sizing: border-box; diff --git a/frontend/resources/styles/common/refactor/shadows.scss b/frontend/resources/styles/common/refactor/shadows.scss index ec1e172d2d..c936ca115d 100644 --- a/frontend/resources/styles/common/refactor/shadows.scss +++ b/frontend/resources/styles/common/refactor/shadows.scss @@ -4,6 +4,8 @@ // // Copyright (c) KALEIDOS INC +@use "./spacing.scss" as *; + @mixin menuShadow { box-shadow: 0px 0px $s-12 0px var(--menu-shadow-color); } diff --git a/frontend/resources/styles/common/refactor/themes.scss b/frontend/resources/styles/common/refactor/themes.scss index 3df0c6f253..9a5a9a1e64 100644 --- a/frontend/resources/styles/common/refactor/themes.scss +++ b/frontend/resources/styles/common/refactor/themes.scss @@ -4,5 +4,5 @@ // // Copyright (c) KALEIDOS INC -@import "./themes/default-theme.scss"; -@import "./themes/light-theme.scss"; +@forward "./themes/default-theme.scss"; +@forward "./themes/light-theme.scss"; diff --git a/frontend/resources/styles/main-default.scss b/frontend/resources/styles/main-default.scss index 341606c7ea..5b6c1cb247 100644 --- a/frontend/resources/styles/main-default.scss +++ b/frontend/resources/styles/main-default.scss @@ -8,21 +8,21 @@ // MAIN STYLES //################################################# -@import "common/dependencies/reset"; -@import "common/refactor/color-defs.scss"; -@import "common/dependencies/fonts"; -@import "common/dependencies/animations"; -@import "common/dependencies/highlight.scss"; -@import "common/dependencies/storybook.scss"; +@forward "common/dependencies/reset"; +@forward "common/refactor/color-defs.scss"; +@forward "common/dependencies/fonts"; +@forward "common/dependencies/animations"; +@forward "common/dependencies/highlight.scss"; +@forward "common/dependencies/storybook.scss"; -@import "common/refactor/themes.scss"; -@import "common/refactor/design-tokens.scss"; +@forward "common/refactor/themes.scss"; +@forward "common/refactor/design-tokens.scss"; //################################################# // Layouts //################################################# -@import "common/base"; +@forward "common/base"; //################################################# // Commons @@ -30,4 +30,4 @@ // TODO: remove this stylesheet once the new text editor is in place // https: //tree.taiga.io/project/penpot/us/8165 -@import "main/partials/texts"; +@forward "main/partials/texts"; diff --git a/frontend/scripts/_worker.js b/frontend/scripts/_worker.js index dab3e68c43..80ba2f6bf6 100644 --- a/frontend/scripts/_worker.js +++ b/frontend/scripts/_worker.js @@ -24,9 +24,9 @@ async function compileFile(path) { "node_modules/animate.css", "resources/styles/common/", "resources/styles", + "src/app/main/ui/", ], sourceMap: false, - silenceDeprecations: ["import", "mixed-decls"], }); // console.dir(result); resolve({ diff --git a/frontend/scripts/build-storybook b/frontend/scripts/build-storybook new file mode 100755 index 0000000000..8588fd7866 --- /dev/null +++ b/frontend/scripts/build-storybook @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# NOTE: this script should be called from the parent directory to +# properly work. + +export CURRENT_VERSION=$1; +export BUILD_DATE=$(date -R); +export CURRENT_HASH=${CURRENT_HASH:-$(git rev-parse --short HEAD)}; +export TS=$(date +%s); + +export NODE_ENV=production; + +echo "Current path:" +echo $PATH + +set -ex + +corepack enable; +corepack install || exit 1; +yarn install || exit 1; + +yarn run build:storybook || exit 1; diff --git a/frontend/scripts/watch.js b/frontend/scripts/watch.js index eeeb06eec9..57e9be6016 100644 --- a/frontend/scripts/watch.js +++ b/frontend/scripts/watch.js @@ -5,6 +5,8 @@ import log from "fancy-log"; import * as h from "./_helpers.js"; import ppt from "pretty-time"; +const isDebug = process.env.NODE_ENV !== "production"; + const worker = h.startWorker(); let sass = null; @@ -16,6 +18,11 @@ async function compileSassAll() { let output = await h.concatSass(sass); await fs.writeFile("./resources/public/css/main.css", output); + if (isDebug) { + let debugCSS = await h.compileSassDebug(worker); + await fs.writeFile("./resources/public/css/debug.css", debugCSS); + } + const end = process.hrtime(start); log.info("done: compile styles", `(${ppt(end)})`); } diff --git a/frontend/src/app/main.cljs b/frontend/src/app/main.cljs index 06fde42430..d027e0ba57 100644 --- a/frontend/src/app/main.cljs +++ b/frontend/src/app/main.cljs @@ -29,6 +29,7 @@ [app.util.dom :as dom] [app.util.i18n :as i18n] [beicon.v2.core :as rx] + [cuerdas.core :as str] [debug] [features] [potok.v2.core :as ptk] @@ -42,8 +43,7 @@ :asserts *assert* :build-date cf/build-date :public-uri (dm/str cf/public-uri)) - (doseq [flag cf/flags] - (log/dbg :hint "flag enabled" :flag (name flag)))) + (log/inf :hint "enabled flags" :flags (str/join " " (map name cf/flags)))) (declare reinit) diff --git a/frontend/src/app/main/data/changes.cljs b/frontend/src/app/main/data/changes.cljs index 6f7799d088..8e914ec00f 100644 --- a/frontend/src/app/main/data/changes.cljs +++ b/frontend/src/app/main/data/changes.cljs @@ -12,6 +12,7 @@ [app.common.time :as ct] [app.common.types.shape-tree :as ctst] [app.common.uuid :as uuid] + [app.main.data.event :as ev] [app.main.data.helpers :as dsh] [app.main.worker :as mw] [beicon.v2.core :as rx] @@ -173,6 +174,8 @@ tags #{}} :as params}] (ptk/reify ::commit-changes + ev/PerformanceEvent + ptk/WatchEvent (watch [_ state _] (let [file-id (or file-id (:current-file-id state)) diff --git a/frontend/src/app/main/data/common.cljs b/frontend/src/app/main/data/common.cljs index b202dfcdb1..101db147ff 100644 --- a/frontend/src/app/main/data/common.cljs +++ b/frontend/src/app/main/data/common.cljs @@ -10,7 +10,6 @@ [app.common.data :as d] [app.common.data.macros :as dm] [app.common.schema :as sm] - [app.common.types.components-list :as ctkl] [app.common.types.team :as ctt] [app.main.data.helpers :as dsh] [app.main.data.modal :as modal] @@ -105,32 +104,21 @@ [file-id add-shared] (ptk/reify ::show-shared-dialog ptk/WatchEvent - (watch [_ state _] - (let [features (get state :features) - file (dsh/lookup-file state) - data (get file :data)] - - (->> (if (and data file) - (rx/of {:name (:name file) - :components-count (count (ctkl/components-seq data)) - :graphics-count (count (:media data)) - :colors-count (count (:colors data)) - :typography-count (count (:typographies data))}) - (rp/cmd! :get-file-summary {:id file-id :features features})) - (rx/map (fn [summary] - (let [count (+ (:components-count summary) - (:graphics-count summary) - (:colors-count summary) - (:typography-count summary))] - (modal/show - {:type :confirm - :title (tr "modals.add-shared-confirm.message" (:name summary)) - :message (if (zero? count) (tr "modals.add-shared-confirm-empty.hint") (tr "modals.add-shared-confirm.hint")) - :cancel-label (if (zero? count) (tr "labels.cancel") :omit) - :accept-label (tr "modals.add-shared-confirm.accept") - :accept-style :primary - :on-accept add-shared}))))))))) - + (watch [_ _ _] + (->> (rp/cmd! :get-file-summary {:id file-id}) + (rx/map (fn [summary] + (let [count (+ (-> summary :components :count) + (-> summary :graphics :count) + (-> summary :colors :count) + (-> summary :typographies :count))] + (modal/show + {:type :confirm + :title (tr "modals.add-shared-confirm.message" (:name summary)) + :message (if (zero? count) (tr "modals.add-shared-confirm-empty.hint") (tr "modals.add-shared-confirm.hint")) + :cancel-label (if (zero? count) (tr "labels.cancel") :omit) + :accept-label (tr "modals.add-shared-confirm.accept") + :accept-style :primary + :on-accept add-shared})))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Exportations diff --git a/frontend/src/app/main/data/dashboard.cljs b/frontend/src/app/main/data/dashboard.cljs index 11da2135a0..8937c3180d 100644 --- a/frontend/src/app/main/data/dashboard.cljs +++ b/frontend/src/app/main/data/dashboard.cljs @@ -444,7 +444,7 @@ (when is-shared (->> (rp/cmd! :get-file-summary {:id id}) (rx/map (fn [summary] - (when (pos? (:variants-count summary)) + (when (-> summary :variants :count pos?) (ptk/event ::ev/event {::ev/name "set-file-variants-shared" ::ev/origin "dashboard"}))))))))))) (defn set-file-thumbnail diff --git a/frontend/src/app/main/data/event.cljs b/frontend/src/app/main/data/event.cljs index 79cbde6d7e..bc9a449a7b 100644 --- a/frontend/src/app/main/data/event.cljs +++ b/frontend/src/app/main/data/event.cljs @@ -8,15 +8,20 @@ (:require ["ua-parser-js" :as ua] [app.common.data :as d] + [app.common.data.macros :as dm] [app.common.json :as json] [app.common.logging :as l] + [app.common.math :as math] [app.common.time :as ct] [app.config :as cf] + [app.main.refs :as refs] [app.main.repo :as rp] + [app.main.store :as st] [app.util.globals :as g] [app.util.http :as http] [app.util.i18n :as i18n] [app.util.object :as obj] + [app.util.perf :as perf] [app.util.storage :as storage] [beicon.v2.core :as rx] [beicon.v2.operators :as rxo] @@ -34,6 +39,28 @@ ;; Defines the time window (in ms) within events belong to the same session. (def session-timeout (* 1000 60 30)) + +;; Min time for a long task to be reported to telemetry +(def min-longtask-time 1000) + +;; Min time between long task reports +(def debounce-longtask-time 1000) + +;; Min time for a long task to be reported to telemetry +(def min-browser-event-time 1000) + +;; Min time between long task reports +(def debounce-browser-event-time 1000) + +;; Min time for a long task to be reported to telemetry +(def min-performace-event-time 1000) + +;; Min time between long task reports +(def debounce-performance-event-time 1000) + +;; Def micro-benchmark iterations +(def micro-benchmark-iterations 1e6) + ;; --- CONTEXT (defn- collect-context @@ -78,6 +105,8 @@ (defprotocol Event (-data [_] "Get event data")) +(defprotocol PerformanceEvent) + (defn- coerce-to-string [v] (cond @@ -148,6 +177,48 @@ :context context :props props})))) +(defn performance-payload + ([result] + (let [props (aget result 0) + profile-id (aget result 1)] + (performance-payload profile-id props))) + ([profile-id props] + (let [{:keys [performance-info]} @st/state] + {:type "action" + :name "performance" + :context (merge @context performance-info) + :props props + :profile-id profile-id}))) + +(defn- process-performance-event + [result] + (let [event (aget result 0) + profile-id (aget result 1)] + + (if (and (satisfies? PerformanceEvent event) + (exists? js/globalThis) + (exists? (.-requestAnimationFrame js/globalThis)) + (exists? (.-scheduler js/globalThis)) + (exists? (.-postTask (.-scheduler js/globalThis)))) + (rx/create + (fn [subs] + (let [start (perf/timestamp)] + (js/requestAnimationFrame + #(js/scheduler.postTask + (fn [] + (let [time (- (perf/timestamp) start)] + (when (> time min-performace-event-time) + (rx/push! + subs + (performance-payload + profile-id + {::event (str (ptk/type event)) + :time time})))) + (rx/end! subs)) + #js {"priority" "user-blocking"}))) + nil)) + (rx/empty)))) + (defn- process-event [event] (cond @@ -183,10 +254,126 @@ (rx/of nil))) + +(defn performance-observer-event-stream + [] + (if (and (exists? js/globalThis) + (exists? (.-PerformanceObserver js/globalThis))) + (rx/create + (fn [subs] + (let [observer + (js/PerformanceObserver. + (fn [list] + (run! + (fn [entry] + (when (and (= "event" (.-entryType entry)) + (> (.-duration entry) min-browser-event-time)) + (rx/push! + subs + {::event :observer-event + :duration (.-duration entry) + :event-name (.-name entry)}))) + (.getEntries list))))] + (.observe observer #js {:entryTypes #js ["event"]}) + (fn [] + (.disconnect observer))))) + (rx/empty))) + +(defn performance-observer-longtask-stream + [] + (if (and (exists? js/globalThis) + (exists? (.-PerformanceObserver js/globalThis))) + (rx/create + (fn [subs] + (let [observer + (js/PerformanceObserver. + (fn [list] + (run! + (fn [entry] + (when (and (= "longtask" (.-entryType entry)) + (> (.-duration entry) min-longtask-time)) + (rx/push! subs + {::event :observer-longtask + :duration (.-duration entry)}))) + (.getEntries list))))] + (.observe observer #js {:entryTypes #js ["longtask"]}) + (fn [] + (.disconnect observer))))) + (rx/empty))) + +(defn- save-performance-info + [] + (ptk/reify ::save-performance-info + ptk/UpdateEvent + (update [_ state] + (letfn [(count-shapes [file] + (->> file :data :pages-index + (reduce-kv + (fn [sum _ page] + (+ sum (count (:objects page)))) + 0))) + (count-library-data [files {:keys [id]}] + (let [data (dm/get-in files [id :data])] + {:components (count (:components data)) + :colors (count (:colors data)) + :typographies (count (:typographies data))}))] + (let [file-id (get state :current-file-id) + file (get-in state [:files file-id]) + file-size (count-shapes file) + + libraries + (-> (refs/select-libraries (:files state) (:id file)) + (d/update-vals (partial count-library-data (:files state)))) + + lib-sizes + (->> libraries + (reduce-kv + (fn [acc _ {:keys [components colors typographies]}] + (-> acc + (update :components + components) + (update :colors + colors) + (update :typographies + typographies))) + {}))] + (update state :performance-info + (fn [info] + (-> info + (assoc :file-size file-size) + (assoc :library-sizes lib-sizes) + (assoc :file-start-time (perf/now)))))))))) + +(defn store-performace-info + [] + (letfn [(micro-benchmark [state] + (let [start (perf/now)] + (loop [i micro-benchmark-iterations] + (when-not (zero? i) + (* (math/sin i) (math/sqrt i)) + (recur (dec i)))) + (let [end (perf/now)] + (update state :performance-info assoc :bench-result (- end start)))))] + + (ptk/reify ::store-performace-info + ptk/UpdateEvent + (update [_ state] + (-> state + micro-benchmark + (assoc-in [:performance-info :app-start-time] (perf/now)))) + + ptk/WatchEvent + (watch [_ _ stream] + (->> stream + (rx/filter (ptk/type? :app.main.data.workspace/all-libraries-resolved)) + (rx/take 1) + (rx/map save-performance-info)))))) + (defn initialize [] (when (contains? cf/flags :audit-log) (ptk/reify ::initialize + ptk/WatchEvent + (watch [_ _ _] + (rx/of (store-performace-info))) + ptk/EffectEvent (effect [_ _ stream] (let [session (atom nil) @@ -223,13 +410,30 @@ (fn [] (l/debug :hint "audit persistence terminated")))) - (->> stream - (rx/with-latest-from profile) - (rx/map (fn [result] - (let [event (aget result 0) - profile-id (aget result 1)] - (some-> (process-event event) - (update :profile-id #(or % profile-id)))))) + (->> (rx/merge + (->> stream + (rx/with-latest-from profile) + (rx/map (fn [result] + (let [event (aget result 0) + profile-id (aget result 1)] + (some-> (process-event event) + (update :profile-id #(or % profile-id))))))) + + (->> (performance-observer-event-stream) + (rx/with-latest-from profile) + (rx/map performance-payload) + (rx/debounce debounce-browser-event-time)) + + (->> (performance-observer-longtask-stream) + (rx/with-latest-from profile) + (rx/map performance-payload) + (rx/debounce debounce-longtask-time)) + + (->> stream + (rx/with-latest-from profile) + (rx/merge-map process-performance-event) + (rx/debounce debounce-performance-event-time))) + (rx/filter :profile-id) (rx/map (fn [event] (let [session* (or @session (ct/now)) diff --git a/frontend/src/app/main/data/profile.cljs b/frontend/src/app/main/data/profile.cljs index 33186a7208..01dd5ba7d3 100644 --- a/frontend/src/app/main/data/profile.cljs +++ b/frontend/src/app/main/data/profile.cljs @@ -407,7 +407,8 @@ (watch [_ _ _] (let [{:keys [on-error on-success] :or {on-error rx/throw - on-success identity}} (meta data)] + on-success identity}} + (meta data)] (->> (rp/cmd! :request-profile-recovery data) (rx/tap on-success) diff --git a/frontend/src/app/main/data/style_dictionary.cljs b/frontend/src/app/main/data/style_dictionary.cljs index b341d35a96..1262b1d134 100644 --- a/frontend/src/app/main/data/style_dictionary.cljs +++ b/frontend/src/app/main/data/style_dictionary.cljs @@ -12,7 +12,7 @@ [app.common.logging :as l] [app.common.schema :as sm] [app.common.time :as ct] - [app.common.types.token :as ctt] + [app.common.types.token :as cto] [app.common.types.tokens-lib :as ctob] [app.main.data.tinycolor :as tinycolor] [app.main.data.workspace.tokens.errors :as wte] @@ -88,8 +88,8 @@ out-of-bounds {:errors [(wte/error-with-value :error.token/number-too-large value)]} - (seq (ctob/find-token-value-references value)) - (let [references (seq (ctob/find-token-value-references value))] + (seq (cto/find-token-value-references value)) + (let [references (seq (cto/find-token-value-references value))] {:errors [(wte/error-with-value :error.style-dictionary/missing-reference references)] :references references}) @@ -110,7 +110,7 @@ parsed-value (if out-of-bounds {:errors [(wte/error-with-value :error.token/number-too-large value)]} - (if-let [references (seq (ctob/find-token-value-references value))] + (if-let [references (seq (cto/find-token-value-references value))] {:errors [(wte/error-with-value :error.style-dictionary/missing-reference references)] :references references} {:errors [(wte/error-with-value :error.style-dictionary/invalid-token-value value)]}))))) @@ -120,10 +120,10 @@ If the `value` is not parseable and/or has missing references returns a map with `:errors`. If the `value` is parseable but is out of range returns a map with `warnings`." [value] - (let [missing-references? (seq (ctob/find-token-value-references value)) + (let [missing-references? (seq (cto/find-token-value-references value)) parsed-value (cft/parse-token-value value) out-of-scope (not (<= 0 (:value parsed-value) 1)) - references (seq (ctob/find-token-value-references value))] + references (seq (cto/find-token-value-references value))] (cond (and parsed-value (not out-of-scope)) parsed-value @@ -144,10 +144,10 @@ If the `value` is not parseable and/or has missing references returns a map with `:errors`. If the `value` is parseable but is out of range returns a map with `warnings`." [value] - (let [missing-references? (seq (ctob/find-token-value-references value)) + (let [missing-references? (seq (cto/find-token-value-references value)) parsed-value (cft/parse-token-value value) out-of-scope (< (:value parsed-value) 0) - references (seq (ctob/find-token-value-references value))] + references (seq (cto/find-token-value-references value))] (cond (and parsed-value (not out-of-scope)) parsed-value @@ -179,7 +179,7 @@ [value] (let [normalized-value (str/lower (str/trim value)) valid? (contains? #{"none" "uppercase" "lowercase" "capitalize"} normalized-value) - references (seq (ctob/find-token-value-references value))] + references (seq (cto/find-token-value-references value))] (cond valid? {:value normalized-value} @@ -195,8 +195,8 @@ "Parses `value` of a text-decoration `sd-token` into a map like `{:value \"underline\"}`. If the `value` is not parseable and/or has missing references returns a map with `:errors`." [value] - (let [valid-text-decoration (ctt/valid-text-decoration value) - references (seq (ctob/find-token-value-references value))] + (let [valid-text-decoration (cto/valid-text-decoration value) + references (seq (cto/find-token-value-references value))] (cond valid-text-decoration {:value valid-text-decoration} @@ -212,8 +212,8 @@ "Parses `value` of a font-weight `sd-token` into a map like `{:value \"700\"}` or `{:value \"700 Italic\"}`. If the `value` is not parseable and/or has missing references returns a map with `:errors`." [value] - (let [valid-font-weight (ctt/valid-font-weight-variant value) - references (seq (ctob/find-token-value-references value))] + (let [valid-font-weight (cto/valid-font-weight-variant value) + references (seq (cto/find-token-value-references value))] (cond valid-font-weight {:value value} @@ -225,9 +225,37 @@ :else {:errors [(wte/error-with-value :error.style-dictionary/invalid-token-value-font-weight value)]}))) +(defn- parse-sd-token-typography-line-height + "Parses `line-height-value` of a composite typography token. + Uses `font-size-value` to calculate the relative line-height value. + Returns an error for an invalid font-size value." + [line-height-value font-size-value font-size-errors] + (let [missing-references (seq (some cto/find-token-value-references line-height-value)) + error + (cond + missing-references + {:errors [(wte/error-with-value :error.style-dictionary/missing-reference missing-references)] + :references missing-references} + + (or + (not font-size-value) + (seq font-size-errors)) + {:errors [(wte/error-with-value :error.style-dictionary/composite-line-height-needs-font-size font-size-value)] + :font-size-value font-size-value})] + (or error + (try + (when-let [{:keys [unit value]} (cft/parse-token-value line-height-value)] + (case unit + "%" (/ value 100) + "px" (/ value font-size-value) + nil value + nil)) + (catch :default _ nil)) + {:errors [(wte/error-with-value :error.style-dictionary/invalid-token-value line-height-value)]}))) + (defn- parse-sd-token-font-family-value [value] - (let [missing-references (seq (some ctob/find-token-value-references value))] + (let [missing-references (seq (some cto/find-token-value-references value))] (cond missing-references {:errors [(wte/error-with-value :error.style-dictionary/missing-reference missing-references)] @@ -247,10 +275,12 @@ nil)) (defn- parse-composite-typography-value + "Parses composite typography `value` map. + Processes the `:line-height` based on the `:font-size` value in the map." [value] (let [missing-references (when (string? value) - (seq (ctob/find-token-value-references value)))] + (seq (cto/find-token-value-references value)))] (cond missing-references {:errors [(wte/error-with-value :error.style-dictionary/missing-reference missing-references)] @@ -261,14 +291,34 @@ :else (let [converted (js->clj value :keywordize-keys true) + add-keyed-errors (fn [typography-map k errors] + (update typography-map :errors concat (map #(assoc % :typography-key k) errors))) + ;; Separate line-height to process in an extra step + without-line-height (dissoc converted :line-height) valid-typography (reduce (fn [acc [k v]] (let [{:keys [errors value]} (parse-atomic-typography-value k v)] (if (seq errors) - (update acc :errors concat (map #(assoc % :typography-key k) errors)) + (add-keyed-errors acc k errors) (assoc-in acc [:value k] (or value v))))) {:value {}} - converted)] + without-line-height) + + ;; Calculate line-height based on the resolved font-size and add it back to the map + line-height (when-let [line-height (:line-height converted)] + (-> (parse-sd-token-typography-line-height + line-height + (get-in valid-typography [:value :font-size]) + (get-in valid-typography [:errors :font-size])))) + valid-typography (cond + (:errors line-height) + (add-keyed-errors valid-typography :line-height (:errors line-height)) + + line-height + (assoc-in valid-typography [:value :line-height] line-height) + + :else + valid-typography)] valid-typography)))) (defn collect-typography-errors [token] @@ -417,7 +467,6 @@ ;; FIXME: this with effect with trigger all the time because ;; `config` will be always a different instance - (mf/with-effect [tokens config] (let [cached (get @cache-atom tokens)] (cond diff --git a/frontend/src/app/main/data/team.cljs b/frontend/src/app/main/data/team.cljs index 3b63bdd5af..059ac58140 100644 --- a/frontend/src/app/main/data/team.cljs +++ b/frontend/src/app/main/data/team.cljs @@ -23,6 +23,7 @@ [app.util.storage :as storage] [app.util.webapi :as wapi] [beicon.v2.core :as rx] + [clojure.string :as str] [potok.v2.core :as ptk])) (log/set-level! :warn) @@ -351,26 +352,46 @@ (rx/catch on-error)))))) (defn create-invitations - [{:keys [emails role team-id resend?] :as params}] + "Unified function to create invitations. Supports two parameter formats: + 1. {:emails #{...} :role :admin :team-id uuid} - single role for all emails + 2. {:invitations [{:email ... :role ...}] :team-id uuid} - individual roles per email" + [{:keys [emails role team-id invitations resend?] :as params}] - (assert (keyword? role)) (assert (uuid? team-id)) - (assert (sm/check-set-of-emails emails)) + ;; Validate input format - must have either emails+role OR invitations + (assert (or (and emails role (sm/check-set-of-emails emails) (keyword? role)) + (and invitations + (sm/check-set-of-emails (map :email invitations)) + (every? #(contains? ctt/valid-roles (:role %)) invitations))) + "Must provide either emails+role or invitations with individual roles") (ptk/reify ::create-invitations ev/Event (-data [_] - {:role role + {:role (if invitations + (->> invitations (map :role) distinct (map name) (str/join ", ")) + (name role)) :team-id team-id - :resend resend?}) + :resend (boolean resend?)}) ptk/WatchEvent (watch [it _ _] (let [{:keys [on-success on-error] :or {on-success identity on-error rx/throw}} (meta params) - params (dissoc params :resend?)] - (->> (rp/cmd! :create-team-invitations (with-meta params (meta it))) + ;; Prepare parameters based on format + rpc-params (cond + ;; Format 1: emails + single role + (and emails role) + {:emails emails :role role :team-id team-id} + + ;; Format 2: invitations with individual roles + invitations + {:invitations invitations :team-id team-id} + + :else + (throw (ex-info " Invalid parameters " params)))] + (->> (rp/cmd! :create-team-invitations (with-meta rpc-params (meta it))) (rx/tap on-success) (rx/catch on-error)))))) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 048908202f..d32d9b0439 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -17,12 +17,11 @@ [app.common.geom.proportions :as gpp] [app.common.geom.shapes :as gsh] [app.common.logging :as log] + [app.common.path-names :as cpn] [app.common.transit :as t] [app.common.types.component :as ctc] - [app.common.types.fills :as types.fills] [app.common.types.shape :as cts] [app.common.uuid :as uuid] - [app.config :as cf] [app.main.data.changes :as dch] [app.main.data.comments :as dcmt] [app.main.data.common :as dcm] @@ -77,11 +76,10 @@ [app.util.timers :as tm] [app.util.webapi :as wapi] [beicon.v2.core :as rx] - [clojure.walk :as walk] [cuerdas.core :as str] [potok.v2.core :as ptk])) -(log/set-level! :debug) +(log/set-level! :info) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Workspace Initialization @@ -89,7 +87,6 @@ (declare ^:private workspace-initialized) (declare ^:private fetch-libraries) -(declare ^:private libraries-fetched) ;; --- Initialize Workspace @@ -131,37 +128,20 @@ (rx/of [k v]))))))) (rx/reduce conj {}))) - -(defn process-fills - "A function responsible to analyze the file data or shape for references - and apply lookup-index on it." - [data] - (letfn [(process-map-form [form] - (let [fills (get form :fills)] - (if (vector? fills) - (assoc form :fills (types.fills/from-plain fills)) - form))) - - (process-form [form] - (if (map? form) - (process-map-form form) - form))] - (if (contains? cf/flags :frontend-binary-fills) - (walk/postwalk process-form data) - data))) - (defn- resolve-file [file] + (log/inf :hint "resolve file" + :file-id (str (:id file)) + :features (str/join " " (:features file))) (->> (fpmap/resolve-file file) (rx/map :data) - (rx/map process-fills) (rx/map (fn [data] (assoc file :data (d/removem (comp t/pointer? val) data)))))) -(defn- check-libraries-synchronozation +(defn- check-libraries-synchronization [file-id libraries] - (ptk/reify ::check-libraries-synchronozation + (ptk/reify ::check-libraries-synchronization ptk/WatchEvent (watch [_ state _] (let [file (dsh/lookup-file state file-id) @@ -174,7 +154,7 @@ libraries)] (when needs-check? - (->> (rx/of (dwl/notify-sync-file file-id)) + (->> (rx/of (dwl/notify-sync-file)) (rx/delay 1000))))))) (defn- library-resolved @@ -184,40 +164,36 @@ (update [_ state] (update state :files assoc (:id library) library)))) -(defn- libraries-fetched - [file-id libraries] - (ptk/reify ::libraries-fetched - ptk/UpdateEvent - (update [_ state] - (update state :files merge - (->> libraries - (map #(assoc % :library-of file-id)) - (d/index-by :id)))))) - (defn- fetch-libraries [file-id features] (ptk/reify ::fetch-libries ptk/WatchEvent - (watch [_ _ _] - (->> (rp/cmd! :get-file-libraries {:file-id file-id}) - (rx/mapcat - (fn [libraries] - (rx/concat - (rx/of (libraries-fetched file-id libraries)) - (rx/merge - (->> (rx/from libraries) - (rx/merge-map - (fn [{:keys [id synced-at]}] - (->> (rp/cmd! :get-file {:id id :features features}) - (rx/map #(assoc % :synced-at synced-at :library-of file-id))))) - (rx/mapcat resolve-file) - (rx/map library-resolved)) - (->> (rx/from libraries) - (rx/map :id) - (rx/mapcat (fn [file-id] - (rp/cmd! :get-file-object-thumbnails {:file-id file-id :tag "component"}))) - (rx/map dwl/library-thumbnails-fetched))) - (rx/of (check-libraries-synchronozation file-id libraries))))))))) + (watch [_ _ stream] + (let [stopper-s (rx/filter (ptk/type? ::finalize-workspace) stream)] + (->> (rx/concat + (->> (rp/cmd! :get-file-libraries {:file-id file-id}) + (rx/mapcat + (fn [libraries] + (rx/concat + (rx/of (dwl/libraries-fetched file-id libraries)) + (rx/merge + (->> (rx/from libraries) + (rx/merge-map + (fn [{:keys [id synced-at]}] + (->> (rp/cmd! :get-file {:id id :features features}) + (rx/map #(assoc % :synced-at synced-at :library-of file-id))))) + (rx/mapcat resolve-file) + (rx/map library-resolved)) + (->> (rx/from libraries) + (rx/map :id) + (rx/mapcat (fn [file-id] + (rp/cmd! :get-file-object-thumbnails {:file-id file-id :tag "component"}))) + (rx/map dwl/library-thumbnails-fetched))) + (rx/of (check-libraries-synchronization file-id libraries)))))) + + ;; This events marks that all the libraries have been resolved + (rx/of (ptk/data-event ::all-libraries-resolved))) + (rx/take-until stopper-s)))))) (defn- workspace-initialized [file-id] @@ -563,7 +539,7 @@ (when-let [shape-id (d/nilv shape-id (dm/get-in state [:workspace-local :shape-for-rename]))] (let [shape (dsh/lookup-shape state shape-id) name (str/trim name) - clean-name (cfh/clean-path name) + clean-name (cpn/clean-path name) valid? (and (not (str/ends-with? name "/")) (string? clean-name) (not (str/blank? clean-name))) @@ -940,8 +916,8 @@ fdata (dsh/lookup-file-data state file-id) component (cfv/get-primary-component fdata component-id) cpath (:path component) - cpath (cfh/split-path cpath) - paths (map (fn [i] (cfh/join-path (take (inc i) cpath))) + cpath (cpn/split-path cpath) + paths (map (fn [i] (cpn/join-path (take (inc i) cpath))) (range (count cpath)))] (rx/concat (rx/from (map #(set-assets-group-open file-id :components % true) paths)) diff --git a/frontend/src/app/main/data/workspace/clipboard.cljs b/frontend/src/app/main/data/workspace/clipboard.cljs index f53519074f..194fe983d7 100644 --- a/frontend/src/app/main/data/workspace/clipboard.cljs +++ b/frontend/src/app/main/data/workspace/clipboard.cljs @@ -848,6 +848,10 @@ index 0) + index (if index + index + (dec (count (dm/get-in page-objects [parent-id :shapes])))) + selected (if (and (ctl/flex-layout? page-objects parent-id) (not (ctl/reverse? page-objects parent-id))) (into (d/ordered-set) (reverse selected)) selected) @@ -874,12 +878,17 @@ orig-shapes (map (d/getf all-objects) selected) + children-after (-> (pcb/get-objects changes) + (dm/get-in [parent-id :shapes]) + set) + + ;; At the end of the process, we want to select the new created shapes + ;; that are a direct child of the shape parent-id selected (into (d/ordered-set) (comp (filter add-obj?) - (filter #(contains? selected (:old-id %))) - (map :obj) - (map :id)) + (map (comp :id :obj)) + (filter #(contains? children-after %))) (:redo-changes changes)) changes (cond-> changes diff --git a/frontend/src/app/main/data/workspace/colors.cljs b/frontend/src/app/main/data/workspace/colors.cljs index 266df3483c..e03ba440b7 100644 --- a/frontend/src/app/main/data/workspace/colors.cljs +++ b/frontend/src/app/main/data/workspace/colors.cljs @@ -16,7 +16,6 @@ [app.common.types.shape :as shp] [app.common.types.shape.shadow :refer [check-shadow]] [app.common.types.text :as txt] - [app.config :as cfg] [app.main.broadcast :as mbc] [app.main.data.helpers :as dsh] [app.main.data.modal :as md] @@ -155,23 +154,8 @@ (transform-fill* state ids transform-attrs options)))) -(defn swap-attrs [shape attr index new-index] - (let [first (get-in shape [attr index]) - second (get-in shape [attr new-index])] - (-> shape - (assoc-in [attr index] second) - (assoc-in [attr new-index] first)))) - -(defn- swap-fills-index - [fills index new-index] - (let [first (get fills index) - second (get fills new-index)] - (-> fills - (assoc index second) - (assoc new-index first)))) - (defn reorder-fills - [ids index new-index] + [ids from-pos to-space-between-pos] (ptk/reify ::reorder-fills ptk/WatchEvent (watch [_ state _] @@ -183,7 +167,7 @@ transform-attrs (fn [object] - (update object :fills types.fills/update swap-fills-index index new-index))] + (update object :fills types.fills/update d/reorder from-pos to-space-between-pos))] (rx/concat (rx/from (map #(dwt/update-text-with-function % transform-attrs) text-ids)) @@ -516,22 +500,22 @@ {:attrs [:strokes]})))))) (defn reorder-shadows - [ids index new-index] + [ids from-pos to-space-between-pos] (ptk/reify ::reorder-shadow ptk/WatchEvent (watch [_ _ _] (rx/of (dwsh/update-shapes ids - #(swap-attrs % :shadow index new-index)))))) + #(update % :shadow d/reorder from-pos to-space-between-pos)))))) (defn reorder-strokes - [ids index new-index] + [ids from-pos to-space-between-pos] (ptk/reify ::reorder-strokes ptk/WatchEvent (watch [_ _ _] (rx/of (dwsh/update-shapes ids - #(swap-attrs % :strokes index new-index) + #(update % :strokes d/reorder from-pos to-space-between-pos) {:attrs [:strokes]}))))) (defn picker-for-selected-shape @@ -899,7 +883,7 @@ (update [_ state] (update state :colorpicker (fn [{:keys [stops editing-stop] :as state}] - (let [cap-stops? (or (features/active-feature? state "render-wasm/v1") (contains? cfg/flags :frontend-binary-fills)) + (let [cap-stops? (features/active-feature? state "render-wasm/v1") can-add-stop? (or (not cap-stops?) (< (count stops) types.fills/MAX-GRADIENT-STOPS))] (if can-add-stop? (if (clr/uniform-spread? stops) @@ -945,9 +929,9 @@ (update state :colorpicker (fn [state] (let [stops (:stops state) + cap-stops? - (or (features/active-feature? state "render-wasm/v1") - (contains? cfg/flags :frontend-binary-fills)) + (features/active-feature? state "render-wasm/v1") can-add-stop? (or (not cap-stops?) (< (count stops) types.fills/MAX-GRADIENT-STOPS))] @@ -972,8 +956,7 @@ (update state :colorpicker (fn [state] (let [stop (or (:editing-stop state) 0) - cap-stops? (or (features/active-feature? state "render-wasm/v1") - (contains? cfg/flags :frontend-binary-fills)) + cap-stops? (features/active-feature? state "render-wasm/v1") stops (mapv split-color-components (if cap-stops? (take types.fills/MAX-GRADIENT-STOPS stops) diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index 287531d458..1ad85bd56a 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -17,6 +17,7 @@ [app.common.logic.libraries :as cll] [app.common.logic.shapes :as cls] [app.common.logic.variants :as clv] + [app.common.path-names :as cpn] [app.common.time :as ct] [app.common.types.color :as ctc] [app.common.types.component :as ctk] @@ -103,7 +104,7 @@ (defn extract-path-if-missing [item] - (let [[path name] (cfh/parse-path-name (:name item))] + (let [[path name] (cpn/split-group-name (:name item))] (if (and (= (:name item) name) (contains? item :path)) @@ -145,7 +146,7 @@ (defn- update-color* [it state color file-id] (let [data (dsh/lookup-file-data state) - [path name] (cfh/parse-path-name (:name color)) + [path name] (cpn/split-group-name (:name color)) color (assoc color :path path :name name) changes (-> (pcb/empty-changes it) (pcb/with-library-data data) @@ -250,7 +251,7 @@ (let [new-name (str/trim new-name)] (if (str/empty? new-name) (rx/empty) - (let [[path name] (cfh/parse-path-name new-name) + (let [[path name] (cpn/split-group-name new-name) data (dsh/lookup-file-data state) object (get-in data [:media id]) new-object (assoc object :path path :name name) @@ -327,7 +328,7 @@ (watch [it state _] (when (and (some? new-name) (not= "" new-name)) (let [data (dsh/lookup-file-data state) - [path name] (cfh/parse-path-name new-name) + [path name] (cpn/split-group-name new-name) object (get-in data [:typographies id]) new-object (assoc object :path path :name name)] (do-update-tipography it state new-object file-id)))))) @@ -449,7 +450,7 @@ ptk/WatchEvent (watch [_ state _] (let [name (str/trim name) - clean-name (cfh/clean-path name) + clean-name (cpn/clean-path name) valid? (and (not (str/ends-with? name "/")) (string? clean-name) (not (str/blank? clean-name))) @@ -709,11 +710,14 @@ (fn [ids] (let [parent-ids (when update-layout? (map #(-> (get objects %) :parent-id) ids))] - (rx/of - (dws/select-shapes ids) - dwz/zoom-to-selected-shape + (rx/concat + (rx/of + (dws/select-shapes ids) + dwz/zoom-to-selected-shape) (when update-layout? - (ptk/data-event :layout/update {:ids parent-ids}))))) + (->> (rx/of (ptk/data-event :layout/update {:ids parent-ids})) + ;; Delay so the navigation can finish + (rx/delay 250)))))) redirect-to-page (fn [page-id ids] @@ -1189,19 +1193,22 @@ (ctf/used-assets-changed-since file-data library sync-date)))))) (defn notify-sync-file - ;; file-id is the id of the modified library - [file-id] - (dm/assert! (uuid? file-id)) + "Notify the user that there are updates in the libraries used by the + current file, and ask if he wants to update them now." + [] (ptk/reify ::notify-sync-file ptk/WatchEvent (watch [_ state _] - (let [file (dsh/lookup-file state (:current-file-id state)) + (let [file-id (:current-file-id state) + file (dsh/lookup-file state file-id) file-data (get file :data) ignore-until (get file :ignore-sync-until) libraries-need-sync - (filter #(seq (assets-need-sync % file-data ignore-until)) - (vals (get state :files))) + (->> (vals (get state :files)) + (filter #(= (:library-of %) file-id)) + (filter #(seq (assets-need-sync % file-data ignore-until)))) + do-more-info #(modal/show! :libraries-dialog {:starting-tab "updates" :file-id file-id}) @@ -1380,6 +1387,32 @@ ;; --- Link and unlink Files +(defn libraries-fetched + [file-id libraries] + (ptk/reify ::libraries-fetched + ptk/UpdateEvent + (update [_ state] + (update state :files merge + (->> libraries + (map #(assoc % :library-of file-id)) + (d/index-by :id)))))) + +(defn- load-library-file + [file-id library-id] + (ptk/reify ::load-library-file + ptk/WatchEvent + (watch [_ state _] + (let [features (get state :features)] + (rx/merge + (->> (rp/cmd! :get-file {:id library-id :features features}) + (rx/merge-map fpmap/resolve-file) + (rx/map (fn [file] + (libraries-fetched file-id [file])))) + (->> (rp/cmd! :get-file-object-thumbnails {:file-id library-id :tag "component"}) + (rx/map (fn [thumbnails] + (fn [state] + (update state :thumbnails merge thumbnails)))))))))) + (defn link-file-to-library [file-id library-id] (ptk/reify ::attach-library @@ -1389,41 +1422,26 @@ :file-id file-id :library-id library-id}) - ;; NOTE: this event implements UpdateEvent protocol for perform an - ;; optimistic update state for make the UI feel more responsive. - ptk/UpdateEvent - (update [_ state] - (let [libraries (:workspace-shared-files state) - library (d/seek #(= (:id %) library-id) libraries)] - (if library - (update state :files assoc library-id - (-> library - (dissoc :library-summary) - (assoc :library-of file-id))) - state))) - ptk/WatchEvent (watch [_ state _] - (let [libraries (:shared-files state) - library (get libraries library-id) - features (get state :features) - variants-count (-> library :library-summary :components :variants-count)] + (let [libraries (:shared-files state) + library (get libraries library-id) + variants-count (-> library :library-summary :variants count) + + loaded-libraries (->> (dsh/lookup-libraries state) + (remove (fn [[_ lib]] + (or (nil? (:data lib)) + (empty? (:data lib))))) + (map first) + set)] (rx/concat (rx/merge (->> (rp/cmd! :link-file-to-library {:file-id file-id :library-id library-id}) - (rx/ignore)) - (->> (rp/cmd! :get-file {:id library-id :features features}) - (rx/merge-map fpmap/resolve-file) - ;; FIXME: this should call the libraries-fetched event instead of ad-hoc assoc event - (rx/map (fn [file] - (assoc file :library-of file-id))) - (rx/map (fn [file] - (fn [state] - (assoc-in state [:files library-id] file))))) - (->> (rp/cmd! :get-file-object-thumbnails {:file-id library-id :tag "component"}) - (rx/map (fn [thumbnails] - (fn [state] - (update state :thumbnails merge thumbnails)))))) + (rx/merge-map (fn [libraries-to-load] + (as-> libraries-to-load $ + (remove loaded-libraries $) + (conj $ library-id) + (map #(load-library-file file-id %) $)))))) (rx/of (ptk/reify ::attach-library-finished)) (when (pos? variants-count) (->> (rp/cmd! :get-library-usage {:file-id library-id}) diff --git a/frontend/src/app/main/data/workspace/modifiers.cljs b/frontend/src/app/main/data/workspace/modifiers.cljs index 23b751c72e..123f8cee78 100644 --- a/frontend/src/app/main/data/workspace/modifiers.cljs +++ b/frontend/src/app/main/data/workspace/modifiers.cljs @@ -191,20 +191,6 @@ (d/not-empty? position-data) (assoc :position-data position-data)))) -(defn update-grow-type - [shape old-shape] - (let [auto-width? (= :auto-width (:grow-type shape)) - auto-height? (= :auto-height (:grow-type shape)) - - changed-width? (> (mth/abs (- (:width shape) (:width old-shape))) 0.1) - changed-height? (> (mth/abs (- (:height shape) (:height old-shape))) 0.1) - - change-to-fixed? (or (and auto-width? (or changed-height? changed-width?)) - (and auto-height? changed-height?))] - (cond-> shape - change-to-fixed? - (assoc :grow-type :fixed)))) - (defn- set-wasm-props! [objects prev-wasm-props wasm-props] (let [;; Set old value for previous properties @@ -800,9 +786,7 @@ (-> shape (gsh/transform-shape modifiers) (cond-> (d/not-empty? pos-data) - (assoc-position-data pos-data shape)) - (cond-> text-shape? - (update-grow-type shape)))))] + (assoc-position-data pos-data shape)))))] (rx/of (ptk/event ::dwg/move-frame-guides {:ids ids-with-children :modifiers object-modifiers}) (ptk/event ::dwcm/move-frame-comment-threads ids-with-children) @@ -847,23 +831,20 @@ (rx/empty)))))))) ;; Pure function to determine next grow-type for text layers -(defn next-grow-type [current-grow-type resize-direction] +(defn next-grow-type + [current-grow-type scalev] (cond (= current-grow-type :fixed) :fixed - (and (= resize-direction :horizontal) - (= current-grow-type :auto-width)) - :auto-height - - (and (= resize-direction :horizontal) - (= current-grow-type :auto-height)) - :auto-height - - (and (= resize-direction :vertical) + (and (not (mth/close? (:y scalev) 1.0)) (or (= current-grow-type :auto-width) (= current-grow-type :auto-height))) :fixed + (and (not (mth/close? (:x scalev) 1.0)) + (= current-grow-type :auto-width)) + :auto-height + :else current-grow-type)) diff --git a/frontend/src/app/main/data/workspace/notifications.cljs b/frontend/src/app/main/data/workspace/notifications.cljs index 4ecda05c32..9bfc7ac8a2 100644 --- a/frontend/src/app/main/data/workspace/notifications.cljs +++ b/frontend/src/app/main/data/workspace/notifications.cljs @@ -24,6 +24,7 @@ [app.main.data.workspace.layout :as dwly] [app.main.data.workspace.libraries :as dwl] [app.main.data.workspace.texts :as dwt] + [app.main.router :as rt] [app.util.globals :refer [global]] [app.util.mouse :as mse] [app.util.object :as obj] @@ -38,6 +39,7 @@ (declare handle-presence) (declare handle-pointer-update) (declare handle-file-change) +(declare handle-file-deleted) (declare handle-file-restore) (declare handle-library-change) (declare handle-pointer-send) @@ -129,6 +131,7 @@ :disconnect (handle-presence msg) :pointer-update (handle-pointer-update msg) :file-change (handle-file-change msg) + :file-deleted (handle-file-deleted msg) :file-restore (handle-file-restore msg) :library-change (handle-library-change msg) :notification (dc/handle-notification msg) @@ -266,6 +269,18 @@ :redo-changes (vec changes) :undo-changes []}))))) +(defn handle-file-deleted + [{:keys [file-id] :as msg}] + (ptk/reify ::handle-file-deleted + ptk/WatchEvent + (watch [_ state _] + (let [curr-file-id (:current-file-id state) + team-id (:current-team-id state)] + ;; If the deleted file is the currently open one + (when (= file-id curr-file-id) + (rx/of + (rt/nav :dashboard-recent {:team-id team-id}))))))) + (def ^:private schema:handle-file-restore [:map {:title "handle-file-restore"} @@ -316,4 +331,4 @@ (watch [_ state _] (when (contains? (:files state) file-id) (rx/of (dwl/ext-library-changed file-id modified-at revn changes) - (dwl/notify-sync-file file-id)))))) + (dwl/notify-sync-file)))))) diff --git a/frontend/src/app/main/data/workspace/selection.cljs b/frontend/src/app/main/data/workspace/selection.cljs index 0320573b15..16459d7408 100644 --- a/frontend/src/app/main/data/workspace/selection.cljs +++ b/frontend/src/app/main/data/workspace/selection.cljs @@ -131,6 +131,8 @@ ([id toggle?] (dm/assert! (uuid? id)) (ptk/reify ::select-shape + ev/PerformanceEvent + ptk/UpdateEvent (update [_ state] (-> state @@ -248,6 +250,8 @@ (d/ordered-set? ids))) (ptk/reify ::select-shapes + ev/PerformanceEvent + ptk/UpdateEvent (update [_ state] (let [objects (dsh/lookup-page-objects state) @@ -267,6 +271,8 @@ (defn select-all [] (ptk/reify ::select-all + ev/PerformanceEvent + ptk/WatchEvent (watch [_ state _] (let [;; Make the select-all aware of the focus mode; in this @@ -457,7 +463,7 @@ library-data (dsh/lookup-file-data state file-id) changes (-> (pcb/empty-changes it) - (cll/generate-duplicate-changes objects page ids delta libraries library-data file-id) + (cll/generate-duplicate-changes objects page ids delta libraries library-data file-id {:alt-duplication? alt-duplication?}) (cll/generate-duplicate-changes-update-indices objects ids)) tags (or (:tags changes) #{}) diff --git a/frontend/src/app/main/data/workspace/shape_layout.cljs b/frontend/src/app/main/data/workspace/shape_layout.cljs index 2279000ae0..e31b892a8f 100644 --- a/frontend/src/app/main/data/workspace/shape_layout.cljs +++ b/frontend/src/app/main/data/workspace/shape_layout.cljs @@ -235,13 +235,8 @@ [ids] (ptk/reify ::remove-shape-layout ptk/WatchEvent - (watch [_ state _] - (let [objects (dsh/lookup-page-objects state) - ids (->> ids - (remove #(->> % - (get objects) - (ctc/is-variant?)))) - undo-id (js/Symbol)] + (watch [_ _ _] + (let [undo-id (js/Symbol)] (rx/of (dwu/start-undo-transaction undo-id) (dwsh/update-shapes ids #(apply dissoc % layout-keys)) diff --git a/frontend/src/app/main/data/workspace/texts.cljs b/frontend/src/app/main/data/workspace/texts.cljs index 9c92f72f91..ae616f29a6 100644 --- a/frontend/src/app/main/data/workspace/texts.cljs +++ b/frontend/src/app/main/data/workspace/texts.cljs @@ -17,6 +17,7 @@ [app.common.math :as mth] [app.common.types.fills :as types.fills] [app.common.types.modifiers :as ctm] + [app.common.types.shape.layout :as ctl] [app.common.types.text :as txt] [app.common.uuid :as uuid] [app.main.data.event :as ev] @@ -490,11 +491,7 @@ ;; We don't have the fills attribute. It's an old text without color ;; so need to be black (and (nil? (:fills node)) (empty? color-attrs)) - (assoc :fills (txt/get-default-text-fills)) - - ;; Remove duplicates from the fills - :always - (update :fills types.fills/update distinct)))) + (assoc :fills (txt/get-default-text-fills))))) (defn migrate-content [content] @@ -585,12 +582,17 @@ shape (cond-> shape - (and (not-changed? shape-width new-width) (= grow-type :auto-width)) + (and (or (not (ctl/any-layout-immediate-child? objects shape)) + (not (ctl/fill-width? shape))) + (not-changed? shape-width new-width) + (= grow-type :auto-width)) (gsh/transform-shape (ctm/change-dimensions-modifiers shape :width new-width {:ignore-lock? true}))) shape (cond-> shape - (and (not-changed? shape-height new-height) + (and (or (not (ctl/any-layout-immediate-child? objects shape)) + (not (ctl/fill-height? shape))) + (not-changed? shape-height new-height) (or (= grow-type :auto-height) (= grow-type :auto-width))) (gsh/transform-shape (ctm/change-dimensions-modifiers shape :height new-height {:ignore-lock? true})))] @@ -598,7 +600,8 @@ (let [ids (into #{} (filter changed-text?) (keys props))] (rx/of (dwu/start-undo-transaction undo-id) - (dwsh/update-shapes ids update-fn {:reg-objects? true + (dwsh/update-shapes ids update-fn {:with-objects? true + :reg-objects? true :stack-undo? true :ignore-touched true}) (ptk/data-event :layout/update {:ids ids}) diff --git a/frontend/src/app/main/data/workspace/tokens/application.cljs b/frontend/src/app/main/data/workspace/tokens/application.cljs index 1e2a1bc8f1..47caaaf64c 100644 --- a/frontend/src/app/main/data/workspace/tokens/application.cljs +++ b/frontend/src/app/main/data/workspace/tokens/application.cljs @@ -38,6 +38,7 @@ [potok.v2.core :as ptk])) (declare token-properties) +(declare update-layout-item-margin) ;; Events to update the value of attributes with applied tokens --------------------------------------------------------- @@ -115,7 +116,7 @@ (f shape-ids {:color hex :opacity opacity} 0 {:ignore-touched true :page-id page-id})))) -(defn- value->color +(defn value->color "Transform a token color value into penpot color data structure" [color] (when-let [tc (tinycolor/valid-color color)] @@ -433,7 +434,8 @@ :font-weight update-font-weight :letter-spacing update-letter-spacing :text-case update-text-case - :text-decoration update-text-decoration} + :text-decoration update-text-decoration + :line-height update-line-height} value [shape-ids attributes page-id]))))) @@ -498,7 +500,7 @@ (rx/of (st/emit! (ev/event {::ev/name "apply-tokens" :type type - :applyed-to attributes + :applied-to attributes :applied-to-variant any-variant?})) (dwu/start-undo-transaction undo-id) (dwsh/update-shapes shape-ids (fn [shape] @@ -520,7 +522,7 @@ Splits out `shape-ids` into seperate default actions: - Layouts take the `default` update function - Shapes inside layout will only take margin" - [{:keys [token shapes]}] + [{:keys [token shapes attr]}] (ptk/reify ::apply-spacing-token ptk/WatchEvent (watch [_ state _] @@ -533,7 +535,7 @@ (group-by #(if (ctsl/any-layout-immediate-child? objects %) :frame-children :other) shapes)] (rx/of - (apply-token {:attributes attributes + (apply-token {:attributes (or attr attributes) :token token :shape-ids (map :id other) :on-update-shape on-update-shape}) @@ -558,7 +560,7 @@ (update shape :applied-tokens remove-token)))))))) (defn toggle-token - [{:keys [token shapes]}] + [{:keys [token shapes attrs]}] (ptk/reify ::on-toggle-token ptk/WatchEvent (watch [_ _ _] @@ -566,24 +568,53 @@ (get token-properties (:type token)) unapply-tokens? - (cft/shapes-token-applied? token shapes (or all-attributes attributes)) - + (cft/shapes-token-applied? token shapes (or attrs all-attributes attributes)) shape-ids (map :id shapes)] (if unapply-tokens? (rx/of - (unapply-token {:attributes (or all-attributes attributes) + (unapply-token {:attributes (or attrs all-attributes attributes) :token token :shape-ids shape-ids})) (rx/of (case (:type token) :spacing (apply-spacing-token {:token token + :attr attrs :shapes shapes}) - (apply-token {:attributes attributes + (apply-token {:attributes (or attrs attributes) :token token :shape-ids shape-ids :on-update-shape on-update-shape})))))))) + +(defn apply-token-on-selected + [color-operations token] + (ptk/reify ::apply-token-on-selected + ptk/WatchEvent + (watch [_ _ _] + (let [undo-id (js/Symbol)] + (rx/concat + (rx/of (dwu/start-undo-transaction undo-id)) + (->> (rx/from color-operations) + (rx/map + (fn [cop] + (let [shape-ids [(:shape-id cop)]] + (case (:prop cop) + :fill (apply-token {:attributes #{:fill} + :token token + :shape-ids shape-ids + :on-update-shape update-fill}) + :stroke (apply-token {:attributes #{:stroke-color} + :token token + :shape-ids shape-ids + :on-update-shape update-stroke-color}) + ;; Text + :content (apply-token {:attributes #{:fill} + :token token + :shape-ids shape-ids + :on-update-shape update-fill}) + :shadow (rx/empty)))))) + (rx/of (dwu/commit-undo-transaction undo-id))))))) ;; Map token types to different properties used along the cokde --------------------------------------------- ;; FIXME: the values should be lazy evaluated, probably a function, diff --git a/frontend/src/app/main/data/workspace/tokens/errors.cljs b/frontend/src/app/main/data/workspace/tokens/errors.cljs index 75e1649911..c63c78381a 100644 --- a/frontend/src/app/main/data/workspace/tokens/errors.cljs +++ b/frontend/src/app/main/data/workspace/tokens/errors.cljs @@ -23,7 +23,7 @@ :error/fn #(tr "workspace.tokens.invalid-json")} :error.import/invalid-token-name - {:error/code :error.import/invalid-json-data + {:error/code :error.import/invalid-token-name :error/fn #(tr "workspace.tokens.invalid-json-token-name") :error/detail #(tr "workspace.tokens.invalid-json-token-name-detail" %)} @@ -88,6 +88,14 @@ {:error/code :error.style-dictionary/invalid-token-value-font-weight :error/fn #(tr "workspace.tokens.invalid-font-weight-token-value" %)} + :error.style-dictionary/invalid-token-value-typography + {:error/code :error.style-dictionary/invalid-token-value-typography + :error/fn #(tr "workspace.tokens.invalid-token-value-typography" %)} + + :error.style-dictionary/composite-line-height-needs-font-size + {:error/code :error.style-dictionary/composite-line-height-needs-font-size + :error/fn #(tr "workspace.tokens.composite-line-height-needs-font-size" %)} + :error/unknown {:error/code :error/unknown :error/fn #(tr "labels.unknown-error")}}) diff --git a/frontend/src/app/main/data/workspace/tokens/format.cljs b/frontend/src/app/main/data/workspace/tokens/format.cljs new file mode 100644 index 0000000000..e9ce1e84ae --- /dev/null +++ b/frontend/src/app/main/data/workspace/tokens/format.cljs @@ -0,0 +1,33 @@ +(ns app.main.data.workspace.tokens.format + (:require + [cuerdas.core :as str])) + +(def category-dictionary + {:stroke-width "Stroke Width" + :spacing "Spacing" + :sizing "Sizing" + :border-radius "Border Radius" + :x "X" + :y "Y" + :font-size "Font Size" + :font-family "Font Family" + :font-weight "Font Weight" + :line-height "Line Height" + :letter-spacing "Letter Spacing" + :text-case "Text Case" + :text-decoration "Text Decoration"}) + +(defn format-token-value + "Converts token value of any shape to a string." + [token-value] + (cond + (map? token-value) + (->> (map (fn [[k v]] (str "- " (category-dictionary k) ": " (format-token-value v))) token-value) + (str/join "\n") + (str "\n")) + + (sequential? token-value) + (str/join ", " token-value) + + :else + (str token-value))) diff --git a/frontend/src/app/main/data/workspace/tokens/import_export.cljs b/frontend/src/app/main/data/workspace/tokens/import_export.cljs index ae0017ade7..88ae05e5e1 100644 --- a/frontend/src/app/main/data/workspace/tokens/import_export.cljs +++ b/frontend/src/app/main/data/workspace/tokens/import_export.cljs @@ -6,8 +6,8 @@ (ns app.main.data.workspace.tokens.import-export (:require - [app.common.files.helpers :as cfh] [app.common.json :as json] + [app.common.path-names :as cpn] [app.common.types.token :as ctt] [app.common.types.tokens-lib :as ctob] [app.config :as cf] @@ -99,7 +99,7 @@ (defn- drop-parent-directory [path] - (->> (cfh/split-path path) + (->> (cpn/split-path path) (rest) (str/join "/"))) diff --git a/frontend/src/app/main/data/workspace/tokens/library_edit.cljs b/frontend/src/app/main/data/workspace/tokens/library_edit.cljs index d25c60b99d..b5e63979c7 100644 --- a/frontend/src/app/main/data/workspace/tokens/library_edit.cljs +++ b/frontend/src/app/main/data/workspace/tokens/library_edit.cljs @@ -24,7 +24,7 @@ [beicon.v2.core :as rx] [potok.v2.core :as ptk])) -(declare set-selected-token-set-name) +(declare set-selected-token-set-id) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; TOKENS Getters @@ -39,11 +39,11 @@ (defn lookup-token-set ([state] - (when-let [selected (dm/get-in state [:workspace-tokens :selected-token-set-name])] + (when-let [selected (dm/get-in state [:workspace-tokens :selected-token-set-id])] (lookup-token-set state selected))) - ([state name] + ([state id] (some-> (get-tokens-lib state) - (ctob/get-set name)))) + (ctob/get-set id)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Helpers @@ -73,65 +73,62 @@ (let [data (dsh/lookup-file-data state) tokens-lib (get data :tokens-lib)] - (if (and tokens-lib (ctob/get-theme tokens-lib (:group token-theme) (:name token-theme))) + (if (and tokens-lib (ctob/get-theme tokens-lib (ctob/get-id token-theme))) (rx/of (ntf/show {:content (tr "errors.token-theme-already-exists") :type :toast :level :error :timeout 9000})) (let [changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token-theme (:group new-token-theme) - (:name new-token-theme) + (pcb/set-token-theme (ctob/get-id new-token-theme) new-token-theme))] (rx/of (dch/commit-changes changes))))))))) -(defn update-token-theme [[group name] token-theme] +(defn update-token-theme [id token-theme] (ptk/reify ::update-token-theme ptk/WatchEvent (watch [it state _] (let [data (dsh/lookup-file-data state) tokens-lib (get data :tokens-lib)] - (if (and (or (not= group (:group token-theme)) - (not= name (:name token-theme))) - (ctob/get-theme tokens-lib - (:group token-theme) - (:name token-theme))) + (if (and (not= id (ctob/get-id token-theme)) + (ctob/get-theme tokens-lib (ctob/get-id token-theme))) (rx/of (ntf/show {:content (tr "errors.token-theme-already-exists") :type :toast :level :error :timeout 9000})) (let [changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token-theme group name token-theme))] + (pcb/set-token-theme (ctob/get-id token-theme) token-theme))] (rx/of (dch/commit-changes changes)))))))) -(defn toggle-token-theme-active? [group name] +(defn toggle-token-theme-active? [id] (ptk/reify ::toggle-token-theme-active? ptk/WatchEvent (watch [it state _] - (let [tokens-lib (get-tokens-lib state) - prev-active-token-themes (some-> tokens-lib - (ctob/get-active-theme-paths)) + (let [data (dsh/lookup-file-data state) + + tokens-lib (get-tokens-lib state) active-token-themes (some-> tokens-lib - (ctob/toggle-theme-active? group name) + (ctob/toggle-theme-active? id) (ctob/get-active-theme-paths)) active-token-themes' (if (= active-token-themes #{ctob/hidden-theme-path}) active-token-themes (disj active-token-themes ctob/hidden-theme-path)) changes (-> (pcb/empty-changes it) - (pcb/update-active-token-themes active-token-themes' prev-active-token-themes))] + (pcb/with-library-data data) + (pcb/set-active-token-themes active-token-themes'))] (rx/of (dch/commit-changes changes) (dwtp/propagate-workspace-tokens)))))) -(defn delete-token-theme [group theme-name] +(defn delete-token-theme [id] (ptk/reify ::delete-token-theme ptk/WatchEvent (watch [it state _] (let [data (dsh/lookup-file-data state) changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token-theme group theme-name nil))] + (pcb/set-token-theme id nil))] (rx/of (dch/commit-changes changes) (dwtp/propagate-workspace-tokens)))))) @@ -149,7 +146,7 @@ (let [data (dsh/lookup-file-data state) tokens-lib (get data :tokens-lib) set-name (ctob/normalize-set-name set-name)] - (if (and tokens-lib (ctob/get-set tokens-lib set-name)) + (if (and tokens-lib (ctob/get-set-by-name tokens-lib set-name)) (rx/of (ntf/show {:content (tr "errors.token-set-already-exists") :type :toast :level :error @@ -157,8 +154,8 @@ (let [token-set (ctob/make-token-set :name set-name) changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token-set set-name false token-set))] - (rx/of (set-selected-token-set-name set-name) + (pcb/set-token-set (ctob/get-id token-set) token-set))] + (rx/of (set-selected-token-set-id (ctob/get-id token-set)) (dch/commit-changes changes)))))))) (defn rename-token-set-group [set-group-path set-group-fname] @@ -179,32 +176,31 @@ name (ctob/normalize-set-name name (ctob/get-name token-set)) tokens-lib (get data :tokens-lib)] - (if (ctob/get-set tokens-lib name) + (if (ctob/get-set-by-name tokens-lib name) (rx/of (ntf/show {:content (tr "errors.token-set-already-exists") :type :toast :level :error :timeout 9000})) (let [changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/rename-token-set (ctob/get-name token-set) name))] - (rx/of (set-selected-token-set-name name) + (pcb/rename-token-set (ctob/get-id token-set) name))] + (rx/of (set-selected-token-set-id (ctob/get-id token-set)) (dch/commit-changes changes)))))))) (defn duplicate-token-set - [id is-group] + [id] (ptk/reify ::duplicate-token-set ptk/WatchEvent (watch [it state _] (let [data (dsh/lookup-file-data state) - name (ctob/normalize-set-name id) tokens-lib (get data :tokens-lib) suffix (tr "workspace.tokens.duplicate-suffix")] - (when-let [set (ctob/duplicate-set name tokens-lib {:suffix suffix})] + (when-let [token-set (ctob/duplicate-set id tokens-lib {:suffix suffix})] (let [changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token-set (ctob/get-name set) is-group set))] - (rx/of (set-selected-token-set-name name) + (pcb/set-token-set (ctob/get-id token-set) token-set))] + (rx/of (set-selected-token-set-id (ctob/get-id token-set)) (dch/commit-changes changes)))))))) (defn toggle-token-set @@ -245,15 +241,27 @@ (rx/of (dch/commit-changes changes) (dwtp/propagate-workspace-tokens)))))) -(defn delete-token-set-path - [group? path] - (ptk/reify ::delete-token-set-path +(defn delete-token-set + [id] + (ptk/reify ::delete-token-set ptk/WatchEvent (watch [it state _] (let [data (dsh/lookup-file-data state) changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token-set (ctob/join-set-path path) group? nil))] + (pcb/set-token-set id nil))] + (rx/of (dch/commit-changes changes) + (dwtp/propagate-workspace-tokens)))))) + +(defn delete-token-set-group + [path] + (ptk/reify ::delete-token-set-group + ptk/WatchEvent + (watch [it state _] + (let [data (dsh/lookup-file-data state) + changes (-> (pcb/empty-changes it) + (pcb/with-library-data data) + (clt/generate-delete-token-set-group (get-tokens-lib state) path))] (rx/of (dch/commit-changes changes) (dwtp/propagate-workspace-tokens)))))) @@ -316,8 +324,7 @@ "Global" token-set - (-> (ctob/make-token-set :name set-name) - (ctob/add-token token)) + (ctob/make-token-set :name set-name) hidden-theme (ctob/make-hidden-theme) @@ -328,13 +335,13 @@ changes (-> (pcb/empty-changes) (pcb/with-library-data data) - (pcb/set-token-set set-name false token-set) - (pcb/set-token-theme (:group hidden-theme) - (:name hidden-theme) + (pcb/set-token-set (ctob/get-id token-set) token-set) + (pcb/set-token (ctob/get-id token-set) (:id token) token) + (pcb/set-token-theme (ctob/get-id hidden-theme) hidden-theme-with-set) - (pcb/update-active-token-themes #{ctob/hidden-theme-path} #{}))] + (pcb/set-active-token-themes #{ctob/hidden-theme-path}))] (rx/of (dch/commit-changes changes) - (set-selected-token-set-name set-name)))))) + (set-selected-token-set-id (ctob/get-id token-set))))))) (defn create-token [params] @@ -347,7 +354,7 @@ token-type (:type token) changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token (ctob/get-name token-set) + (pcb/set-token (ctob/get-id token-set) (:id token) token))] @@ -365,23 +372,23 @@ (watch [it state _] (let [token-set (lookup-token-set state) data (dsh/lookup-file-data state) - token (ctob/get-token token-set id) + token (-> (get-tokens-lib state) + (ctob/get-token (ctob/get-id token-set) id)) token' (->> (merge token params) (into {}) (ctob/make-token)) token-type (:type token) changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token (ctob/get-name token-set) + (pcb/set-token (ctob/get-id token-set) id token'))] - (rx/of (dch/commit-changes changes) (ptk/data-event ::ev/event {::ev/name "edit-token" :type token-type})))))) (defn delete-token - [set-name token-id] - (dm/assert! (string? set-name)) + [set-id token-id] + (dm/assert! (uuid? set-id)) (dm/assert! (uuid? token-id)) (ptk/reify ::delete-token ptk/WatchEvent @@ -389,7 +396,7 @@ (let [data (dsh/lookup-file-data state) changes (-> (pcb/empty-changes it) (pcb/with-library-data data) - (pcb/set-token set-name token-id nil))] + (pcb/set-token set-id token-id nil))] (rx/of (dch/commit-changes changes)))))) (defn duplicate-token @@ -399,15 +406,17 @@ ptk/WatchEvent (watch [_ state _] (when-let [token-set (lookup-token-set state)] - (when-let [token (ctob/get-token token-set token-id)] - (let [tokens (ctob/get-tokens token-set) - unames (map :name tokens) - suffix (tr "workspace.tokens.duplicate-suffix") - copy-name (cfh/generate-unique-name (:name token) unames :suffix suffix)] - - (rx/of (create-token (assoc token - :id (uuid/next) - :name copy-name))))))))) + (when-let [tokens-lib (get-tokens-lib state)] + (when-let [token (ctob/get-token tokens-lib + (ctob/get-id token-set) + token-id)] + (let [tokens (vals (ctob/get-tokens tokens-lib (ctob/get-id token-set))) + unames (map :name tokens) + suffix (tr "workspace.tokens.duplicate-suffix") + copy-name (cfh/generate-unique-name (:name token) unames :suffix suffix)] + (rx/of (create-token (assoc token + :id (uuid/next) + :name copy-name)))))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; TOKEN UI OPS @@ -449,16 +458,17 @@ (update state :workspace-tokens assoc :token-set-context-menu params) (update state :workspace-tokens dissoc :token-set-context-menu))))) -(defn set-selected-token-set-name - [name] - (ptk/reify ::set-selected-token-set-name +(defn set-selected-token-set-id + [id] + (ptk/reify ::set-selected-token-set-id ptk/UpdateEvent (update [_ state] - (update state :workspace-tokens assoc :selected-token-set-name name)))) + (update state :workspace-tokens assoc :selected-token-set-id id)))) (defn start-token-set-edition [edition-id] - (assert (string? edition-id) "expected a string for `edition-id`") + ;; Path string for edition of a group, UUID for edition of a set. + (assert (or (string? edition-id) (uuid? edition-id)) "expected a string or uuid for `edition-id`") (ptk/reify ::start-token-set-edition ptk/UpdateEvent diff --git a/frontend/src/app/main/data/workspace/tokens/selected_set.cljs b/frontend/src/app/main/data/workspace/tokens/selected_set.cljs index c072ea3642..c3ca926e8c 100644 --- a/frontend/src/app/main/data/workspace/tokens/selected_set.cljs +++ b/frontend/src/app/main/data/workspace/tokens/selected_set.cljs @@ -11,24 +11,28 @@ [app.common.types.tokens-lib :as ctob] [app.main.data.helpers :as dsh])) -(defn- get-selected-token-set-name [state] - (or (get-in state [:workspace-tokens :selected-token-set-name]) +(defn- get-selected-token-set-id [state] + (or (get-in state [:workspace-tokens :selected-token-set-id]) (some-> (dsh/lookup-file-data state) (get :tokens-lib) (ctob/get-sets) (first) - (ctob/get-name)))) + (ctob/get-id)))) (defn get-selected-token-set [state] - (when-let [set-name (get-selected-token-set-name state)] + (when-let [set-id (get-selected-token-set-id state)] (some-> (dsh/lookup-file-data state) (get :tokens-lib) - (ctob/get-set set-name)))) + (ctob/get-set set-id)))) (defn get-token-in-selected-set [state token-id] - (some-> (get-selected-token-set state) - (ctob/get-token token-id))) + (when-let [set-id (get-selected-token-set-id state)] + (some-> (dsh/lookup-file-data state) + (get :tokens-lib) + (ctob/get-token set-id token-id)))) (defn get-all-tokens-in-selected-set [state] - (some-> (get-selected-token-set state) - (ctob/get-tokens-map))) + (when-let [set-id (get-selected-token-set-id state)] + (some-> (dsh/lookup-file-data state) + (get :tokens-lib) + (ctob/get-tokens set-id)))) diff --git a/frontend/src/app/main/data/workspace/transforms.cljs b/frontend/src/app/main/data/workspace/transforms.cljs index 9a1bcaa319..12bec8ca59 100644 --- a/frontend/src/app/main/data/workspace/transforms.cljs +++ b/frontend/src/app/main/data/workspace/transforms.cljs @@ -218,15 +218,10 @@ (gpt/add resize-origin displacement) resize-origin) - ;; Determine resize direction for grow-type logic - resize-direction (cond - (or (= handler :left) (= handler :right)) :horizontal - (or (= handler :top) (= handler :bottom)) :vertical - :else nil) - ;; Calculate new grow-type for text layers - new-grow-type (when (cfh/text-shape? shape) - (dwm/next-grow-type (dm/get-prop shape :grow-type) resize-direction)) + new-grow-type + (when (cfh/text-shape? shape) + (dwm/next-grow-type (dm/get-prop shape :grow-type) scalev)) ;; When the horizontal/vertical scale a flex children with auto/fill ;; we change it too fixed @@ -387,7 +382,19 @@ get-modifier (fn [shape] - (ctm/change-dimensions-modifiers shape attr value)) + (let [modifiers (ctm/change-dimensions-modifiers shape attr value)] + ;; For text shapes, also update grow-type based on the resize + (if (cfh/text-shape? shape) + (let [{sr-width :width sr-height :height} (:selrect shape) + new-width (if (= attr :width) value sr-width) + new-height (if (= attr :height) value sr-height) + scalev (gpt/point (/ new-width sr-width) (/ new-height sr-height)) + current-grow-type (dm/get-prop shape :grow-type) + new-grow-type (dwm/next-grow-type current-grow-type scalev)] + (cond-> modifiers + (not= new-grow-type current-grow-type) + (ctm/change-property :grow-type new-grow-type))) + modifiers))) modif-tree (-> (dwm/build-modif-tree ids objects get-modifier) diff --git a/frontend/src/app/main/data/workspace/variants.cljs b/frontend/src/app/main/data/workspace/variants.cljs index 33b11396ce..2dc9358737 100644 --- a/frontend/src/app/main/data/workspace/variants.cljs +++ b/frontend/src/app/main/data/workspace/variants.cljs @@ -7,15 +7,18 @@ (ns app.main.data.workspace.variants (:require [app.common.data :as d] + [app.common.data.macros :as dm] [app.common.files.changes-builder :as pcb] [app.common.files.helpers :as cfh] [app.common.files.variant :as cfv] [app.common.geom.point :as gpt] [app.common.logic.variant-properties :as clvp] [app.common.logic.variants :as clv] + [app.common.path-names :as cpn] [app.common.types.color :as clr] [app.common.types.component :as ctc] [app.common.types.components-list :as ctkl] + [app.common.types.file :as ctf] [app.common.types.shape.layout :as ctsl] [app.common.types.variant :as ctv] [app.common.uuid :as uuid] @@ -96,9 +99,25 @@ (defn update-property-name "Update the variant property name on the position pos - in all the components with this variant-id" + in all the components with this variant-id and remove the focus" [variant-id pos new-name {:keys [trigger]}] (ptk/reify ::update-property-name + ptk/UpdateEvent + (update [_ state] + (let [file-id (:current-file-id state) + data (dsh/lookup-file-data state) + objects (dsh/lookup-page-objects state) + + related-components (cfv/find-variant-components data objects variant-id)] + + (reduce + (fn [s related-component] + (update-in s + [:files file-id :data :components (:id related-component) :variant-properties] + (fn [props] (mapv #(with-meta % nil) props)))) + state + related-components))) + ptk/WatchEvent (watch [it state _] (let [page-id (:current-page-id state) @@ -259,6 +278,28 @@ (dch/commit-changes changes) (dwu/commit-undo-transaction undo-id)))))) +(defn reorder-variant-poperties + "Reorder properties by moving a property from some position to some space between positions" + [variant-id from-pos to-space-between-pos] + (ptk/reify ::reorder-variant-properties + ptk/WatchEvent + (watch [it state _] + (let [page-id (:current-page-id state) + data (dsh/lookup-file-data state) + objects (-> (dsh/get-page data page-id) + (get :objects)) + + changes (-> (pcb/empty-changes it page-id) + (pcb/with-library-data data) + (pcb/with-objects objects) + (clvp/generate-reorder-variant-poperties variant-id from-pos to-space-between-pos)) + + undo-id (js/Symbol)] + (rx/of + (dwu/start-undo-transaction undo-id) + (dch/commit-changes changes) + (dwu/commit-undo-transaction undo-id)))))) + (defn- set-variant-id "Sets the variant-id on a component" [component-id variant-id] @@ -372,11 +413,11 @@ (:name main)) ;; If there is a prefix, set is as first item of path cpath (-> name - cfh/split-path + cpn/split-path (cond-> (seq prefix) (->> (drop (count prefix)) - (cons (cfh/join-path prefix)) + (cons (cpn/join-path prefix)) vec))) name (first cpath) @@ -520,7 +561,7 @@ objects (-> (dsh/get-page data page-id) (get :objects)) variant-components (cfv/find-variant-components data objects variant-id) - clean-name (cfh/clean-path name) + clean-name (cpn/clean-path name) undo-id (js/Symbol)] (rx/concat @@ -589,7 +630,7 @@ (let [shapes (mapv #(get objects %) ids) rect (bounding-rect shapes) prefix (->> shapes - (mapv #(cfh/split-path (:name %))) + (mapv #(cpn/split-path (:name %))) (common-prefix)) ;; When the common parent is root, add a wrapper add-wrapper? (empty? prefix) @@ -653,3 +694,59 @@ (let [selected (dsh/lookup-selected state)] (rx/of (combine-as-variants selected options)))))) +(defn- variant-switch + "Switch the shape (that must be a variant copy head) for the closest one with the property value passed as parameter" + [shape {:keys [pos val] :as params}] + (ptk/reify ::variant-switch + ptk/WatchEvent + (watch [_ state _] + (let [libraries (dsh/lookup-libraries state) + component-id (:component-id shape) + component (ctf/get-component libraries (:component-file shape) component-id :include-deleted? false)] + ;; If the value is already val, do nothing + (when (not= val (dm/get-in component [:variant-properties pos :value])) + (let [current-page-objects (dsh/lookup-page-objects state) + variant-id (:variant-id component) + component-file-data (dm/get-in libraries [(:component-file shape) :data]) + component-page-objects (-> (dsh/get-page component-file-data (:main-instance-page component)) + (get :objects)) + variant-comps (cfv/find-variant-components component-file-data component-page-objects variant-id) + target-props (-> (:variant-properties component) + (update pos assoc :value val)) + valid-comps (->> variant-comps + (remove #(= (:id %) component-id)) + (filter #(= (dm/get-in % [:variant-properties pos :value]) val)) + (reverse)) + nearest-comp (apply min-key #(ctv/distance target-props (:variant-properties %)) valid-comps) + shape-parents (cfh/get-parents-with-self current-page-objects (:parent-id shape)) + nearest-comp-children (cfh/get-children-with-self component-page-objects (:main-instance-id nearest-comp)) + comps-nesting-loop? (seq? (cfh/components-nesting-loop? nearest-comp-children shape-parents)) + + {:keys [on-error] + :or {on-error rx/throw}} (meta params)] + + ;; If there is no nearest-comp, do nothing + (when nearest-comp + (if comps-nesting-loop? + (do + (on-error) + (rx/empty)) + (rx/of + (dwl/component-swap shape (:component-file shape) (:id nearest-comp) true) + (ev/event {::ev/name "variant-switch" ::ev/origin "workspace:design-tab"})))))))))) + +(defn variants-switch + "Switch each shape (that must be a variant copy head) for the closest one with the property value passed as parameter" + [{:keys [shapes] :as params}] + (ptk/reify ::variants-switch + ptk/WatchEvent + (watch [_ _ _] + (let [ids (into (d/ordered-set) d/xf:map-id shapes) + undo-id (js/Symbol)] + (rx/concat + (rx/of (dwu/start-undo-transaction undo-id)) + (->> (rx/from shapes) + (rx/map #(variant-switch % params))) + (rx/of (dwu/commit-undo-transaction undo-id) + (dws/select-shapes ids))))))) + diff --git a/frontend/src/app/main/data/workspace/viewport.cljs b/frontend/src/app/main/data/workspace/viewport.cljs index d9f523003a..79da7ba477 100644 --- a/frontend/src/app/main/data/workspace/viewport.cljs +++ b/frontend/src/app/main/data/workspace/viewport.cljs @@ -14,6 +14,7 @@ [app.common.geom.rect :as gpr] [app.common.geom.shapes :as gsh] [app.common.math :as mth] + [app.main.data.event :as ev] [app.main.data.helpers :as dsh] [app.util.mouse :as mse] [beicon.v2.core :as rx] @@ -113,6 +114,8 @@ (fn? y)) (ptk/reify ::update-viewport-position + ev/PerformanceEvent + ptk/UpdateEvent (update [_ state] (update-in state [:workspace-local :vbox] diff --git a/frontend/src/app/main/data/workspace/zoom.cljs b/frontend/src/app/main/data/workspace/zoom.cljs index 843ea5f3f9..fbdd24a344 100644 --- a/frontend/src/app/main/data/workspace/zoom.cljs +++ b/frontend/src/app/main/data/workspace/zoom.cljs @@ -14,6 +14,7 @@ [app.common.geom.point :as gpt] [app.common.geom.rect :as grc] [app.common.geom.shapes :as gsh] + [app.main.data.event :as ev] [app.main.data.helpers :as dsh] [app.main.streams :as ms] [app.util.mouse :as mse] @@ -38,6 +39,8 @@ (increase-zoom ::auto)) ([center] (ptk/reify ::increase-zoom + ev/PerformanceEvent + ptk/UpdateEvent (update [_ state] (let [center (if (= center ::auto) @ms/mouse-position center)] @@ -49,6 +52,8 @@ (decrease-zoom ::auto)) ([center] (ptk/reify ::decrease-zoom + ev/PerformanceEvent + ptk/UpdateEvent (update [_ state] (let [center (if (= center ::auto) @ms/mouse-position center)] @@ -60,6 +65,8 @@ (set-zoom nil scale)) ([center scale] (ptk/reify ::set-zoom + ev/PerformanceEvent + ptk/UpdateEvent (update [_ state] (let [vp (dm/get-in state [:workspace-local :vbox]) diff --git a/frontend/src/app/main/features.cljs b/frontend/src/app/main/features.cljs index 314cbdbec1..130549451d 100644 --- a/frontend/src/app/main/features.cljs +++ b/frontend/src/app/main/features.cljs @@ -125,5 +125,4 @@ (wasm/initialize false)) (log/inf :hint "initialized" - :enabled (str/join "," features) - :runtime (str/join "," (:features-runtime state))))))) + :enabled (str/join " " features)))))) diff --git a/frontend/src/app/main/fonts.cljs b/frontend/src/app/main/fonts.cljs index 247d53c3c7..f186f5b774 100644 --- a/frontend/src/app/main/fonts.cljs +++ b/frontend/src/app/main/fonts.cljs @@ -23,7 +23,7 @@ [okulary.core :as l] [promesa.core :as p])) -(log/set-level! :info) +(log/set-level! :debug) (def google-fonts (preload-gfonts "fonts/gfonts.2025.05.19.json")) @@ -121,11 +121,11 @@ (defmethod load-font :default [{:keys [backend] :as font}] - (log/warn :msg "no implementation found for" :backend backend)) + (log/wrn :msg "no implementation found for" :backend backend)) (defmethod load-font :builtin [{:keys [id ::on-loaded] :as font}] - (log/debug :hint "load-font" :font-id id :backend "builtin") + (log/dbg :hint "load-font" :font-id id :backend "builtin") (when (fn? on-loaded) (on-loaded id))) @@ -157,7 +157,7 @@ (defmethod load-font :google [{:keys [id ::on-loaded] :as font}] (when (exists? js/window) - (log/info :hint "load-font" :font-id id :backend "google") + (log/dbg :hint "load-font" :font-id id :backend "google") (let [url (generate-gfonts-url font)] (->> (fetch-gfont-css url) (rx/map process-gfont-css) @@ -197,7 +197,7 @@ (defmethod load-font :custom [{:keys [id ::on-loaded] :as font}] (when (exists? js/window) - (log/info :hint "load-font" :font-id id :backend "custom") + (log/dbg :hint "load-font" :font-id id :backend "custom") (let [css (generate-custom-font-css font)] (add-font-css! id css) (when (fn? on-loaded) @@ -210,7 +210,7 @@ (defn ensure-loaded! ([font-id] (ensure-loaded! font-id nil)) ([font-id variant-id] - (log/debug :action "try-ensure-loaded!" :font-id font-id :variant-id variant-id) + (log/dbg :action "try-ensure-loaded!" :font-id font-id :variant-id variant-id) (if-not (exists? js/window) ;; If we are in the worker environment, we just mark it as loaded ;; without really loading it. diff --git a/frontend/src/app/main/refs.cljs b/frontend/src/app/main/refs.cljs index 74b509ff6b..f699ce20f1 100644 --- a/frontend/src/app/main/refs.cljs +++ b/frontend/src/app/main/refs.cljs @@ -84,6 +84,9 @@ (l/derived :shared-files st/state)) (defn select-libraries + "Find between all the given files, those who are libraries of the file-id. + Also include the file-id file itself. + Return a map of id -> library." [files file-id] (persistent! (reduce-kv (fn [result id file] @@ -437,18 +440,18 @@ (l/derived (d/nilf ctob/get-theme-groups) tokens-lib)) (defn workspace-token-theme - [group name] + [id] (l/derived (fn [lib] (when lib - (ctob/get-theme lib group name))) + (ctob/get-theme lib id))) tokens-lib)) (def workspace-token-theme-tree-no-hidden (l/derived (fn [lib] (or (some-> lib - (ctob/delete-theme ctob/hidden-theme-group ctob/hidden-theme-name) + (ctob/delete-theme ctob/hidden-theme-id) (ctob/get-theme-tree)) [])) tokens-lib)) @@ -459,8 +462,8 @@ (def workspace-token-themes-no-hidden (l/derived #(remove ctob/hidden-theme? %) workspace-token-themes)) -(def selected-token-set-name - (l/derived (l/key :selected-token-set-name) workspace-tokens)) +(def selected-token-set-id + (l/derived (l/key :selected-token-set-id) workspace-tokens)) (def workspace-ordered-token-sets (l/derived #(or (some-> % ctob/get-sets) []) tokens-lib)) diff --git a/frontend/src/app/main/store.cljs b/frontend/src/app/main/store.cljs index 949e3b77e9..6bd199daec 100644 --- a/frontend/src/app/main/store.cljs +++ b/frontend/src/app/main/store.cljs @@ -11,6 +11,7 @@ [app.util.timers :as tm] [beicon.v2.core :as rx] [beicon.v2.operators :as rxo] + [cuerdas.core :as str] [okulary.core :as l] [potok.v2.core :as ptk])) @@ -28,6 +29,28 @@ (def on-event identity) (def ^:dynamic *debug-events* false) +(def ^:dynamic *debug-events-time* false) + +(def current-measure (atom nil)) + +(defn measure-time-to-render [event] + (if @current-measure + (swap! current-measure conj event) + + (let [start (js/performance.now)] + (reset! current-measure [event]) + + (tm/raf + #(js/scheduler.postTask + (fn [] + (let [time (- (js/performance.now) start)] + ;; Only print sets that last over 1second + (when (> time 1000) + (println + (str time "|" (str/join "," @current-measure))))) + (reset! current-measure nil)) + + #js {"priority" "user-blocking"}))))) ;; Only created in development build (when *assert* @@ -38,6 +61,8 @@ :app.main.data.workspace.selection/change-hover-state}) (set! on-event (fn [e] + (when (and *debug-events-time* (ptk/event? e)) + (measure-time-to-render (ptk/type e))) (when (and *debug-events* (ptk/event? e) (not (debug-exclude-events (ptk/type e)))) diff --git a/frontend/src/app/main/ui/alert.scss b/frontend/src/app/main/ui/alert.scss index 6955de2517..f50ee50d41 100644 --- a/frontend/src/app/main/ui/alert.scss +++ b/frontend/src/app/main/ui/alert.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -19,11 +19,11 @@ } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include headlineMediumTypography; + @include deprecated.headlineMediumTypography; color: var(--modal-title-foreground-color); } @@ -32,8 +32,8 @@ } .modal-content { - @include bodyLargeTypography; - margin-bottom: $s-24; + @include deprecated.bodyLargeTypography; + margin-bottom: deprecated.$s-24; } .action-buttons { @@ -55,7 +55,7 @@ .modal-scd-msg, .modal-subtitle, .modal-msg { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); line-height: 1.5; } diff --git a/frontend/src/app/main/ui/auth.scss b/frontend/src/app/main/ui/auth.scss index 7a4d67c72d..762430314b 100644 --- a/frontend/src/app/main/ui/auth.scss +++ b/frontend/src/app/main/ui/auth.scss @@ -4,17 +4,17 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .auth-section { position: relative; align-items: center; background: var(--panel-background-color); display: grid; - gap: $s-32; + gap: deprecated.$s-32; grid-template-columns: repeat(5, 1fr); height: 100%; - padding: $s-32; + padding: deprecated.$s-32; width: 100%; overflow: auto; @@ -36,13 +36,13 @@ .logo-container { position: absolute; - top: $s-20; - left: $s-20; + top: deprecated.$s-20; + left: deprecated.$s-20; display: flex; justify-content: flex-start; - width: $s-120; - height: $s-96; - margin-block-end: $s-52; + width: deprecated.$s-120; + height: deprecated.$s-96; + margin-block-end: deprecated.$s-52; } .login-illustration { @@ -67,18 +67,18 @@ grid-column: 4 / 6; display: grid; grid-template-rows: 1fr auto; - gap: $s-24; + gap: deprecated.$s-24; height: fit-content; - max-width: $s-412; - padding-block-end: $s-8; + max-width: deprecated.$s-412; + padding-block-end: deprecated.$s-8; position: relative; width: 100%; } .logo-btn { svg { - width: $s-120; - height: $s-40; + width: deprecated.$s-120; + height: deprecated.$s-40; fill: var(--main-icon-foreground); } } diff --git a/frontend/src/app/main/ui/auth/common.scss b/frontend/src/app/main/ui/auth/common.scss index 872ce47ddb..e8605871d8 100644 --- a/frontend/src/app/main/ui/auth/common.scss +++ b/frontend/src/app/main/ui/auth/common.scss @@ -4,18 +4,18 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .auth-form-wrapper { width: 100%; padding-block-end: 0; display: grid; - gap: $s-12; + gap: deprecated.$s-12; form { display: flex; flex-direction: column; - gap: $s-12; - margin-top: $s-12; + gap: deprecated.$s-12; + margin-top: deprecated.$s-12; } } @@ -23,7 +23,7 @@ width: 100%; padding-block-end: 0; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .separator { @@ -32,57 +32,57 @@ } .auth-title { - @include bigTitleTipography; + @include deprecated.bigTitleTipography; color: var(--title-foreground-color-hover); } .auth-subtitle { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; color: var(--title-foreground-color); } .auth-tagline { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; margin: 0; color: var(--title-foreground-color); } .form-field { --input-width: 100%; - --input-height: #{$s-40}; + --input-height: #{deprecated.$s-40}; --input-min-width: 100%; } .buttons-stack { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .login-button, .login-ldap-button { @extend .button-primary; - @include uppercaseTitleTipography; - height: $s-40; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-40; width: 100%; } .go-back { display: flex; flex-direction: column; - gap: $s-12; + gap: deprecated.$s-12; padding: 0; border-block-start: none; } .go-back-link { @extend .button-secondary; - @include uppercaseTitleTipography; - height: $s-40; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-40; } .links { display: grid; - gap: $s-24; + gap: deprecated.$s-24; } .register, @@ -91,7 +91,7 @@ .demo-account { display: flex; justify-content: center; - gap: $s-8; + gap: deprecated.$s-8; padding: 0; } @@ -99,7 +99,7 @@ .account-text, .recovery-text, .demo-account-text { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; text-align: right; color: var(--title-foreground-color); } @@ -109,7 +109,7 @@ .recovery-link, .forgot-pass-link, .demo-account-link { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; text-align: left; background-color: transparent; border: none; @@ -130,22 +130,22 @@ .register-btn, .recover-btn { @extend .button-primary; - @include uppercaseTitleTipography; - height: $s-40; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-40; width: 100%; } .login-btn { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; display: flex; align-items: center; - gap: $s-6; + gap: deprecated.$s-6; width: 100%; - border-radius: $br-8; + border-radius: deprecated.$br-8; background-color: var(--button-secondary-background-color-rest); color: var(--button-foreground-color-focus); span { - padding-block-start: $s-2; + padding-block-start: deprecated.$s-2; } &:hover { @@ -156,5 +156,5 @@ .auth-buttons { display: flex; - gap: $s-8; + gap: deprecated.$s-8; } diff --git a/frontend/src/app/main/ui/auth/recovery.scss b/frontend/src/app/main/ui/auth/recovery.scss index 743034faad..a89055b061 100644 --- a/frontend/src/app/main/ui/auth/recovery.scss +++ b/frontend/src/app/main/ui/auth/recovery.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "./common.scss"; .submit-btn { - margin-top: $s-16; + margin-top: deprecated.$s-16; } diff --git a/frontend/src/app/main/ui/auth/recovery_request.scss b/frontend/src/app/main/ui/auth/recovery_request.scss index 8b384e59dd..c774a575a3 100644 --- a/frontend/src/app/main/ui/auth/recovery_request.scss +++ b/frontend/src/app/main/ui/auth/recovery_request.scss @@ -4,16 +4,16 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "./common.scss"; .fields-row { - margin-bottom: $s-8; + margin-bottom: deprecated.$s-8; } .notification-text-email { - @include medTitleTipography; - font-size: $fs-20; + @include deprecated.medTitleTipography; + font-size: deprecated.$fs-20; color: var(--register-confirmation-color); - margin-inline: $s-36; + margin-inline: deprecated.$s-36; } diff --git a/frontend/src/app/main/ui/auth/register.scss b/frontend/src/app/main/ui/auth/register.scss index f4fd493a1b..182dfddbaa 100644 --- a/frontend/src/app/main/ui/auth/register.scss +++ b/frontend/src/app/main/ui/auth/register.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "./common.scss"; .accept-terms-and-privacy-wrapper { :global(a) { color: var(--color-foreground-secondary); - font-weight: $fw700; + font-weight: deprecated.$fw700; } } @@ -20,13 +20,13 @@ } .register-form { - gap: $s-24; + gap: deprecated.$s-24; } .register-success { - gap: $s-24; + gap: deprecated.$s-24; .auth-title { - @include medTitleTipography; + @include deprecated.medTitleTipography; } } @@ -34,30 +34,30 @@ fill: var(--main-icon-foreground); display: flex; justify-content: center; - margin-bottom: $s-32; + margin-bottom: deprecated.$s-32; svg { - width: $s-92; - height: $s-92; + width: deprecated.$s-92; + height: deprecated.$s-92; } } .notification-text { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--title-foreground-color); } .notification-text-email { - @include medTitleTipography; - font-size: $fs-20; + @include deprecated.medTitleTipography; + font-size: deprecated.$fs-20; color: var(--register-confirmation-color); - margin-inline: $s-36; + margin-inline: deprecated.$s-36; } .logo-btn { - height: $s-40; + height: deprecated.$s-40; svg { - width: $s-120; - height: $s-40; + width: deprecated.$s-120; + height: deprecated.$s-40; fill: var(--main-icon-foreground); } } @@ -65,20 +65,20 @@ .logo-container { display: flex; justify-content: flex-start; - width: $s-120; - margin-block-end: $s-24; + width: deprecated.$s-120; + margin-block-end: deprecated.$s-24; } .terms-register { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; - gap: $s-4; + gap: deprecated.$s-4; justify-content: center; width: 100%; } .and-text { - border-bottom: $s-1 solid transparent; + border-bottom: deprecated.$s-1 solid transparent; color: var(--title-foreground-color); } diff --git a/frontend/src/app/main/ui/comments.cljs b/frontend/src/app/main/ui/comments.cljs index 920510610b..1ea7ab7985 100644 --- a/frontend/src/app/main/ui/comments.cljs +++ b/frontend/src/app/main/ui/comments.cljs @@ -666,11 +666,12 @@ [:div {:class (stl/css :form-buttons-wrapper)} [:> mentions-button*] - [:> button* {:variant "ghost" - :type "button" - :on-key-down handle-cancel - :on-click on-cancel} - (tr "ds.confirm-cancel")] + (when (some? on-cancel) + [:> button* {:variant "ghost" + :type "button" + :on-key-down handle-cancel + :on-click on-cancel} + (tr "ds.confirm-cancel")]) [:> button* {:variant "primary" :type "button" :on-key-down handle-submit @@ -686,52 +687,39 @@ {::mf/props :obj ::mf/private true} [{:keys [on-submit]}] - (let [show-buttons? (mf/use-state false) - content (mf/use-state "") + (let [content (mf/use-state "") disabled? (or (blank-content? @content) (exceeds-length? @content)) - on-focus + on-cancel (mf/use-fn - #(reset! show-buttons? true)) - - on-blur - (mf/use-fn - #(reset! show-buttons? false)) + #(st/emit! :interrupt)) on-change (mf/use-fn #(reset! content %)) - on-cancel - (mf/use-fn - #(do (reset! content "") - (reset! show-buttons? false))) - on-submit* (mf/use-fn (mf/deps @content) (fn [] (on-submit @content) - (on-cancel)))] + (reset! content "")))] [:div {:class (stl/css :form)} [:> comment-input* {:value @content :placeholder (tr "labels.reply.thread") :autofocus true - :on-blur on-blur - :on-focus on-focus :on-ctrl-enter on-submit* :on-change on-change}] (when (exceeds-length? @content) [:div {:class (stl/css :error-text)} (tr "errors.character-limit-exceeded")]) - (when (or @show-buttons? (seq @content)) - [:> comment-form-buttons* {:on-submit on-submit* - :on-cancel on-cancel - :is-disabled disabled?}])])) + [:> comment-form-buttons* {:on-submit on-submit* + :on-cancel on-cancel + :is-disabled disabled?}]])) (mf/defc comment-edit-form* {::mf/private true} diff --git a/frontend/src/app/main/ui/comments.scss b/frontend/src/app/main/ui/comments.scss index 62cd9977ff..9da4eef616 100644 --- a/frontend/src/app/main/ui/comments.scss +++ b/frontend/src/app/main/ui/comments.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .cursor-grabbing { cursor: grabbing; @@ -23,7 +23,7 @@ } .error-text { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--color-foreground-error); } @@ -31,7 +31,7 @@ color: var(--comment-subtitle-color); display: flex; align-items: center; - gap: $s-6; + gap: deprecated.$s-6; } .location-icon { @@ -39,14 +39,14 @@ } .location-text { - @include textEllipsis; + @include deprecated.textEllipsis; } .author { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; - gap: $s-8; + gap: deprecated.$s-8; } .author-identity { @@ -54,56 +54,56 @@ } .author-fullname { - @include textEllipsis; + @include deprecated.textEllipsis; color: var(--comment-title-color); } .author-timeago { - @include textEllipsis; + @include deprecated.textEllipsis; color: var(--comment-subtitle-color); } .avatar { position: relative; - height: $s-24; - width: $s-24; - border-radius: $br-circle; + height: deprecated.$s-24; + width: deprecated.$s-24; + border-radius: deprecated.$br-circle; } .avatar-lg { - height: $s-32; - width: $s-32; + height: deprecated.$s-32; + width: deprecated.$s-32; } .avatar-read { - border: $s-2 solid var(--color-background-tertiary); + border: deprecated.$s-2 solid var(--color-background-tertiary); } .avatar-unread { - border: $s-2 solid var(--color-accent-primary); + border: deprecated.$s-2 solid var(--color-accent-primary); } .avatar-solved { - border: $s-2 solid var(--color-background-tertiary); + border: deprecated.$s-2 solid var(--color-background-tertiary); } .avatar-image { - border-radius: $br-circle; + border-radius: deprecated.$br-circle; } .avatar-text { - border-radius: $br-circle; + border-radius: deprecated.$br-circle; height: 100%; width: 100%; display: flex; align-items: center; justify-content: center; - font-size: $fs-12; + font-size: deprecated.$fs-12; background-color: var(--color-background-quaternary); } .avatar-mask { - border-radius: $br-circle; + border-radius: deprecated.$br-circle; position: absolute; height: 100%; width: 100%; @@ -116,17 +116,17 @@ } .cover { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; cursor: pointer; display: flex; flex-direction: column; - gap: $s-8; - padding: $s-20; - border-bottom: $s-1 solid var(--color-background-quaternary); + gap: deprecated.$s-8; + padding: deprecated.$s-20; + border-bottom: deprecated.$s-1 solid var(--color-background-quaternary); } .item { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--color-foreground-primary); word-wrap: break-word; overflow-wrap: break-word; @@ -135,9 +135,9 @@ } .replies { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; - gap: $s-8; + gap: deprecated.$s-8; } .replies-total { @@ -148,12 +148,12 @@ } .floating-preview-wrapper { - z-index: $z-index-1; + z-index: deprecated.$z-index-1; position: absolute; user-select: none; cursor: pointer; pointer-events: auto; - transform: translate(calc(-1 * $s-16), calc(-1 * $s-16)); + transform: translate(calc(-1 * deprecated.$s-16), calc(-1 * deprecated.$s-16)); } .floating-preview-bubble { @@ -164,7 +164,7 @@ position: absolute; display: flex; flex-direction: row; - column-gap: $s-12; + column-gap: deprecated.$s-12; --translate-x: 0%; --translate-y: 0%; @@ -184,31 +184,31 @@ .floating-thread-draft-inner-wrapper { display: flex; flex-direction: column; - gap: $s-12; - width: $s-284; - padding: $s-8 $s-12 $s-8 $s-12; + gap: deprecated.$s-12; + width: deprecated.$s-284; + padding: deprecated.$s-8 deprecated.$s-12 deprecated.$s-8 deprecated.$s-12; pointer-events: auto; - border-radius: $br-8; - border: $s-2 solid var(--modal-border-color); + border-radius: deprecated.$br-8; + border: deprecated.$s-2 solid var(--modal-border-color); background-color: var(--comment-modal-background-color); max-height: var(--comment-height); } .floating-preview-displacement { - margin-left: calc(-1 * ($s-12 + $s-2)); - margin-top: calc(-1 * ($s-8 + $s-2)); + margin-left: calc(-1 * (deprecated.$s-12 + deprecated.$s-2)); + margin-top: calc(-1 * (deprecated.$s-8 + deprecated.$s-2)); } .floating-thread-wrapper { position: absolute; display: flex; flex-direction: column; - gap: $s-12; - width: $s-284; - padding: $s-8 $s-12 $s-8 $s-12; + gap: deprecated.$s-12; + width: deprecated.$s-284; + padding: deprecated.$s-8 deprecated.$s-12 deprecated.$s-8 deprecated.$s-12; pointer-events: auto; - border-radius: $br-8; - border: $s-2 solid var(--modal-border-color); + border-radius: deprecated.$br-8; + border: deprecated.$s-2 solid var(--modal-border-color); background-color: var(--comment-modal-background-color); max-height: var(--comment-height); @@ -228,11 +228,11 @@ display: flex; justify-content: space-between; align-items: center; - height: $s-32; + height: deprecated.$s-32; } .floating-thread-header-left { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--color-foreground-primary); } @@ -244,9 +244,9 @@ .floating-thread-main { display: flex; flex-direction: column; - gap: $s-16; + gap: deprecated.$s-16; overflow-y: auto; - padding-bottom: $s-16; + padding-bottom: deprecated.$s-16; } .floating-thread-item-wrapper { @@ -256,15 +256,15 @@ .floating-thread-item { display: flex; flex-direction: column; - gap: $s-8; - @include bodySmallTypography; + gap: deprecated.$s-8; + @include deprecated.bodySmallTypography; } .checkbox-wrapper { - @include flexCenter; - width: $s-16; - height: $s-24; - margin-right: $s-8; + @include deprecated.flexCenter; + width: deprecated.$s-16; + height: deprecated.$s-24; + margin-right: deprecated.$s-8; } .checkbox { @@ -275,8 +275,8 @@ @extend .dropdown-wrapper; position: absolute; width: fit-content; - max-width: $s-200; - right: $s-32; + max-width: deprecated.$s-200; + right: deprecated.$s-32; top: 0; left: unset; } @@ -288,16 +288,16 @@ .form { display: flex; flex-direction: column; - gap: $s-8; - max-height: calc(var(--comment-height) - $s-132); + gap: deprecated.$s-8; + max-height: calc(var(--comment-height) - deprecated.$s-132); } .form-buttons-wrapper { display: grid; grid-template-columns: 1fr auto auto; justify-content: flex-end; - gap: $s-8; - margin-top: $s-8; + gap: deprecated.$s-8; + margin-top: deprecated.$s-8; } .open-mentions-button { @@ -310,17 +310,17 @@ .comments-mentions-choice { background: var(--color-background-tertiary); - border-radius: $s-8; + border-radius: deprecated.$s-8; border: none; display: flex; flex-direction: column; - left: calc(-1 * $s-2); - margin-top: $s-8; + left: calc(-1 * deprecated.$s-2); + margin-top: deprecated.$s-8; overflow: hidden; - padding: $s-2; + padding: deprecated.$s-2; position: absolute; top: 100%; - width: calc(100% + $s-4); + width: calc(100% + deprecated.$s-4); } .comments-mentions-entry { @@ -329,12 +329,12 @@ grid-template-areas: "avatar name" "avatar email"; - grid-template-columns: $s-32 1fr; - column-gap: $s-8; - margin: $s-4 $s-8; - padding: 0 $s-4; - border-radius: $br-8; - border: $s-1 solid transparent; + grid-template-columns: deprecated.$s-32 1fr; + column-gap: deprecated.$s-8; + margin: deprecated.$s-4 deprecated.$s-8; + padding: 0 deprecated.$s-4; + border-radius: deprecated.$br-8; + border: deprecated.$s-1 solid transparent; &:hover { background: var(--color-background-quaternary); @@ -347,13 +347,13 @@ .comments-mentions-name { grid-area: name; - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--color-foreground-primary); } .comments-mentions-email { grid-area: email; - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--color-foreground-secondary); } @@ -364,23 +364,23 @@ } .comment-input { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; white-space: pre-line; background: var(--input-background-color); - border-radius: $br-8; - border: $s-1 solid var(--input-border-color); + border-radius: deprecated.$br-8; + border: deprecated.$s-1 solid var(--input-border-color); color: var(--input-foreground-color); - height: $s-36; - max-width: $s-260; + height: deprecated.$s-36; + max-width: deprecated.$s-260; overflow-y: auto; - padding: $s-8; + padding: deprecated.$s-8; resize: vertical; width: 100%; white-space: pre-wrap; overflow-wrap: break-word; &:focus { - border: $s-1 solid var(--input-border-color-active); + border: deprecated.$s-1 solid var(--input-border-color-active); outline: none; } @@ -402,7 +402,7 @@ } .comments-mentions-empty { - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--color-foreground-secondary); - padding: $s-6 $s-8; + padding: deprecated.$s-6 deprecated.$s-8; } diff --git a/frontend/src/app/main/ui/components/button_link.scss b/frontend/src/app/main/ui/components/button_link.scss index 81b0538d9a..bb58dcc4a5 100644 --- a/frontend/src/app/main/ui/components/button_link.scss +++ b/frontend/src/app/main/ui/components/button_link.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .button { appearance: none; diff --git a/frontend/src/app/main/ui/components/code_block.scss b/frontend/src/app/main/ui/components/code_block.scss index 5f28cd4624..69b4658f0f 100644 --- a/frontend/src/app/main/ui/components/code_block.scss +++ b/frontend/src/app/main/ui/components/code_block.scss @@ -4,15 +4,15 @@ // // Copyright (c) KALEIDOS INC -@use "../ds/typography.scss" as t; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "ds/_borders.scss" as *; .code-display { @include t.use-typography("code-font"); user-select: text; border-radius: $br-8; - margin-top: $s-8; - padding: $s-12; + margin-top: var(--sp-s); + padding: var(--sp-m); background-color: var(--menu-background-color); color: var(--input-foreground-color-active); overflow: auto; diff --git a/frontend/src/app/main/ui/components/color_bullet.scss b/frontend/src/app/main/ui/components/color_bullet.scss index 37b733f34d..52fc242fac 100644 --- a/frontend/src/app/main/ui/components/color_bullet.scss +++ b/frontend/src/app/main/ui/components/color_bullet.scss @@ -4,38 +4,38 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .color-bullet { position: relative; display: flex; flex-direction: row; - width: var(--bullet-size, $s-24); - height: var(--bullet-size, $s-24); - min-width: var(--bullet-size, $s-24); - min-height: var(--bullet-size, $s-24); - border: $s-2 solid var(--color-bullet-border-color); - border-radius: $br-circle; + width: var(--bullet-size, deprecated.$s-24); + height: var(--bullet-size, deprecated.$s-24); + min-width: var(--bullet-size, deprecated.$s-24); + min-height: var(--bullet-size, deprecated.$s-24); + border: deprecated.$s-2 solid var(--color-bullet-border-color); + border-radius: deprecated.$br-circle; &.grid-area { grid-area: color; } &.mini { - width: var(--bullet-size, $s-16); - height: var(--bullet-size, $s-16); - min-width: var(--bullet-size, $s-16); - min-height: var(--bullet-size, $s-16); + width: var(--bullet-size, deprecated.$s-16); + height: var(--bullet-size, deprecated.$s-16); + min-width: var(--bullet-size, deprecated.$s-16); + min-height: var(--bullet-size, deprecated.$s-16); margin-top: 0; border: 1px solid var(--color-bullet-border-color); } &.is-not-library-color { overflow: hidden; - border-radius: $br-8; + border-radius: deprecated.$br-8; & .color-bullet-wrapper { clip-path: none; } &.mini { - border-radius: $br-4; + border-radius: deprecated.$br-4; } } &.is-gradient { @@ -65,27 +65,27 @@ background-color: var(--color-bullet-background-color); } &:hover:not(.read-only) { - border: $s-2 solid var(--color-bullet-border-color-selected); + border: deprecated.$s-2 solid var(--color-bullet-border-color-selected); } } .color-text { - @include twoLineTextEllipsis; - @include bodySmallTypography; - width: $s-80; + @include deprecated.twoLineTextEllipsis; + @include deprecated.bodySmallTypography; + width: deprecated.$s-80; text-align: center; - margin-top: $s-2; - max-height: $s-28; + margin-top: deprecated.$s-2; + max-height: deprecated.$s-28; color: var(--palette-text-color); &.small-text { - @include textEllipsis; - max-height: $s-16; + @include deprecated.textEllipsis; + max-height: deprecated.$s-16; } } .big-text { - @include inspectValue; - @include twoLineTextEllipsis; + @include deprecated.inspectValue; + @include deprecated.twoLineTextEllipsis; line-height: 1; color: var(--palette-text-color); text-align: center; diff --git a/frontend/src/app/main/ui/components/context_menu_a11y.scss b/frontend/src/app/main/ui/components/context_menu_a11y.scss index d15988775d..e0fc29989e 100644 --- a/frontend/src/app/main/ui/components/context_menu_a11y.scss +++ b/frontend/src/app/main/ui/components/context_menu_a11y.scss @@ -4,18 +4,18 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .context-menu { position: relative; visibility: hidden; - opacity: $op-0; - z-index: $z-index-4; + opacity: deprecated.$op-0; + z-index: deprecated.$z-index-4; &.is-open { position: relative; display: block; - opacity: $op-10; + opacity: deprecated.$op-10; visibility: visible; } @@ -24,39 +24,39 @@ } .context-menu-items { - @include menuShadow; + @include deprecated.menuShadow; position: absolute; - top: $s-12; - left: calc(-1 * $s-6); - max-height: $s-480; - min-width: $s-96; - margin: $s-0; - padding: $s-4; - border-radius: $br-8; - border: $s-2 solid var(--panel-border-color); + top: deprecated.$s-12; + left: calc(-1 * deprecated.$s-6); + max-height: deprecated.$s-480; + min-width: deprecated.$s-96; + margin: deprecated.$s-0; + padding: deprecated.$s-4; + border-radius: deprecated.$br-8; + border: deprecated.$s-2 solid var(--panel-border-color); background-color: var(--menu-background-color); overflow: auto; & .separator { - border-top: solid $s-1 var(--color-background-quaternary); + border-top: solid deprecated.$s-1 var(--color-background-quaternary); } &.min-width { - min-width: $s-192; + min-width: deprecated.$s-192; } .context-menu-item { display: flex; .context-menu-action { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; justify-content: flex-start; - height: $s-28; + height: deprecated.$s-28; width: 100%; - padding: $s-6; - border-radius: $br-8; + padding: deprecated.$s-6; + border-radius: deprecated.$br-8; white-space: nowrap; color: var(--menu-foreground-color); @@ -78,7 +78,7 @@ &.submenu-back { display: flex; align-items: center; - font-weight: $fw700; + font-weight: deprecated.$fw700; background: none; border: none; cursor: pointer; @@ -141,7 +141,7 @@ .selected-icon { @extend .button-tag; - border-radius: $br-8; + border-radius: deprecated.$br-8; height: 100%; svg { @@ -153,12 +153,12 @@ } .is-selected .context-menu-action { - padding-left: $s-28; + padding-left: deprecated.$s-28; background-image: url(/images/icons/tick.svg); background-repeat: no-repeat; background-position: 5% 48%; - background-size: $s-12; - font-weight: $fw700; + background-size: deprecated.$s-12; + font-weight: deprecated.$fw700; } } diff --git a/frontend/src/app/main/ui/components/copy_button.scss b/frontend/src/app/main/ui/components/copy_button.scss index ec8e362bb5..0239900938 100644 --- a/frontend/src/app/main/ui/components/copy_button.scss +++ b/frontend/src/app/main/ui/components/copy_button.scss @@ -4,21 +4,21 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .copy-button { - @include buttonStyle; + @include deprecated.buttonStyle; width: 100%; - height: $s-32; - border: $s-1 solid transparent; - border-radius: $br-8; + height: deprecated.$s-32; + border: deprecated.$s-1 solid transparent; + border-radius: deprecated.$br-8; background-color: transparent; box-sizing: border-box; .icon-btn { - @include flexCenter; - height: $s-32; - min-width: $s-28; - width: $s-28; + @include deprecated.flexCenter; + height: deprecated.$s-32; + min-width: deprecated.$s-28; + width: deprecated.$s-28; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -28,7 +28,7 @@ &:hover { background-color: var(--color-background-tertiary); color: var(--color-foreground-primary); - border: $s-1 solid var(--color-background-tertiary); + border: deprecated.$s-1 solid var(--color-background-tertiary); .icon-btn { svg { stroke: var(--button-tertiary-foreground-color-active); @@ -38,7 +38,7 @@ &:focus, &:focus-visible { outline: none; - border: $s-1 solid var(--button-tertiary-border-color-focus); + border: deprecated.$s-1 solid var(--button-tertiary-border-color-focus); background-color: transparent; color: var(--button-tertiary-foreground-color-focus); .icon-btn svg { @@ -48,19 +48,19 @@ } .copy-wrapper { - @include buttonStyle; - @include copyWrapperBase; + @include deprecated.buttonStyle; + @include deprecated.copyWrapperBase; width: 100%; height: fit-content; text-align: left; - border: $s-1 solid transparent; + border: deprecated.$s-1 solid transparent; .icon-btn { - @include flexCenter; + @include deprecated.flexCenter; position: absolute; top: 0; right: 0; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon-small; stroke: var(--button-tertiary-foreground-color-focus); @@ -70,7 +70,7 @@ &:hover { background-color: var(--button-tertiary-background-color-focus); color: var(--button-tertiary-foreground-color-focus); - border: $s-1 solid var(--button-tertiary-background-color-focus); + border: deprecated.$s-1 solid var(--button-tertiary-background-color-focus); .icon-btn svg { display: flex; } @@ -79,7 +79,7 @@ &:focus, &:focus-visible { outline: none; - border: $s-1 solid var(--button-tertiary-border-color-focus); + border: deprecated.$s-1 solid var(--button-tertiary-border-color-focus); background-color: transparent; color: var(--button-tertiary-foreground-color-focus); } diff --git a/frontend/src/app/main/ui/components/editable_label.cljs b/frontend/src/app/main/ui/components/editable_label.cljs index 744804a1eb..95103ddb67 100644 --- a/frontend/src/app/main/ui/components/editable_label.cljs +++ b/frontend/src/app/main/ui/components/editable_label.cljs @@ -7,29 +7,15 @@ (ns app.main.ui.components.editable-label (:require-macros [app.main.style :as stl]) (:require - [app.common.data.macros :as dm] [app.main.constants :refer [max-input-length]] - [app.main.ui.icons :as deprecated-icon] [app.util.dom :as dom] [app.util.keyboard :as kbd] [app.util.timers :as timers] [rumext.v2 :as mf])) -(mf/defc editable-label - {::mf/wrap-props false} - [props] - (let [value (unchecked-get props "value") - on-change (unchecked-get props "on-change") - on-cancel (unchecked-get props "on-cancel") - editing? (unchecked-get props "editing") - dbl-click? (unchecked-get props "disable-dbl-click") - class (unchecked-get props "class") - tooltip (unchecked-get props "tooltip") - display-value (unchecked-get props "display-value") - - - final-class (dm/str class " " (stl/css :editable-label)) - input-ref (mf/use-ref nil) +(mf/defc editable-label* + [{:keys [value class-input class-label is-editing tooltip display-value on-change on-cancel]}] + (let [input-ref (mf/use-ref nil) internal-editing* (mf/use-state false) internal-editing? (deref internal-editing*) @@ -63,14 +49,6 @@ (when (fn? on-cancel) (on-cancel)))) - - on-dbl-click - (mf/use-fn - (mf/deps dbl-click? start-edition) - (fn [_] - (when-not dbl-click? - (start-edition)))) - on-key-up (mf/use-fn (mf/deps cancel-edition accept-edition) @@ -82,26 +60,18 @@ (kbd/enter? event) (accept-edition))))] - (mf/with-effect [editing? internal-editing? start-edition] - (when (and editing? (not internal-editing?)) + (mf/with-effect [is-editing internal-editing? start-edition] + (when (and is-editing (not internal-editing?)) (start-edition))) (if ^boolean internal-editing? - [:div {:class final-class} - [:input - {:class (stl/css :editable-label-input) - :ref input-ref - :default-value value - :on-key-up on-key-up - :on-double-click on-dbl-click - :max-length max-input-length - :on-blur cancel-edition}] + [:input {:class [(stl/css :editable-label-input) class-input] + :ref input-ref + :default-value value + :on-key-up on-key-up + :max-length max-input-length + :on-blur cancel-edition}] - [:span {:class (stl/css :editable-label-close) - :on-click cancel-edition} - deprecated-icon/delete-text]] - - [:span {:class final-class - :title tooltip - :on-double-click on-dbl-click} + [:span {:class [(stl/css :editable-label-text) class-label] + :title tooltip} display-value]))) diff --git a/frontend/src/app/main/ui/components/editable_label.scss b/frontend/src/app/main/ui/components/editable_label.scss index a8c3991589..29a57d551d 100644 --- a/frontend/src/app/main/ui/components/editable_label.scss +++ b/frontend/src/app/main/ui/components/editable_label.scss @@ -4,34 +4,26 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/colors.scss" as *; +@use "ds/typography.scss" as t; .editable-label-input { - @include textEllipsis; - @include bodySmallTypography; - @include removeInputStyle; - flex-grow: 1; - height: $s-28; - max-width: calc(var(--parent-size) - (var(--depth) * var(--layer-indentation-size))); + @include t.use-typography("body-small"); + outline: none; + width: 100%; + height: 100%; margin: 0; - padding-left: $s-6; - border-radius: $br-4; - border: $s-1 solid var(--input-border-color-active); - color: var(--input-foreground-color-active); + padding: 0 var(--sp-s); + border: $b-1 solid var(--color-accent-primary); + color: var(--color-foreground-primary); + background: var(--color-background-primary); } -.editable-label.is-hidden { - display: none; -} - -.editable-label-close { - cursor: pointer; - - svg { - @extend .button-icon; - height: $s-12; - width: $s-12; - stroke: var(--icon-foreground); - margin: 0; - } +.editable-label-text { + @include t.use-typography("body-small"); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } diff --git a/frontend/src/app/main/ui/components/editable_select.scss b/frontend/src/app/main/ui/components/editable_select.scss index 6edb393932..16962b6d22 100644 --- a/frontend/src/app/main/ui/components/editable_select.scss +++ b/frontend/src/app/main/ui/components/editable_select.scss @@ -4,22 +4,22 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .editable-select { @extend .asset-element; margin: 0; padding: 0; - border: $s-1 solid var(--input-border-color); + border: deprecated.$s-1 solid var(--input-border-color); position: relative; display: flex; - height: $s-32; + height: deprecated.$s-32; width: 100%; - padding: $s-8; - border-radius: $br-8; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; cursor: pointer; .dropdown-button { - @include flexCenter; + @include deprecated.flexCenter; svg { @extend .button-icon-small; transform: rotate(90deg); @@ -29,10 +29,10 @@ .custom-select-dropdown { @extend .dropdown-wrapper; - max-height: $s-320; + max-height: deprecated.$s-320; .separator { margin: 0; - height: $s-12; + height: deprecated.$s-12; } .dropdown-element { @extend .dropdown-element-base; @@ -43,7 +43,7 @@ } .check-icon { - @include flexCenter; + @include deprecated.flexCenter; svg { @extend .button-icon-small; visibility: hidden; diff --git a/frontend/src/app/main/ui/components/forms.scss b/frontend/src/app/main/ui/components/forms.scss index 61960d2609..6a81a0fcb9 100644 --- a/frontend/src/app/main/ui/components/forms.scss +++ b/frontend/src/app/main/ui/components/forms.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; // INPUT .input-wrapper { @@ -15,33 +15,33 @@ position: relative; &.valid { input { - border: $s-1 solid var(--input-border-color-success); + border: deprecated.$s-1 solid var(--input-border-color-success); @extend .disabled-input; &:hover, &:focus { - border: $s-1 solid var(--input-border-color-success); + border: deprecated.$s-1 solid var(--input-border-color-success); } } } &.invalid { input { - border: $s-1 solid var(--input-border-color-error); + border: deprecated.$s-1 solid var(--input-border-color-error); @extend .disabled-input; &:hover, &:focus { - border: $s-1 solid var(--input-border-color-error); + border: deprecated.$s-1 solid var(--input-border-color-error); } } } &.valid .help-icon, &.invalid .help-icon { - right: $s-40; + right: deprecated.$s-40; } } .input-with-label-form { - @include flexColumn; - gap: $s-8; + @include deprecated.flexColumn; + gap: deprecated.$s-8; justify-content: flex-start; align-items: flex-start; height: 100%; @@ -57,12 +57,12 @@ width: 100%; max-width: 100%; height: 100%; - padding: 0 $s-8; + padding: 0 deprecated.$s-8; &:focus { outline: none; - border: $s-1 solid var(--input-border-color-focus); - border-radius: $br-8; + border: deprecated.$s-1 solid var(--input-border-color-focus); + border-radius: deprecated.$br-8; } } @@ -73,7 +73,7 @@ input:-webkit-autofill:active { -webkit-text-fill-color: var(--input-foreground-color-active); -webkit-box-shadow: inset 0 0 20px 20px var(--input-background-color); - border: $s-1 solid var(--input-border-color); + border: deprecated.$s-1 solid var(--input-border-color); -webkit-background-clip: text; transition: background-color 5000s ease-in-out 0s; caret-color: var(--input-foreground-color-active); @@ -82,27 +82,27 @@ .input-and-icon { position: relative; - width: var(--input-width, calc(100% - $s-1)); + width: var(--input-width, calc(100% - deprecated.$s-1)); min-width: var(--input-min-width); - height: var(--input-height, $s-32); + height: var(--input-height, deprecated.$s-32); } .help-icon { cursor: pointer; position: absolute; - right: $s-16; - top: calc(50% - $s-8); + right: deprecated.$s-16; + top: calc(50% - deprecated.$s-8); svg { @extend .button-icon-small; stroke: var(--color-foreground-secondary); - width: $s-16; - height: $s-16; + width: deprecated.$s-16; + height: deprecated.$s-16; } } .invalid-icon { - width: $s-16; - height: $s-16; + width: deprecated.$s-16; + height: deprecated.$s-16; background: var(--input-border-color-error); border-radius: 50%; display: flex; @@ -110,28 +110,28 @@ justify-content: center; position: absolute; right: var(--input-icon-padding); - top: calc(50% - $s-8); + top: calc(50% - deprecated.$s-8); svg { - width: $s-12; - height: $s-12; + width: deprecated.$s-12; + height: deprecated.$s-12; stroke: var(--input-background-color); } } .valid-icon { - width: $s-16; - height: $s-16; + width: deprecated.$s-16; + height: deprecated.$s-16; background: var(--input-border-color-success); border-radius: 50%; display: flex; align-items: center; justify-content: center; position: absolute; - right: $s-16; - top: calc(50% - $s-8); + right: deprecated.$s-16; + top: calc(50% - deprecated.$s-8); svg { - width: $s-12; - height: $s-12; + width: deprecated.$s-12; + height: deprecated.$s-12; fill: var(--input-border-color-success); stroke: var(--input-background-color); } @@ -140,25 +140,25 @@ .error { color: var(--input-border-color-error); width: 100%; - font-size: $fs-14; + font-size: deprecated.$fs-14; } .hint { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; width: 99%; - margin-block-start: $s-8; + margin-block-start: deprecated.$s-8; color: var(--modal-text-foreground-color); } .checkbox { @extend .input-checkbox; .checkbox-label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; flex-direction: row-reverse; - gap: $s-6; - min-height: $s-32; + gap: deprecated.$s-6; + min-height: deprecated.$s-32; cursor: pointer; span { @extend .checkbox-icon; @@ -181,23 +181,23 @@ // SELECT .custom-select { @extend .select-wrapper; - height: $s-32; + height: deprecated.$s-32; .input-container { - @include flexRow; - height: $s-32; + @include deprecated.flexRow; + height: deprecated.$s-32; width: 100%; - border-radius: $br-8; - border: $s-1 solid var(--input-border-color); + border-radius: deprecated.$br-8; + border: deprecated.$s-1 solid var(--input-border-color); color: var(--input-foreground-color-active); background-color: var(--input-background-color); .main-content { - @include flexColumn; - @include bodySmallTypography; + @include deprecated.flexColumn; + @include deprecated.bodySmallTypography; position: relative; justify-content: center; flex-grow: 1; height: 100%; - padding: $s-8; + padding: deprecated.$s-8; .label { color: var(--input-foreground-color); @@ -211,9 +211,9 @@ } } .icon { - @include flexCenter; - height: $s-32; - width: $s-24; + @include deprecated.flexCenter; + height: deprecated.$s-32; + width: deprecated.$s-24; pointer-events: none; svg { @extend .button-icon-small; @@ -224,40 +224,40 @@ &.disabled { background-color: var(--input-background-color-disabled); - border: $s-1 solid var(--input-border-color-disabled); + border: deprecated.$s-1 solid var(--input-border-color-disabled); color: var(--input-foreground-color-disabled); } &.focus { outline: none; color: var(--input-foreground-color-active); background-color: var(--input-background-color-active); - border: $s-1 solid var(--input-border-color-active); + border: deprecated.$s-1 solid var(--input-border-color-active); } } select { @extend .menu-dropdown; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; box-sizing: border-box; position: absolute; top: 0; left: 0; - min-height: $s-32; + min-height: deprecated.$s-32; height: auto; width: calc(100% - 1px); - padding: 0 $s-12; + padding: 0 deprecated.$s-12; margin: 0; border: none; opacity: 0; - z-index: $z-index-10; + z-index: deprecated.$z-index-10; background-color: transparent; cursor: pointer; option { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--title-foreground-color-hover); background-color: var(--menu-background-color); appearance: none; - height: $s-32; + height: deprecated.$s-32; } } } @@ -267,7 +267,7 @@ @extend .button-primary; &:disabled { @extend .button-disabled; - min-height: $s-32; + min-height: deprecated.$s-32; } } @@ -276,33 +276,33 @@ display: flex; flex-direction: column; position: relative; - min-height: $s-40; - max-height: $s-180; + min-height: deprecated.$s-40; + max-height: deprecated.$s-180; width: 100%; overflow-y: hidden; .inside-input { - @include removeInputStyle; - @include bodySmallTypography; - @include textEllipsis; + @include deprecated.removeInputStyle; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; width: 100%; - max-width: calc(100% - $s-1); - min-height: $s-32; + max-width: calc(100% - deprecated.$s-1); + min-height: deprecated.$s-32; padding-top: 0; - height: $s-32; - padding: $s-8; + height: deprecated.$s-32; + padding: deprecated.$s-8; margin: 0; - border-radius: $br-8; + border-radius: deprecated.$br-8; color: var(--input-foreground-color-active); background-color: var(--input-background-color); &:focus { outline: none; - border: $s-1 solid var(--input-border-color-focus); + border: deprecated.$s-1 solid var(--input-border-color-focus); } &.invalid { - border: $s-1 solid var(--input-border-color-error); + border: deprecated.$s-1 solid var(--input-border-color-error); &:hover, &:focus { - border: $s-1 solid var(--input-border-color-error); + border: deprecated.$s-1 solid var(--input-border-color-error); } } } @@ -312,31 +312,31 @@ .selected-items { display: flex; flex-wrap: wrap; - gap: $s-4; - max-height: $s-136; - padding: $s-4 0; + gap: deprecated.$s-4; + max-height: deprecated.$s-136; + padding: deprecated.$s-4 0; overflow-y: scroll; .selected-item { .around { - @include flexRow; - height: $s-24; + @include deprecated.flexRow; + height: deprecated.$s-24; width: fit-content; - padding-left: $s-6; - border-radius: $br-6; + padding-left: deprecated.$s-6; + border-radius: deprecated.$br-6; background-color: var(--pill-background-color); - border: $s-1 solid var(--pill-background-color); + border: deprecated.$s-1 solid var(--pill-background-color); box-sizing: border-box; .text { - @include bodySmallTypography; - padding-right: $s-8; + @include deprecated.bodySmallTypography; + padding-right: deprecated.$s-8; color: var(--pill-foreground-color); } .icon { - @include flexCenter; - @include buttonStyle; - height: $s-32; - width: $s-24; + @include deprecated.flexCenter; + @include deprecated.buttonStyle; + height: deprecated.$s-32; + width: deprecated.$s-24; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -360,31 +360,31 @@ .custom-radio { display: grid; grid-template-columns: repeat(3, 1fr); - gap: $s-16; + gap: deprecated.$s-16; } .radio-label { - @include bodySmallTypography; - @include flexRow; + @include deprecated.bodySmallTypography; + @include deprecated.flexRow; align-items: flex-start; - gap: $s-8; - min-height: $s-32; + gap: deprecated.$s-8; + min-height: deprecated.$s-32; height: fit-content; - border-radius: $br-8; - padding: $s-8; + border-radius: deprecated.$br-8; + padding: deprecated.$s-8; color: var(--input-foreground-color-rest); - border: $s-1 solid transparent; + border: deprecated.$s-1 solid transparent; &:focus, &:focus-within { outline: none; - border: $s-1 solid var(--input-border-color-active); + border: deprecated.$s-1 solid var(--input-border-color-active); } } .radio-dot { - height: $s-8; - width: $s-8; - border-radius: $br-circle; + height: deprecated.$s-8; + width: deprecated.$s-8; + border-radius: deprecated.$br-circle; background-color: var(--color-background-tertiary); } @@ -395,16 +395,16 @@ .radio-icon { @extend .checkbox-icon; - border-radius: $br-circle; + border-radius: deprecated.$br-circle; } .radio-label-image { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; display: grid; grid-template-rows: auto auto 0px; justify-items: center; gap: 0; - border-radius: $br-8; + border-radius: deprecated.$br-8; margin: 0; border: 1px solid var(--color-background-tertiary); cursor: pointer; @@ -414,28 +414,28 @@ &:focus, &:focus-within { outline: none; - border: $s-1 solid var(--input-border-color-active); + border: deprecated.$s-1 solid var(--input-border-color-active); } .image-text { color: var(--input-foreground-color-rest); display: grid; align-self: center; - margin-bottom: $s-16; - padding-inline: $s-8; + margin-bottom: deprecated.$s-16; + padding-inline: deprecated.$s-8; text-align: center; } } .image-inside { - margin: $s-16; + margin: deprecated.$s-16; background-size: 100%; background-repeat: no-repeat; background-position: center; } .icon-inside { - margin: $s-16; - @include flexCenter; + margin: deprecated.$s-16; + @include deprecated.flexCenter; svg { width: 40px; height: 60px; @@ -447,10 +447,10 @@ //TEXTAREA .textarea-label { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); text-transform: uppercase; - margin-bottom: $s-8; + margin-bottom: deprecated.$s-8; } .textarea-wrapper { diff --git a/frontend/src/app/main/ui/components/radio_buttons.cljs b/frontend/src/app/main/ui/components/radio_buttons.cljs index 53e46834f5..85ec06a793 100644 --- a/frontend/src/app/main/ui/components/radio_buttons.cljs +++ b/frontend/src/app/main/ui/components/radio_buttons.cljs @@ -38,6 +38,7 @@ [:label {:html-for id + :data-testid id :title title :class (stl/css-case :radio-icon true diff --git a/frontend/src/app/main/ui/components/radio_buttons.scss b/frontend/src/app/main/ui/components/radio_buttons.scss index 88c0913387..6ef73339ad 100644 --- a/frontend/src/app/main/ui/components/radio_buttons.scss +++ b/frontend/src/app/main/ui/components/radio_buttons.scss @@ -4,27 +4,27 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .radio-btn-wrapper { - @include flexCenter; - border-radius: $br-8; - height: $s-32; + @include deprecated.flexCenter; + border-radius: deprecated.$br-8; + height: deprecated.$s-32; background-color: var(--input-background-color); - gap: $s-4; + gap: deprecated.$s-4; } .radio-icon { --radio-icon-border-color: var(--radio-btn-border-color); - @include buttonStyle; - @include flexCenter; - @include focusRadio; - height: $s-32; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; + @include deprecated.focusRadio; + height: deprecated.$s-32; flex-grow: 1; - border-radius: $s-8; + border-radius: deprecated.$s-8; box-sizing: border-box; - border: $br-2 solid var(--radio-icon-border-color); + border: deprecated.$br-2 solid var(--radio-icon-border-color); input { display: none; @@ -34,7 +34,7 @@ stroke: var(--radio-btn-foreground-color); } .title-name { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--radio-btn-foreground-color); } &:hover { @@ -59,7 +59,7 @@ .disabled { cursor: default; background-color: transparent; - border: $s-2 solid transparent; + border: deprecated.$s-2 solid transparent; svg { stroke: var(--button-foreground-color-disabled); } @@ -68,7 +68,7 @@ } &:hover { background-color: transparent; - border: $s-2 solid transparent; + border: deprecated.$s-2 solid transparent; svg { stroke: var(--button-foreground-color-disabled); } diff --git a/frontend/src/app/main/ui/components/reorder_handler.scss b/frontend/src/app/main/ui/components/reorder_handler.scss index 692a24c156..499ff56ad5 100644 --- a/frontend/src/app/main/ui/components/reorder_handler.scss +++ b/frontend/src/app/main/ui/components/reorder_handler.scss @@ -8,16 +8,16 @@ cursor: grab; display: flex; flex-direction: column; - height: calc(100% + var(--sp-m)); + block-size: calc(100% + var(--sp-m)); justify-content: center; - left: var(--reorder-left-position, calc(-1 * var(--sp-l))); + inset-inline-start: var(--reorder-left-position, -11px); position: absolute; - top: calc(-1 * (var(--sp-m) / 2)); + inset-block-start: calc(-1 * (var(--sp-m) / 2)); z-index: var(--z-index-panels); } .reorder-icon { - height: var(--sp-l); + block-size: var(--sp-l); pointer-events: none; visibility: var(--reorder-icon-visibility, hidden); --icon-stroke-color: var(--color-foreground-secondary); @@ -28,15 +28,15 @@ border-color: var(--color-accent-primary); margin: 0; position: absolute; - width: 100%; + inline-size: 100%; } .reorder-separator-top { display: var(--reorder-top-display, none); - top: calc(-1 * var(--sp-xxs)); + inset-block-start: calc(-1 * var(--sp-xxs)); } .reorder-separator-bottom { display: var(--reorder-bottom-display, none); - bottom: calc(-1 * var(--sp-xxs)); + inset-block-end: calc(-1 * var(--sp-xxs)); } diff --git a/frontend/src/app/main/ui/components/search_bar.scss b/frontend/src/app/main/ui/components/search_bar.scss index 5dfa161079..96855005a1 100644 --- a/frontend/src/app/main/ui/components/search_bar.scss +++ b/frontend/src/app/main/ui/components/search_bar.scss @@ -4,33 +4,33 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .search-box { display: flex; - gap: $s-2; - height: $s-32; + gap: deprecated.$s-2; + height: deprecated.$s-32; width: 100%; - border-radius: $br-8; + border-radius: deprecated.$br-8; background-color: var(--search-bar-background-color); } .icon { - margin-left: $s-8; - flex: 0 0 $s-16; + margin-left: deprecated.$s-8; + flex: 0 0 deprecated.$s-16; color: var(--color-foreground-primary); } .search-input-wrapper { - @include flexCenter; - height: $s-32; + @include deprecated.flexCenter; + height: deprecated.$s-32; width: 100%; - border: $s-1 solid var(--search-bar-input-border-color); - border-radius: $br-8; + border: deprecated.$s-1 solid var(--search-bar-input-border-color); + border-radius: deprecated.$br-8; background-color: var(--search-bar-input-background-color); &:hover { - border: $s-1 solid var(--input-border-color-hover); + border: deprecated.$s-1 solid var(--input-border-color-hover); background-color: var(--input-background-color-hover); .search-input { background-color: var(--input-background-color-hover); @@ -40,7 +40,7 @@ &:focus-within { background-color: var(--input-background-color-active); color: var(--input-foreground-color-active); - border: $s-1 solid var(--input-border-color-focus); + border: deprecated.$s-1 solid var(--input-border-color-focus); .search-input { background-color: var(--input-background-color-active); } @@ -50,12 +50,12 @@ .search-input { width: 100%; height: 100%; - margin: 0 $s-8 0 $s-4; + margin: 0 deprecated.$s-8 0 deprecated.$s-4; border: 0; background-color: var(--input-background-color); - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--input-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; &:focus { outline: none; } @@ -63,12 +63,12 @@ .clear-icon { @extend .button-tag; - flex: 0 0 $s-32; + flex: 0 0 deprecated.$s-32; height: 100%; color: var(--color-icon-default); } .search-box.has-children .search-input-wrapper { - border-radius: 0 $br-8 $br-8 0; + border-radius: 0 deprecated.$br-8 deprecated.$br-8 0; margin-left: 0; } diff --git a/frontend/src/app/main/ui/components/select.cljs b/frontend/src/app/main/ui/components/select.cljs index 25fd0e8bb3..03e10ff299 100644 --- a/frontend/src/app/main/ui/components/select.cljs +++ b/frontend/src/app/main/ui/components/select.cljs @@ -13,34 +13,99 @@ [app.main.ui.components.dropdown :refer [dropdown]] [app.main.ui.icons :as deprecated-icon] [app.util.dom :as dom] + [app.util.keyboard :as kbd] [rumext.v2 :as mf])) - (defn- as-key-value [item] (if (map? item) [(:value item) (:label item) (:icon item)] [item item item])) +(defn- rotate-index-forward + [index length] + (let [last-index (dec length) + index (if (< index 0) 0 index) + index (inc index) + index (if (> index last-index) 0 index)] + index)) + +(defn- rotate-index-backward + [index length] + (let [last-index (dec length) + index (if (< index 0) 0 index) + index (dec index) + index (if (< index 0) last-index index)] + index)) + +(defn- rotate-option-forward + [options index] + (:value (nth options (rotate-index-forward index (count options))))) + +(defn- rotate-option-backward + [options index length] + (:value (nth options (rotate-index-backward index length)))) + (mf/defc select [{:keys [default-value options class dropdown-class is-open? on-change on-pointer-enter-option on-pointer-leave-option disabled data-direction]}] - (let [label-index (mf/with-memo [options] - (into {} (map as-key-value) options)) + (let [label-index (mf/with-memo [options] + (into {} (map as-key-value) options)) - state* (mf/use-state - {:id (uuid/next) - :is-open? (or is-open? false) - :current-value default-value}) + state* (mf/use-state + #(-> {:id (uuid/next) + :is-open? (or is-open? false) + :current-value default-value})) - state (deref state*) - current-id (get state :id) - current-value (get state :current-value) - current-label (get label-index current-value) - is-open? (:is-open? state) + state (deref state*) + current-id (get state :id) + current-value (get state :current-value) + current-label (get label-index current-value) + is-open? (get state :is-open?) - dropdown-element* (mf/use-ref nil) - dropdown-direction* (mf/use-state "down") - dropdown-direction-change* (mf/use-ref 0) + node-ref (mf/use-ref nil) + + dropdown-direction* + (mf/use-state "down") + + dropdown-direction + (deref dropdown-direction*) + + dropdown-direction-change* + (mf/use-ref 0) + + handle-key-up + (mf/use-fn + (mf/deps disabled options current-value) + (fn [e] + (when-not disabled + (let [options (into [] (remove :disabled) options) + length (count options) + index (d/index-of-pred options #(= (:value %) current-value)) + index (d/nilv index 0)] + + (cond + (or (kbd/left-arrow? e) + (kbd/up-arrow? e)) + (let [value (rotate-option-backward options index length)] + (swap! state* assoc :current-value value) + (when (fn? on-change) + (on-change (dm/str value)))) + + (or (kbd/right-arrow? e) + (kbd/down-arrow? e)) + (let [value (rotate-option-forward options index)] + (swap! state* assoc :current-value value) + (when (fn? on-change) + (on-change (dm/str value)))) + + (or (kbd/enter? e) + (kbd/space? e)) + (swap! state* assoc :is-open? false) + + (kbd/tab? e) + (swap! state* assoc + :is-open? true + :current-value (-> options first :value))))))) open-dropdown (mf/use-fn @@ -49,7 +114,8 @@ (when-not disabled (swap! state* assoc :is-open? true)))) - close-dropdown (mf/use-fn #(swap! state* assoc :is-open? false)) + close-dropdown + (mf/use-fn #(swap! state* assoc :is-open? false)) select-item (mf/use-fn @@ -91,8 +157,8 @@ (reset! dropdown-direction* "down") (mf/set-ref-val! dropdown-direction-change* 0))) - (mf/with-effect [is-open? dropdown-element*] - (let [dropdown-element (mf/ref-val dropdown-element*)] + (mf/with-effect [is-open?] + (let [dropdown-element (mf/ref-val node-ref)] (when (and (= 0 (mf/ref-val dropdown-direction-change*)) dropdown-element) (let [is-outside? (dom/is-element-outside? dropdown-element)] (reset! dropdown-direction* (if is-outside? "up" "down")) @@ -101,7 +167,10 @@ (let [selected-option (first (filter #(= (:value %) default-value) options)) current-icon (:icon selected-option) current-icon-ref (deprecated-icon/key->icon current-icon)] - [:div {:on-click open-dropdown + [:div {:id (dm/str current-id) + :on-click open-dropdown + :on-key-up handle-key-up + :tab-index "0" :role "combobox" :class (dm/str (stl/css-case :custom-select true :disabled disabled @@ -112,23 +181,29 @@ [:span {:class (stl/css :current-label)} current-label] [:span {:class (stl/css :dropdown-button)} deprecated-icon/arrow] [:& dropdown {:show is-open? :on-close close-dropdown} - [:ul {:ref dropdown-element* :data-direction (or data-direction @dropdown-direction*) + [:ul {:ref node-ref + :data-direction (d/nilv data-direction dropdown-direction) :class (dm/str dropdown-class " " (stl/css :custom-select-dropdown))} (for [[index item] (d/enumerate options)] (if (= :separator item) - [:li {:class (dom/classnames (stl/css :separator) true) - :role "option" - :key (dm/str current-id "-" index)}] + [:li {:id (dm/str current-id "-" index) + :key (dm/str current-id "-" index) + :class (stl/css :separator) + :tab-index "-1" + :role "option"}] (let [[value label icon] (as-key-value item) icon-ref (deprecated-icon/key->icon icon)] [:li - {:key (dm/str current-id "-" index) + {:id (dm/str current-id "-" index) + :key (dm/str current-id "-" index) + :tab-index "-1" :role "option" :class (stl/css-case :checked-element true :disabled (:disabled item) :is-selected (= value current-value)) :data-value (pr-str value) + :on-key-up select-item :on-pointer-enter highlight-item :on-pointer-leave unhighlight-item :on-click select-item} diff --git a/frontend/src/app/main/ui/components/select.scss b/frontend/src/app/main/ui/components/select.scss index 386ba4db4f..ba01e42e08 100644 --- a/frontend/src/app/main/ui/components/select.scss +++ b/frontend/src/app/main/ui/components/select.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .custom-select { --border-color: var(--menu-background-color); @@ -12,18 +12,18 @@ --icon-color: var(--icon-foreground); --text-color: var(--menu-foreground-color); @extend .new-scrollbar; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; position: relative; display: grid; grid-template-columns: 1fr auto; align-items: center; - height: $s-32; + height: deprecated.$s-32; width: 100%; margin: 0; - padding: $s-8; - border-radius: $br-8; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--bg-color); - border: $s-1 solid var(--border-color); + border: deprecated.$s-1 solid var(--border-color); color: var(--text-color); cursor: pointer; @@ -53,7 +53,7 @@ } .dropdown-button { - @include flexCenter; + @include deprecated.flexCenter; margin-inline-end: var(--sp-xxs); svg { @extend .button-icon-small; @@ -63,9 +63,9 @@ } .current-icon { - @include flexCenter; - width: $s-24; - padding-right: $s-4; + @include deprecated.flexCenter; + width: deprecated.$s-24; + padding-right: deprecated.$s-4; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -76,23 +76,23 @@ @extend .dropdown-wrapper; .separator { margin: 0; - height: $s-12; - border-block-start: $s-1 solid var(--dropdown-separator-color); + height: deprecated.$s-12; + border-block-start: deprecated.$s-1 solid var(--dropdown-separator-color); } } .custom-select-dropdown[data-direction="up"] { - bottom: $s-32; + bottom: deprecated.$s-32; top: auto; } .checked-element { @extend .dropdown-element-base; .icon { - @include flexCenter; - height: $s-24; - width: $s-24; - padding-right: $s-4; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-24; + padding-right: deprecated.$s-4; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -105,7 +105,7 @@ } .check-icon { - @include flexCenter; + @include deprecated.flexCenter; svg { @extend .button-icon-small; visibility: hidden; @@ -126,5 +126,5 @@ } .current-label { - @include textEllipsis; + @include deprecated.textEllipsis; } diff --git a/frontend/src/app/main/ui/components/tab_container.scss b/frontend/src/app/main/ui/components/tab_container.scss index c01715bd42..aab1d5ffdd 100644 --- a/frontend/src/app/main/ui/components/tab_container.scss +++ b/frontend/src/app/main/ui/components/tab_container.scss @@ -3,11 +3,11 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .tab-container { display: grid; - grid-template-rows: $s-32 1fr; + grid-template-rows: deprecated.$s-32 1fr; height: 100%; } @@ -15,11 +15,11 @@ display: flex; align-items: center; flex-direction: row; - gap: $s-2; - border-radius: $br-8; + gap: deprecated.$s-2; + border-radius: deprecated.$br-8; background: var(--tabs-background-color); cursor: pointer; - font-size: $fs-12; + font-size: deprecated.$fs-12; height: 100%; } @@ -31,15 +31,15 @@ } .tab-container-tab-title { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; width: 100%; - padding: 0 $s-8; + padding: 0 deprecated.$s-8; margin: 0; - border-radius: $br-8; + border-radius: deprecated.$br-8; background-color: transparent; color: var(--tab-foreground-color); - border: $s-2 solid var(--tab-border-color); + border: deprecated.$s-2 solid var(--tab-border-color); min-width: 0; svg { @@ -48,7 +48,7 @@ } .content { - @include headlineSmallTypography; + @include deprecated.headlineSmallTypography; text-align: center; white-space: nowrap; overflow: hidden; @@ -76,18 +76,18 @@ } .collapse-sidebar { - @include flexCenter; - @include buttonStyle; + @include deprecated.flexCenter; + @include deprecated.buttonStyle; height: 100%; - width: $s-24; - min-width: $s-24; - padding: 0 $s-6; - border-radius: $br-5; + width: deprecated.$s-24; + min-width: deprecated.$s-24; + padding: 0 deprecated.$s-6; + border-radius: deprecated.$br-5; svg { - @include flexCenter; - height: $s-16; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-16; + width: deprecated.$s-16; stroke: var(--icon-foreground); transform: rotate(180deg); fill: none; @@ -103,7 +103,7 @@ &.collapsed { svg { transform: rotate(0deg); - padding: 0 0 0 $s-6; + padding: 0 0 0 deprecated.$s-6; } } } @@ -118,6 +118,6 @@ //Firefox doesn't respect scrollbar-gutter @supports (-moz-appearance: none) { .tab-container-content { - padding-right: $s-8; + padding-right: deprecated.$s-8; } } diff --git a/frontend/src/app/main/ui/components/title_bar.scss b/frontend/src/app/main/ui/components/title_bar.scss index 08ec58ebbb..b4b5b84554 100644 --- a/frontend/src/app/main/ui/components/title_bar.scss +++ b/frontend/src/app/main/ui/components/title_bar.scss @@ -4,15 +4,16 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "refactor/common-refactor.scss" as deprecated; .title-bar { display: flex; align-items: center; justify-content: space-between; - height: $s-32; + height: deprecated.$s-32; width: 100%; - min-height: $s-32; + min-height: deprecated.$s-32; --arrow-icon-color: var(--icon-foreground); --title-color: var(--title-foreground-color); } @@ -20,28 +21,29 @@ .title, .title-only, .inspect-title { - @include headlineSmallTypography; display: grid; align-items: center; justify-content: flex-start; grid-auto-flow: column; height: 100%; - min-height: $s-32; + min-height: deprecated.$s-32; overflow: hidden; } .title { + @include t.use-typography("headline-small"); color: var(--title-color); } .title-only { + @include t.use-typography("headline-small"); + --title-bar-title-margin: #{deprecated.$s-8}; color: var(--title-color); - --title-bar-title-margin: #{$s-8}; margin-inline-start: var(--title-bar-title-margin); } .title-only-icon-gap { - --title-bar-title-margin: #{$s-12}; + --title-bar-title-margin: #{deprecated.$s-12}; } .inspect-title { @@ -61,7 +63,7 @@ } .icon-text-btn { - @include buttonStyle; + @include deprecated.buttonStyle; display: flex; align-items: center; flex-grow: 1; @@ -75,8 +77,8 @@ } .icon-btn { - @include buttonStyle; - @include flexCenter; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; &:hover { --arrow-icon-color: var(--icon-foreground-hover); diff --git a/frontend/src/app/main/ui/confirm.scss b/frontend/src/app/main/ui/confirm.scss index 3dfec11100..e517a7b685 100644 --- a/frontend/src/app/main/ui/confirm.scss +++ b/frontend/src/app/main/ui/confirm.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -18,11 +18,11 @@ } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include headlineMediumTypography; + @include deprecated.headlineMediumTypography; color: var(--modal-title-foreground-color); } @@ -31,25 +31,25 @@ } .modal-content { - @include bodyLargeTypography; - margin-bottom: $s-24; + @include deprecated.bodyLargeTypography; + margin-bottom: deprecated.$s-24; } .modal-item-element { - @include flexRow; + @include deprecated.flexRow; } .modal-component-icon { - @include flexCenter; - height: $s-16; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; stroke: var(--color); } } .modal-component-name { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; } .action-buttons { @@ -70,6 +70,6 @@ .modal-scd-msg, .modal-subtitle, .modal-msg { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); } diff --git a/frontend/src/app/main/ui/context.cljs b/frontend/src/app/main/ui/context.cljs index 57672d4f14..59c2631ba6 100644 --- a/frontend/src/app/main/ui/context.cljs +++ b/frontend/src/app/main/ui/context.cljs @@ -24,6 +24,7 @@ (def libraries (mf/create-context nil)) (def design-tokens (mf/create-context nil)) +(def token-inputs (mf/create-context nil)) (def current-scroll (mf/create-context nil)) (def current-zoom (mf/create-context nil)) diff --git a/frontend/src/app/main/ui/dashboard.scss b/frontend/src/app/main/ui/dashboard.scss index 26d4f051a8..994f56a723 100644 --- a/frontend/src/app/main/ui/dashboard.scss +++ b/frontend/src/app/main/ui/dashboard.scss @@ -4,23 +4,23 @@ // // Copyright (c) KALEIDOS INC -@use "refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .dashboard { @extend .new-scrollbar; background-color: var(--app-background); display: grid; - grid-template-columns: $s-40 $s-256 1fr; - grid-template-rows: $s-52 1fr; + grid-template-columns: deprecated.$s-40 deprecated.$s-256 1fr; + grid-template-rows: deprecated.$s-52 1fr; height: 100vh; } .dashboard-content { display: grid; - grid-template-rows: $s-64 1fr; + grid-template-rows: deprecated.$s-64 1fr; position: relative; grid-row: 1 / span 2; - padding: $s-16 $s-16 0 0; + padding: deprecated.$s-16 deprecated.$s-16 0 0; overflow: hidden; width: 100%; } diff --git a/frontend/src/app/main/ui/dashboard/change_owner.scss b/frontend/src/app/main/ui/dashboard/change_owner.scss index 0e960020e0..40e8387274 100644 --- a/frontend/src/app/main/ui/dashboard/change_owner.scss +++ b/frontend/src/app/main/ui/dashboard/change_owner.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -15,11 +15,11 @@ } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } @@ -28,13 +28,13 @@ } .modal-content { - @include bodySmallTypography; - margin-bottom: $s-24; + @include deprecated.bodySmallTypography; + margin-bottom: deprecated.$s-24; } .input-wrapper { @extend .input-with-label; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } .action-buttons { diff --git a/frontend/src/app/main/ui/dashboard/comments.scss b/frontend/src/app/main/ui/dashboard/comments.scss index 4d56ef43dd..c81fd1ee71 100644 --- a/frontend/src/app/main/ui/dashboard/comments.scss +++ b/frontend/src/app/main/ui/dashboard/comments.scss @@ -4,32 +4,32 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .dashboard-comments-section { - @include flexCenter; + @include deprecated.flexCenter; position: relative; - border-radius: $br-8; + border-radius: deprecated.$br-8; } .thread-groups { - height: calc(100% - $s-32); - max-height: $s-440; + height: calc(100% - deprecated.$s-32); + max-height: deprecated.$s-440; overflow: auto; } .thread-group { display: flex; flex-direction: column; - font-size: $fs-12; + font-size: deprecated.$fs-12; } .thread-groups-placeholder { align-items: center; display: flex; flex-direction: column; - font-size: $fs-12; - padding: $s-24; + font-size: deprecated.$fs-12; + padding: deprecated.$s-24; text-align: center; color: var(--color-foreground-secondary); } @@ -37,22 +37,22 @@ .comments-icon { @extend .button-icon; stroke: var(--icon-foreground); - height: $s-24; - width: $s-24; - margin-bottom: $s-24; + height: deprecated.$s-24; + width: deprecated.$s-24; + margin-bottom: deprecated.$s-24; } .comment-button { position: relative; .unread { position: absolute; - width: $s-8; - height: $s-8; - border: $s-2 solid var(--color-background-tertiary); + width: deprecated.$s-8; + height: deprecated.$s-8; + border: deprecated.$s-2 solid var(--color-background-tertiary); border-radius: 50%; background: red; - top: $s-6; - right: $s-6; + top: deprecated.$s-6; + right: deprecated.$s-6; } } @@ -62,18 +62,18 @@ } .dropdown { - @include menuShadow; + @include deprecated.menuShadow; background-color: var(--color-background-tertiary); - border-radius: $br-8; - border: $s-1 solid transparent; - bottom: $s-4; + border-radius: deprecated.$br-8; + border: deprecated.$s-1 solid transparent; + bottom: deprecated.$s-4; height: 40vh; - max-height: $s-480; - min-height: $s-200; + max-height: deprecated.$s-480; + min-height: deprecated.$s-200; position: absolute; overflow: hidden; width: 100%; - z-index: $z-index-4; + z-index: deprecated.$z-index-4; hr { margin: 0; @@ -83,15 +83,15 @@ .header { display: flex; - height: $s-40; + height: deprecated.$s-40; align-items: center; - padding: 0 $s-12; - gap: $s-4; + padding: 0 deprecated.$s-12; + gap: deprecated.$s-4; } .header-title { color: var(--color-foreground-secondary); - font-size: $fs-11; + font-size: deprecated.$fs-11; line-height: 1.28; flex-grow: 1; text-transform: uppercase; @@ -102,7 +102,7 @@ cursor: pointer; } &.mark-all-as-read-button { - border-radius: $s-8; - border: $s-1 solid; + border-radius: deprecated.$s-8; + border: deprecated.$s-1 solid; } } diff --git a/frontend/src/app/main/ui/dashboard/files.scss b/frontend/src/app/main/ui/dashboard/files.scss index 692eed37cd..79f3563168 100644 --- a/frontend/src/app/main/ui/dashboard/files.scss +++ b/frontend/src/app/main/ui/dashboard/files.scss @@ -4,31 +4,31 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "common/refactor/common-dashboard"; .dashboard-container { flex: 1 0 0; - margin-right: $s-16; + margin-right: deprecated.$s-16; overflow-y: auto; width: 100%; - border-top: $s-1 solid var(--color-background-quaternary); + border-top: deprecated.$s-1 solid var(--color-background-quaternary); &.dashboard-projects { user-select: none; } &.dashboard-shared { - width: calc(100vw - $s-320); - margin-right: $s-52; + width: calc(100vw - deprecated.$s-320); + margin-right: deprecated.$s-52; } &.search { - margin-top: $s-12; + margin-top: deprecated.$s-12; } } .new-file { - margin-inline-end: $s-8; + margin-inline-end: deprecated.$s-8; } .menu-icon { @@ -37,5 +37,5 @@ } .placeholder-placement { - margin: $s-16 $s-32; + margin: deprecated.$s-16 deprecated.$s-32; } diff --git a/frontend/src/app/main/ui/dashboard/fonts.scss b/frontend/src/app/main/ui/dashboard/fonts.scss index a49a10cbf7..8a064213df 100644 --- a/frontend/src/app/main/ui/dashboard/fonts.scss +++ b/frontend/src/app/main/ui/dashboard/fonts.scss @@ -4,35 +4,41 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; @use "common/refactor/common-dashboard"; +@use "ds/_utils.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as t; +@use "ds/spacing.scss" as *; +@use "ds/mixins.scss" as *; + .dashboard-fonts { - border-top: $s-1 solid var(--color-background-quaternary); + border-top: $b-1 solid var(--color-background-quaternary); display: flex; flex-direction: column; - padding-left: $s-120; + padding-left: px2rem(120); + padding-bottom: px2rem(120); overflow-y: auto; - padding-bottom: $s-120; .btn-primary { - font-size: $fs-11; - height: $s-32; - min-width: $s-100; + font-size: px2rem(11); + height: $sz-32; + min-width: px2rem(100); } } .dashboard-installed-fonts { - max-width: $s-1000; + max-width: px2rem(1000); width: 100%; display: flex; - margin-top: $s-24; + margin-top: var(--sp-xxl); flex-direction: column; h3 { - font-size: $fs-14; + @include t.use-typography("title-small"); color: var(--color-foreground-secondary); - margin: $s-4; + margin: var(--sp-xs); } .font-item { @@ -41,21 +47,21 @@ } .installed-fonts-header { + @include t.use-typography("headline-small"); align-items: center; color: var(--color-foreground-secondary); display: flex; - font-size: $fs-12; - height: $s-40; - padding-left: $s-24; - text-transform: uppercase; + height: $sz-40; + padding-left: var(--sp-xxl); > .family { - min-width: $s-200; - width: $s-200; + @include twoLineTextEllipsis; + min-width: $sz-200; + width: $sz-200; } > .variants { - padding-left: $s-12; + padding-left: var(--sp-m); } } @@ -65,19 +71,19 @@ justify-content: flex-end; input { + @include t.use-typography("body-medium"); background-color: var(--color-background-tertiary); border-color: transparent; border-radius: $br-8; - border: $s-1 solid transparent; + border: $b-1 solid transparent; color: var(--color-foreground-primary); - font-size: $fs-14; - height: $s-32; + height: $sz-32; margin: 0; - padding: 0 $s-8; - width: $s-152; + padding: 0 var(--sp-s); + width: px2rem(152); &:focus { - outline: $s-1 solid var(--color-accent-primary); + outline: $b-1 solid var(--color-accent-primary); } &::placeholder { color: var(--color-foreground-secondary); @@ -86,67 +92,72 @@ } .font-item { + @include t.use-typography("body-medium"); align-items: center; background-color: var(--color-background-tertiary); border-radius: $br-4; color: var(--color-foreground-secondary); display: flex; - font-size: $fs-14; justify-content: space-between; - margin-top: $s-4; - max-width: $s-1000; - padding: $s-12 $s-24; + margin-top: var(--sp-xs); + max-width: px2rem(1000); + padding: var(--sp-m) var(--sp-xxl); width: 100%; input { - border: $s-1 solid transparent; + @include t.use-typography("body-medium"); + @include textEllipsis; + border: $b-1 solid transparent; margin: 0; - padding: $s-8; + padding: var(--sp-s); background-color: var(--color-background-tertiary); border-radius: $br-8; color: var(--color-foreground-primary); - font-size: $fs-14; &:focus { - outline: $s-1 solid var(--color-accent-primary); + outline: $b-1 solid var(--color-accent-primary); + overflow: visible; + text-overflow: unset; } } > .family { - min-width: $s-200; - width: $s-200; + @include twoLineTextEllipsis; + min-width: $sz-200; + width: $sz-200; } > .filenames { - min-width: $s-200; + @include textEllipsis; + min-width: $sz-200; } > .variants { - font-size: $fs-14; + @include t.use-typography("body-medium"); display: flex; flex-wrap: wrap; flex-grow: 1; - padding-left: $s-16; - gap: $s-6; + padding-left: var(--sp-l); + gap: $sz-6; .variant { display: flex; justify-content: space-between; align-items: center; - padding: $s-8 $s-12; + padding: var(--sp-s) var(--sp-m); cursor: pointer; - gap: $s-4; + gap: var(--sp-xs); .icon { display: flex; align-items: center; justify-content: center; - height: $s-16; - width: $s-16; + height: $sz-16; + width: $sz-16; svg { fill: none; - width: $s-12; - height: $s-12; + width: $sz-12; + height: $sz-12; transform: rotate(45deg); } } @@ -171,32 +182,33 @@ } .filenames { - display: flex; - flex-direction: column; - font-size: $fs-12; + @include t.use-typography("body-small"); + @include textEllipsis; + min-width: $sz-400; + padding-left: var(--sp-xxxl); } .options { display: flex; justify-content: flex-end; - min-width: $s-180; + min-width: px2rem(180); .icon { - width: $s-24; + width: $sz-24; cursor: pointer; display: flex; - margin-left: $s-12; + margin-left: var(--sp-m); justify-content: center; align-items: center; svg { - width: $s-16; - height: $s-16; + width: $sz-16; + height: $sz-16; stroke: var(--color-foreground-secondary); fill: none; } &.failure { - margin-right: $s-12; + margin-right: var(--sp-m); svg { stroke: var(--element-foreground-warning); } @@ -214,46 +226,47 @@ } .dashboard-fonts-upload { - max-width: $s-1000; + max-width: px2rem(1000); width: 100%; display: flex; flex-direction: column; .upload-button { - width: $s-100; + width: px2rem(100); } .btn-secondary { - margin-left: $s-12; + margin-left: var(--sp-m); } } .dashboard-fonts-hero { - font-size: $fs-14; - padding: $s-32 0; - margin-top: $s-80; + @include t.use-typography("body-medium"); + padding: var(--sp-xxxl) 0; + margin-top: px2rem(80); display: flex; justify-content: space-between; .btn-primary { - height: $s-40; + height: $sz-40; width: 100%; } .desc { display: flex; flex-direction: column; - gap: $s-24; + gap: var(--sp-xxl); color: var(--color-background-secondary); - width: $s-500; + width: $sz-500; h2 { color: var(--color-foreground-primary); font-weight: 400; } + p { + @include t.use-typography("body-large"); color: var(--color-foreground-secondary); - font-size: $fs-16; } } @@ -265,24 +278,24 @@ .fonts-placeholder { align-items: center; border-radius: $br-8; - border: $s-1 solid var(--color-background-quaternary); + border: $b-1 solid var(--color-background-quaternary); display: flex; flex-direction: column; - height: $s-160; + height: $sz-160; justify-content: center; - margin-top: $s-16; - max-width: $s-1000; + margin-top: var(--sp-l); + max-width: px2rem(1000); width: 100%; .icon svg { stroke: var(--color-foreground-secondary); fill: none; - width: $s-32; - height: $s-32; + width: $sz-32; + height: $sz-32; } .label { + @include t.use-typography("body-medium"); color: var(--color-foreground-secondary); - font-size: $fs-14; } } diff --git a/frontend/src/app/main/ui/dashboard/grid.scss b/frontend/src/app/main/ui/dashboard/grid.scss index fe58c48252..ae9807214d 100644 --- a/frontend/src/app/main/ui/dashboard/grid.scss +++ b/frontend/src/app/main/ui/dashboard/grid.scss @@ -4,28 +4,28 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; // TODO: Legacy sass variables. We should remove them in favor of DS tokens. $bp-max-1366: "(max-width: 1366px)"; -$thumbnail-default-width: $s-252; // Default width -$thumbnail-default-height: $s-168; // Default width +$thumbnail-default-width: deprecated.$s-252; // Default width +$thumbnail-default-height: deprecated.$s-168; // Default width .dashboard-grid { - font-size: $fs-14; + font-size: deprecated.$fs-14; height: 100%; overflow-y: auto; overflow-x: hidden; - padding: 0 $s-16; + padding: 0 deprecated.$s-16; } .grid-row { display: grid; grid-auto-flow: column; - grid-auto-columns: calc($s-12 + var(--th-width, #{$thumbnail-default-width})); + grid-auto-columns: calc(deprecated.$s-12 + var(--th-width, #{$thumbnail-default-width})); width: 100%; - gap: $s-24; + gap: deprecated.$s-24; } .grid-item { @@ -33,23 +33,23 @@ $thumbnail-default-height: $s-168; // Default width cursor: pointer; display: flex; flex-direction: column; - margin: $s-12 0; + margin: deprecated.$s-12 0; position: relative; text-align: center; a, button { width: 100%; - font-weight: $fw400; + font-weight: deprecated.$fw400; } button { background-color: transparent; border: none; - padding: 0 $s-6; + padding: 0 deprecated.$s-6; } .grid-item-th { - border-radius: $br-8; + border-radius: deprecated.$br-8; text-align: initial; width: var(--th-width, #{$thumbnail-default-width}); height: var(--th-height, #{$thumbnail-default-height}); @@ -62,22 +62,22 @@ $thumbnail-default-height: $s-168; // Default width } &.dragged { - border-radius: $br-4; - outline: $br-4 solid var(--color-accent-primary); + border-radius: deprecated.$br-4; + outline: deprecated.$br-4 solid var(--color-accent-primary); text-align: initial; - width: calc(var(--th-width) + $s-12); + width: calc(var(--th-width) + deprecated.$s-12); height: var(--th-height, #{$thumbnail-default-height}); } &.overlay { - border-radius: $br-4; - border: $s-2 solid var(--color-accent-tertiary); + border-radius: deprecated.$br-4; + border: deprecated.$s-2 solid var(--color-accent-tertiary); height: 100%; opacity: 0; pointer-events: none; position: absolute; width: 100%; - z-index: $z-index-1; + z-index: deprecated.$z-index-1; } &:hover .overlay { @@ -94,28 +94,28 @@ $thumbnail-default-height: $s-168; // Default width .item-info { display: grid; - padding: $s-8; + padding: deprecated.$s-8; text-align: left; width: 100%; - font-size: $fs-12; + font-size: deprecated.$fs-12; h3 { - border: $s-1 solid transparent; + border: deprecated.$s-1 solid transparent; color: var(--color-foreground-primary); - font-size: $fs-16; - font-weight: $fw400; - height: $s-28; + font-size: deprecated.$fs-16; + font-weight: deprecated.$fw400; + height: deprecated.$s-28; line-height: 1.92; - max-width: $s-260; + max-width: deprecated.$s-260; overflow: hidden; - padding-right: $s-8; + padding-right: deprecated.$s-8; padding: 0; text-overflow: ellipsis; white-space: nowrap; width: 100%; @media #{$bp-max-1366} { - max-width: $s-232; + max-width: deprecated.$s-232; } } @@ -125,12 +125,12 @@ $thumbnail-default-height: $s-168; // Default width text-overflow: ellipsis; width: 100%; white-space: nowrap; - max-width: $s-260; + max-width: deprecated.$s-260; &::first-letter { text-transform: capitalize; } @media #{$bp-max-1366} { - max-width: $s-232; + max-width: deprecated.$s-232; } } } @@ -138,12 +138,12 @@ $thumbnail-default-height: $s-168; // Default width .item-badge { background-color: var(--color-accent-primary); border: none; - border-radius: $br-6; + border-radius: deprecated.$br-6; position: absolute; - top: $s-12; - right: $s-12; - height: $s-32; - width: $s-32; + top: deprecated.$s-12; + right: deprecated.$s-12; + height: deprecated.$s-32; + width: deprecated.$s-32; display: flex; align-items: center; justify-content: center; @@ -151,38 +151,38 @@ $thumbnail-default-height: $s-168; // Default width svg { stroke: var(--color-background-secondary); fill: none; - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; } } &.add-file { - border: $s-1 dashed var(--color-foreground-secondary); + border: deprecated.$s-1 dashed var(--color-foreground-secondary); justify-content: center; box-shadow: none; span { color: var(--color-background-primary); - font-size: $fs-14; + font-size: deprecated.$fs-14; } &:hover { background-color: var(--color-foreground-primary); - border: $s-2 solid var(--color-accent-tertiary); + border: deprecated.$s-2 solid var(--color-accent-tertiary); } } } .drag-counter { position: absolute; - top: $s-4; - left: $s-4; - width: $s-32; - height: $s-32; + top: deprecated.$s-4; + left: deprecated.$s-4; + width: deprecated.$s-32; + height: deprecated.$s-32; background-color: var(--color-accent-tertiary); - border-radius: $br-circle; + border-radius: deprecated.$br-circle; color: var(--color-background-secondary); - font-size: $fs-16; + font-size: deprecated.$fs-16; display: flex; justify-content: center; align-items: center; @@ -191,8 +191,8 @@ $thumbnail-default-height: $s-168; // Default width // PROJECTS, ELEMENTS & ICONS GRID .project-th { background-color: transparent; - border-radius: $br-8; - padding-top: $s-6; + border-radius: deprecated.$br-8; + padding-top: deprecated.$s-6; &:hover, &:focus, @@ -208,7 +208,7 @@ $thumbnail-default-height: $s-168; // Default width .selected { .grid-item-th { - outline: $s-4 solid var(--color-accent-tertiary); + outline: deprecated.$s-4 solid var(--color-accent-tertiary); } } } @@ -219,8 +219,8 @@ $thumbnail-default-height: $s-168; // Default width height: 100%; justify-content: center; opacity: 0; - right: $s-6; - width: $s-32; + right: deprecated.$s-6; + width: deprecated.$s-32; span { color: var(--color-background-secondary); @@ -230,7 +230,7 @@ $thumbnail-default-height: $s-168; // Default width .project-th-icon { align-items: center; display: flex; - margin-right: $s-8; + margin-right: deprecated.$s-8; margin-top: 0; } @@ -238,10 +238,10 @@ $thumbnail-default-height: $s-168; // Default width align-items: flex-end; display: flex; flex-direction: column; - height: $s-32; + height: deprecated.$s-32; justify-content: center; margin-right: 0; - margin-top: $s-20; + margin-top: deprecated.$s-20; width: 100%; --menu-icon-color: var(--button-tertiary-foreground-color-rest); @@ -255,8 +255,8 @@ $thumbnail-default-height: $s-168; // Default width stroke: var(--menu-icon-color); fill: none; margin-right: 0; - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; } .project-th-actions.force-display { @@ -264,7 +264,7 @@ $thumbnail-default-height: $s-168; // Default width } .grid-item-th { - border-radius: $br-4; + border-radius: deprecated.$br-4; cursor: pointer; height: 100%; overflow: hidden; @@ -282,11 +282,11 @@ $thumbnail-default-height: $s-168; // Default width // LIBRARY VIEW .library { - height: $s-580; + height: deprecated.$s-580; } .grid-item.project-th.library { - height: $s-612; + height: deprecated.$s-612; } .grid-item-th.library { @@ -294,21 +294,21 @@ $thumbnail-default-height: $s-168; // Default width flex-direction: column; height: 90%; justify-content: flex-start; - max-height: $s-580; - padding: $s-32; + max-height: deprecated.$s-580; + padding: deprecated.$s-32; .asset-section { - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--color-foreground-secondary); &:not(:first-child) { - margin-top: $s-16; + margin-top: deprecated.$s-16; } } .asset-title { display: flex; - font-size: $fs-12; + font-size: deprecated.$fs-12; text-transform: uppercase; .num-assets { @@ -318,18 +318,18 @@ $thumbnail-default-height: $s-168; // Default width .asset-list-item { align-items: center; - border-radius: $br-4; - border: $s-1 solid transparent; + border-radius: deprecated.$br-4; + border: deprecated.$s-1 solid transparent; color: var(--color-foreground-primary); display: flex; - font-size: $fs-12; - margin-top: $s-4; - padding: $s-2; + font-size: deprecated.$fs-12; + margin-top: deprecated.$s-4; + padding: deprecated.$s-2; position: relative; .name-block { color: var(--color-foreground-secondary); - width: calc(100% - $s-24 - $s-8); + width: calc(100% - deprecated.$s-24 - deprecated.$s-8); } .item-name { @@ -341,11 +341,11 @@ $thumbnail-default-height: $s-168; // Default width svg { background-color: var(--color-canvas); - border-radius: $br-4; - border: $s-2 solid transparent; - height: $s-24; - margin-right: $s-8; - width: $s-24; + border-radius: deprecated.$br-4; + border: deprecated.$s-2 solid transparent; + height: deprecated.$s-24; + margin-right: deprecated.$s-8; + width: deprecated.$s-24; } .color-name { @@ -354,14 +354,14 @@ $thumbnail-default-height: $s-168; // Default width .color-value { color: var(--color-foreground-secondary); - margin-left: $s-4; + margin-left: deprecated.$s-4; text-transform: uppercase; } .typography-sample { - height: $s-20; - margin-right: $s-4; - width: $s-20; + height: deprecated.$s-20; + margin-right: deprecated.$s-4; + width: deprecated.$s-20; } } } @@ -369,7 +369,7 @@ $thumbnail-default-height: $s-168; // Default width .color-item { display: grid; grid-template-columns: auto 1fr; - gap: $s-8; + gap: deprecated.$s-8; } .grid-loader { diff --git a/frontend/src/app/main/ui/dashboard/import.scss b/frontend/src/app/main/ui/dashboard/import.scss index 0ce6ae41a5..cf7cea13ae 100644 --- a/frontend/src/app/main/ui/dashboard/import.scss +++ b/frontend/src/app/main/ui/dashboard/import.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -17,11 +17,11 @@ } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } @@ -30,14 +30,14 @@ } .modal-content { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; flex: 1; overflow-y: auto; overflow-x: hidden; display: grid; grid-template-columns: 1fr; - gap: $s-16; - margin-bottom: $s-24; + gap: deprecated.$s-16; + margin-bottom: deprecated.$s-24; min-height: 40px; } @@ -58,7 +58,7 @@ .modal-scd-msg, .modal-subtitle, .modal-msg { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--modal-text-foreground-color); line-height: 1.5; } @@ -66,11 +66,11 @@ .file-entry { display: flex; .file-name { - @include flexRow; + @include deprecated.flexRow; .file-icon { - @include flexCenter; - height: $s-24; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-16; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -81,19 +81,19 @@ } .file-name-edit { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; flex-grow: 1; } .file-name-label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; - gap: $s-12; + gap: deprecated.$s-12; flex-grow: 1; .icon { - @include flexCenter; - height: $s-16; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -101,11 +101,11 @@ } } .edit-entry-buttons { - @include flexRow; + @include deprecated.flexRow; button { @extend .button-tertiary; - width: $s-28; - height: $s-32; + width: deprecated.$s-28; + height: deprecated.$s-32; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -117,19 +117,19 @@ .progress-message { display: flex; align-items: center; - height: $s-32; + height: deprecated.$s-32; color: var(--modal-text-foreground-color); } .linked-library { display: flex; align-items: center; - gap: $s-12; + gap: deprecated.$s-12; color: var(--modal-text-foreground-color); .linked-library-tag { - @include flexCenter; - height: $s-24; - width: $s-24; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-24; svg { @extend .button-icon; stroke: var(--icon-foreground); diff --git a/frontend/src/app/main/ui/dashboard/inline_edition.scss b/frontend/src/app/main/ui/dashboard/inline_edition.scss index 4b4a17eb1c..4f62033011 100644 --- a/frontend/src/app/main/ui/dashboard/inline_edition.scss +++ b/frontend/src/app/main/ui/dashboard/inline_edition.scss @@ -4,29 +4,29 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .edit-wrapper { - border-radius: $br-4; + border-radius: deprecated.$br-4; display: flex; - padding-right: $s-24; + padding-right: deprecated.$s-24; position: relative; - margin-right: $s-24; + margin-right: deprecated.$s-24; } input.element-title { background-color: var(--input-background-color-active); - border-radius: $br-8; + border-radius: deprecated.$br-8; color: var(--color-foreground-primary); - font-size: $fs-16; - height: $s-32; + font-size: deprecated.$fs-16; + height: deprecated.$s-32; margin: 0; border: none; - padding: $s-6; + padding: deprecated.$s-6; width: 100%; &:focus-visible { - border: $s-1 solid var(--color-accent-primary); + border: deprecated.$s-1 solid var(--color-accent-primary); outline: none; } } @@ -35,14 +35,14 @@ input.element-title { cursor: pointer; position: absolute; - top: $s-1; - right: calc(-1 * $s-8); + top: deprecated.$s-1; + right: calc(-1 * deprecated.$s-8); svg { fill: var(--color-foreground-secondary); - height: $s-16; + height: deprecated.$s-16; transform: rotate(45deg) translateY(7px); - width: $s-16; + width: deprecated.$s-16; margin: 0; } &:hover { diff --git a/frontend/src/app/main/ui/dashboard/libraries.scss b/frontend/src/app/main/ui/dashboard/libraries.scss index 5a79d8e33f..07d20bf939 100644 --- a/frontend/src/app/main/ui/dashboard/libraries.scss +++ b/frontend/src/app/main/ui/dashboard/libraries.scss @@ -4,21 +4,21 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "common/refactor/common-dashboard"; .dashboard-container { flex: 1 0 0; - margin-right: $s-16; + margin-right: deprecated.$s-16; overflow-y: auto; width: 100%; - border-top: $s-1 solid var(--color-background-quaternary); + border-top: deprecated.$s-1 solid var(--color-background-quaternary); &.dashboard-projects { user-select: none; } &.search { - margin-top: $s-12; + margin-top: deprecated.$s-12; } } diff --git a/frontend/src/app/main/ui/dashboard/pin_button.scss b/frontend/src/app/main/ui/dashboard/pin_button.scss index 9b00a1307c..49093b223e 100644 --- a/frontend/src/app/main/ui/dashboard/pin_button.scss +++ b/frontend/src/app/main/ui/dashboard/pin_button.scss @@ -4,18 +4,18 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .button { --pin-button-icon-color: var(--button-icon-foreground-color); --pin-button-bg-color: none; --pin-button-border-color: none; - width: $s-32; - height: $s-32; + width: deprecated.$s-32; + height: deprecated.$s-32; background: var(--pin-button-bg-color); - border: $s-2 solid var(--pin-button-border-color); - border-radius: $br-8; + border: deprecated.$s-2 solid var(--pin-button-border-color); + border-radius: deprecated.$br-8; display: grid; place-content: center; cursor: pointer; @@ -28,8 +28,8 @@ } .icon { - width: $s-16; - height: $s-16; + width: deprecated.$s-16; + height: deprecated.$s-16; fill: none; stroke: var(--pin-button-icon-color); } diff --git a/frontend/src/app/main/ui/dashboard/placeholder.scss b/frontend/src/app/main/ui/dashboard/placeholder.scss index 590d38289a..ca47399436 100644 --- a/frontend/src/app/main/ui/dashboard/placeholder.scss +++ b/frontend/src/app/main/ui/dashboard/placeholder.scss @@ -4,14 +4,14 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "./grid.scss" as g; -@use "../ds/typography.scss" as t; +@use "ds/typography.scss" as t; .grid-empty-placeholder { - border-radius: $br-12; + border-radius: deprecated.$br-12; display: grid; - padding: $s-12 0; + padding: deprecated.$s-12 0; &.libs { background-image: url(/images/ph-left.svg), url(/images/ph-right.svg); @@ -20,13 +20,13 @@ 85% top; background-repeat: no-repeat; align-items: center; - border: $s-1 solid var(--color-background-quaternary); - border-radius: $br-4; + border: deprecated.$s-1 solid var(--color-background-quaternary); + border-radius: deprecated.$br-4; display: flex; flex-direction: column; - height: $s-200; - margin: $s-16; - padding: $s-48; + height: deprecated.$s-200; + margin: deprecated.$s-16; + padding: deprecated.$s-48; justify-content: center; .text { @@ -35,32 +35,32 @@ } p { - max-width: $s-360; + max-width: deprecated.$s-360; text-align: center; - font-size: $fs-16; + font-size: deprecated.$fs-16; } } } .create-new { background-color: var(--color-background-tertiary); - border-radius: $br-8; + border-radius: deprecated.$br-8; color: var(--color-foreground-primary); cursor: pointer; - height: $s-160; - margin: $s-8; - border: $s-2 solid transparent; + height: deprecated.$s-160; + margin: deprecated.$s-8; + border: deprecated.$s-2 solid transparent; width: var(--th-width, #{g.$thumbnail-default-width}); height: var(--th-height, #{g.$thumbnail-default-height}); svg { - width: $s-32; - height: $s-32; + width: deprecated.$s-32; + height: deprecated.$s-32; stroke: var(--color-foreground-secondary); } &:hover { - border: $s-2 solid var(--color-accent-tertiary); + border: deprecated.$s-2 solid var(--color-accent-tertiary); background-color: var(--color-background-quaternary); color: var(--color-accent-primary); @@ -71,9 +71,9 @@ } .text { - margin-top: $s-12; + margin-top: deprecated.$s-12; color: var(--color-foreground-secondary); - font-size: $fs-16; + font-size: deprecated.$fs-16; } } @@ -87,7 +87,7 @@ .placeholder-text { color: var(--color-foreground-secondary); - font-size: $fs-16; + font-size: deprecated.$fs-16; text-align: center; } @@ -100,15 +100,15 @@ } .empty-placeholder-libraries { - margin: $s-16; + margin: deprecated.$s-16; } .empty-project-container { width: 100%; display: grid; - gap: $s-16; + gap: deprecated.$s-16; grid-template-columns: 1fr 1fr 1fr; - margin-top: $s-12; + margin-top: deprecated.$s-12; } .empty-project-card { @@ -121,8 +121,8 @@ justify-content: center; align-items: center; background-color: var(--color-card-background); - border: $s-2 solid var(--color-background-quaternary); - border-radius: $br-8; + border: deprecated.$s-2 solid var(--color-background-quaternary); + border-radius: deprecated.$br-8; padding: var(--sp-m) 0; &:hover { @@ -132,7 +132,7 @@ cursor: pointer; .empty-project-card-title { - font-weight: $fw500; + font-weight: deprecated.$fw500; } } diff --git a/frontend/src/app/main/ui/dashboard/projects.scss b/frontend/src/app/main/ui/dashboard/projects.scss index 252da62cd8..b72a793890 100644 --- a/frontend/src/app/main/ui/dashboard/projects.scss +++ b/frontend/src/app/main/ui/dashboard/projects.scss @@ -4,39 +4,39 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "common/refactor/common-dashboard"; .dashboard-container { flex: 1 0 0; width: 100%; - margin-right: $s-16; - border-top: $s-1 solid var(--panel-border-color); + margin-right: deprecated.$s-16; + border-top: deprecated.$s-1 solid var(--panel-border-color); overflow-y: auto; - padding-bottom: $s-32; + padding-bottom: deprecated.$s-32; } .dashboard-projects { user-select: none; - height: calc(100vh - $s-64); + height: calc(100vh - deprecated.$s-64); } .with-team-hero { - height: calc(100vh - $s-280); + height: calc(100vh - deprecated.$s-280); } .dashboard-shared { - width: calc(100vw - $s-320); - margin-right: $s-52; + width: calc(100vw - deprecated.$s-320); + margin-right: deprecated.$s-52; } .search { - margin-top: $s-12; + margin-top: deprecated.$s-12; } .dashboard-project-row { --actions-opacity: 0; - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; position: relative; &:hover, @@ -60,12 +60,12 @@ flex-direction: row; align-items: center; justify-content: space-between; - gap: $s-8; + gap: deprecated.$s-8; width: 99%; - max-height: $s-40; - padding: $s-8 $s-8 $s-8 $s-16; - margin-top: $s-16; - border-radius: $br-4; + max-height: deprecated.$s-40; + padding: deprecated.$s-8 deprecated.$s-8 deprecated.$s-8 deprecated.$s-16; + margin-top: deprecated.$s-16; + border-radius: deprecated.$br-4; } .project-name-wrapper { @@ -73,30 +73,30 @@ align-items: center; justify-content: flex-start; width: 100%; - min-height: $s-32; - margin-left: $s-8; + min-height: deprecated.$s-32; + margin-left: deprecated.$s-8; } .project-name { - @include bodyLargeTypography; - @include textEllipsis; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; width: fit-content; - margin-right: $s-12; + margin-right: deprecated.$s-12; line-height: 0.8; color: var(--title-foreground-color-hover); cursor: pointer; - height: $s-16; + height: deprecated.$s-16; } .info-wrapper { display: flex; align-items: center; - gap: $s-8; + gap: deprecated.$s-8; } .info, .recent-files-row-title-info { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--title-foreground-color); @media (max-width: 760px) { display: none; @@ -106,16 +106,16 @@ .project-actions { display: flex; opacity: var(--actions-opacity); - margin-left: $s-32; + margin-left: deprecated.$s-32; } .add-file-btn, .options-btn { @extend .button-tertiary; - height: $s-32; - width: $s-32; - margin: 0 $s-8; - padding: $s-8; + height: deprecated.$s-32; + width: deprecated.$s-32; + margin: 0 deprecated.$s-8; + padding: deprecated.$s-8; } .add-icon, @@ -126,24 +126,24 @@ .grid-container { width: 100%; - padding: 0 $s-4; + padding: 0 deprecated.$s-4; } .placeholder-placement { - margin: $s-16 $s-32; + margin: deprecated.$s-16 deprecated.$s-32; } .show-more { --show-more-color: var(--button-secondary-foreground-color-rest); - @include buttonStyle; - @include bodyMediumTypography; + @include deprecated.buttonStyle; + @include deprecated.bodyMediumTypography; position: absolute; - top: $s-8; - right: $s-52; + top: deprecated.$s-8; + right: deprecated.$s-52; display: flex; align-items: center; justify-content: space-between; - column-gap: $s-12; + column-gap: deprecated.$s-12; color: var(--show-more-color); &:hover { @@ -152,8 +152,8 @@ } .show-more-icon { - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; fill: none; stroke: var(--show-more-color); } @@ -161,16 +161,16 @@ // Team hero .team-hero { background-color: var(--color-background-tertiary); - border-radius: $br-8; + border-radius: deprecated.$br-8; border: none; display: flex; - margin: $s-16; - padding: $s-8; + margin: deprecated.$s-16; + padding: deprecated.$s-8; position: relative; img { - border-radius: $br-4; - height: $s-200; + border-radius: deprecated.$br-4; + height: deprecated.$s-200; width: auto; @media (max-width: 1200px) { @@ -185,18 +185,18 @@ flex-direction: column; align-items: flex-start; flex-grow: 1; - padding: $s-20 $s-20; + padding: deprecated.$s-20 deprecated.$s-20; } .title { - font-size: $fs-24; + font-size: deprecated.$fs-24; color: var(--color-foreground-primary); - font-weight: $fw400; + font-weight: deprecated.$fw400; } .info { flex: 1; - font-size: $fs-16; + font-size: deprecated.$fs-16; span { color: var(--color-foreground-secondary); display: block; @@ -204,15 +204,15 @@ a { color: var(--color-accent-primary); } - padding: $s-8 0; + padding: deprecated.$s-8 0; } .close { --close-icon-foreground-color: var(--icon-foreground); position: absolute; - top: $s-20; - right: $s-24; - width: $s-24; + top: deprecated.$s-20; + right: deprecated.$s-24; + width: deprecated.$s-24; background-color: transparent; border: none; cursor: pointer; @@ -227,18 +227,18 @@ } .invite { - height: $s-32; - width: $s-180; + height: deprecated.$s-32; + width: deprecated.$s-180; } .img-wrapper { display: flex; align-items: center; justify-content: center; - width: $s-200; - height: $s-200; + width: deprecated.$s-200; + height: deprecated.$s-200; overflow: hidden; - border-radius: $br-4; + border-radius: deprecated.$br-4; @media (max-width: 1200px) { display: none; width: 0; diff --git a/frontend/src/app/main/ui/dashboard/search.scss b/frontend/src/app/main/ui/dashboard/search.scss index f0180ed414..c360ac61ac 100644 --- a/frontend/src/app/main/ui/dashboard/search.scss +++ b/frontend/src/app/main/ui/dashboard/search.scss @@ -4,27 +4,27 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "common/refactor/common-dashboard"; @use "./placeholder.scss"; .dashboard-container { flex: 1 0 0; - margin-right: $s-16; + margin-right: deprecated.$s-16; overflow-y: auto; width: 100%; - border-top: $s-1 solid var(--color-background-quaternary); + border-top: deprecated.$s-1 solid var(--color-background-quaternary); &.dashboard-projects { user-select: none; } &.dashboard-shared { - width: calc(100vw - $s-320); - margin-right: $s-52; + width: calc(100vw - deprecated.$s-320); + margin-right: deprecated.$s-52; } &.search { - margin-top: $s-12; + margin-top: deprecated.$s-12; } } @@ -33,17 +33,17 @@ display: flex; justify-content: center; flex-direction: column; - height: $s-200; + height: deprecated.$s-200; background: transparent; - border: $s-1 solid var(--color-background-quaternary); - border-radius: $br-8; + border: deprecated.$s-1 solid var(--color-background-quaternary); + border-radius: deprecated.$br-8; .text { color: var(--color-foreground-primary); } .icon svg { stroke: var(--color-foreground-secondary); - width: $s-32; - height: $s-32; + width: deprecated.$s-32; + height: deprecated.$s-32; } } diff --git a/frontend/src/app/main/ui/dashboard/sidebar.cljs b/frontend/src/app/main/ui/dashboard/sidebar.cljs index d4a071709e..d73ea8faae 100644 --- a/frontend/src/app/main/ui/dashboard/sidebar.cljs +++ b/frontend/src/app/main/ui/dashboard/sidebar.cljs @@ -33,6 +33,7 @@ show-subscription-dashboard-banner? get-subscription-type]] [app.main.ui.dashboard.team-form] + [app.main.ui.ds.foundations.assets.icon :refer [icon*] :as i] [app.main.ui.icons :as deprecated-icon] [app.util.dom :as dom] [app.util.dom.dnd :as dnd] @@ -762,10 +763,139 @@ [:span {:class (stl/css :empty-text)} (tr "dashboard.no-projects-placeholder")]])]] [:div {:class (stl/css-case :separator true :overflow-separator overflow?)}]])) +(mf/defc help-learning-menu* + {::mf/props :obj + ::mf/private true} + [{:keys [on-close on-click]}] + (let [handle-click-url + (mf/use-fn + (fn [event] + (let [url (-> (dom/get-current-target event) + (dom/get-data "url")) + eventname (-> (dom/get-current-target event) + (dom/get-data "eventname"))] + (st/emit! (ptk/event ::ev/event {::ev/name eventname + ::ev/origin "menu:in-app"})) + (dom/open-new-window url)))) + + handle-feedback-click + (mf/use-fn #(on-click :settings-feedback %))] + + [:> dropdown-menu* {:show true + :class (stl/css :sub-menu :help-learning) + :on-close on-close} + + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :data-url "https://help.penpot.app" + :on-click handle-click-url + :data-eventname "explore-help-center-click"} + (tr "labels.help-center")] + + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :data-url "https://penpot.app/learning-center" + :on-click handle-click-url + :data-eventname "explore-learning-center-click"} + (tr "labels.learning-center")] + + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :data-url "https://penpot.app/penpothub" + :on-click handle-click-url + :data-eventname "explore-penpot-hub-click"} + (tr "labels.penpot-hub")] + + (when (contains? cf/flags :user-feedback) + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :on-click handle-feedback-click} + (tr "labels.give-feedback")])])) + +(mf/defc community-contributions-menu* + {::mf/props :obj + ::mf/private true} + [{:keys [on-close]}] + (let [handle-click-url + (mf/use-fn + (fn [event] + (let [url (-> (dom/get-current-target event) + (dom/get-data "url")) + eventname (-> (dom/get-current-target event) + (dom/get-data "eventname"))] + (st/emit! (ptk/event ::ev/event {::ev/name eventname + ::ev/origin "menu:in-app"})) + (dom/open-new-window url))))] + + [:> dropdown-menu* {:show true + :class (stl/css :sub-menu :community) + :on-close on-close} + + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :data-url "https://github.com/penpot/penpot" + :on-click handle-click-url + :data-eventname "explore-github-repository-click"} + (tr "labels.github-repo")] + + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :data-url "https://community.penpot.app" + :on-click handle-click-url + :data-eventname "explore-community-click"} + (tr "labels.community")]])) + +(mf/defc about-penpot-menu* + {::mf/props :obj + ::mf/private true} + [{:keys [on-close]}] + (let [version cf/version + show-release-notes + (mf/use-fn + (fn [event] + (st/emit! (ptk/event ::ev/event {::ev/name "show-release-notes" :version (:main version)})) + (if (and (kbd/alt? event) (kbd/mod? event)) + (st/emit! (modal/show {:type :onboarding})) + (st/emit! (modal/show {:type :release-notes :version (:main version)}))))) + + handle-click-url + (mf/use-fn + (fn [event] + (let [url (-> (dom/get-current-target event) + (dom/get-data "url")) + eventname (-> (dom/get-current-target event) + (dom/get-data "eventname"))] + (st/emit! (ptk/event ::ev/event {::ev/name eventname + ::ev/origin "menu:in-app"})) + (dom/open-new-window url))))] + + [:> dropdown-menu* {:show true + :class (stl/css :sub-menu :about) + :on-close on-close} + + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :on-click show-release-notes} + (tr "labels.version-notes" (:base version))] + + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :data-url "https://github.com/penpot/penpot/blob/develop/CHANGES.md" + :on-click handle-click-url + :data-eventname "explore-changelog-click"} + (tr "labels.penpot-changelog")] + + [:> dropdown-menu-item* {:class (stl/css :submenu-item) + :data-url "https://penpot.app/terms" + :on-click handle-click-url + :data-eventname "explore-terms-service-click"} + (tr "auth.terms-of-service")]])) + (mf/defc profile-section* [{:keys [profile team]}] (let [show-profile-menu* (mf/use-state false) show-profile-menu? (deref show-profile-menu*) + sub-menu* (mf/use-state false) + sub-menu (deref sub-menu*) + version (:base cf/version) + + close-sub-menu + (mf/use-fn + (fn [event] + (dom/stop-propagation event) + (reset! sub-menu* nil))) photo (cf/resolve-profile-photo-url profile) @@ -779,15 +909,6 @@ (st/emit! (rt/nav section)) (st/emit! section)))) - show-release-notes - (mf/use-fn - (fn [event] - (let [version (:main cf/version)] - (st/emit! (ptk/event ::ev/event {::ev/name "show-release-notes" :version version})) - (if (and (kbd/alt? event) (kbd/mod? event)) - (st/emit! (modal/show {:type :onboarding})) - (st/emit! (modal/show {:type :release-notes :version version})))))) - show-comments* (mf/use-state false) show-comments? @show-comments* @@ -816,16 +937,6 @@ on-close (mf/use-fn #(reset! show-profile-menu* false)) - handle-click-url - (mf/use-fn - (fn [event] - (let [url (-> (dom/get-current-target event) - (dom/get-data "url"))] - (dom/open-new-window url)))) - - handle-feedback-click - (mf/use-fn #(on-click :settings-feedback %)) - handle-logout-click (mf/use-fn #(on-click (da/logout) %)) @@ -834,6 +945,15 @@ (mf/use-fn #(on-click :settings-profile %)) + on-menu-click + (mf/use-fn + (fn [event] + (dom/stop-propagation event) + (let [menu (-> (dom/get-current-target event) + (dom/get-data "testid") + (keyword))] + (reset! sub-menu* menu)))) + on-power-up-click (mf/use-fn (fn [] @@ -887,53 +1007,45 @@ [:li {:class (stl/css :profile-separator)}] - [:> dropdown-menu-item* {:class (stl/css :profile-dropdown-item) - :data-url "https://help.penpot.app" - :on-click handle-click-url - :data-testid "help-center-profile-opt"} - (tr "labels.help-center")] - [:> dropdown-menu-item* {:class (stl/css :profile-dropdown-item) - :data-url "https://community.penpot.app" - :on-click handle-click-url} - (tr "labels.community")] + [:> dropdown-menu-item* {:class (stl/css-case :profile-dropdown-item true) + :on-click on-menu-click + :on-key-down (fn [event] + (when (kbd/enter? event) + (on-menu-click event))) + :on-pointer-enter on-menu-click + :data-testid "help-learning" + :id "help-learning"} + [:span {:class (stl/css :item-name)} (tr "labels.help-learning")] + [:> icon* {:icon-id i/arrow :class (stl/css :open-arrow)}]] - [:> dropdown-menu-item* {:class (stl/css :profile-dropdown-item) - :data-url "https://www.youtube.com/c/Penpot" - :on-click handle-click-url} - (tr "labels.tutorials")] + [:> dropdown-menu-item* {:class (stl/css-case :profile-dropdown-item true) + :on-click on-menu-click + :on-key-down (fn [event] + (when (kbd/enter? event) + (on-menu-click event))) + :on-pointer-enter on-menu-click + :data-testid "community-contributions" + :id "community-contributions"} + [:span {:class (stl/css :item-name)} (tr "labels.community-contributions")] + [:> icon* {:icon-id i/arrow :class (stl/css :open-arrow)}]] - [:> dropdown-menu-item* {:tab-index "0" - :class (stl/css :profile-dropdown-item) - :on-click show-release-notes} - (tr "labels.release-notes")] + [:> dropdown-menu-item* {:class (stl/css-case :profile-dropdown-item true) + :on-click on-menu-click + :on-key-down (fn [event] + (when (kbd/enter? event) + (on-menu-click event))) + :on-pointer-enter on-menu-click + :data-testid "about-penpot" + :id "about-penpot"} + + [:div {:class (stl/css :about-penpot)} + [:span {:class (stl/css :item-name)} (tr "labels.about-penpot")] + [:span {:class (stl/css :menu-version) :title version} version]] + [:> icon* {:icon-id i/arrow :class (stl/css :open-arrow)}]] [:li {:class (stl/css :profile-separator)}] - [:> dropdown-menu-item* {:class (stl/css :profile-dropdown-item) - :data-url "https://penpot.app/libraries-templates" - :on-click handle-click-url - :data-testid "libraries-templates-profile-opt"} - (tr "labels.libraries-and-templates")] - - [:> dropdown-menu-item* {:class (stl/css :profile-dropdown-item) - :data-url "https://github.com/penpot/penpot" - :on-click handle-click-url} - (tr "labels.github-repo")] - - [:> dropdown-menu-item* {:class (stl/css :profile-dropdown-item) - :data-url "https://penpot.app/terms" - :on-click handle-click-url} - (tr "auth.terms-of-service")] - - [:li {:class (stl/css :profile-separator)}] - - (when (contains? cf/flags :user-feedback) - [:> dropdown-menu-item* {:class (stl/css :profile-dropdown-item) - :on-click handle-feedback-click - :data-testid "feedback-profile-opt"} - (tr "labels.give-feedback")]) - [:> dropdown-menu-item* {:class (stl/css :profile-dropdown-item :item-with-icon) :on-click handle-logout-click :data-testid "logout-profile-opt"} @@ -943,7 +1055,19 @@ (when (and team profile) [:> comments-icon* {:profile profile - :on-show-comments handle-show-comments}])]])) + :on-show-comments handle-show-comments}])] + + (when show-profile-menu? + (case sub-menu + :help-learning + [:> help-learning-menu* {:on-close close-sub-menu :on-click on-click}] + + :community-contributions + [:> community-contributions-menu* {:on-close close-sub-menu}] + + :about-penpot + [:> about-penpot-menu* {:on-close close-sub-menu}] + nil))])) (mf/defc sidebar* {::mf/props :obj diff --git a/frontend/src/app/main/ui/dashboard/sidebar.scss b/frontend/src/app/main/ui/dashboard/sidebar.scss index a885a89f3e..4c62bdcff6 100644 --- a/frontend/src/app/main/ui/dashboard/sidebar.scss +++ b/frontend/src/app/main/ui/dashboard/sidebar.scss @@ -4,11 +4,13 @@ // // Copyright (c) KALEIDOS INC -@use "../ds/typography.scss" as t; -@use "../ds/colors.scss" as *; -@use "../ds/spacing.scss" as *; -@use "../ds/_borders.scss" as *; -@use "../ds/_sizes.scss" as *; +@use "ds/typography.scss" as t; +@use "ds/colors.scss" as *; +@use "ds/spacing.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_utils.scss" as *; +@use "ds/z-index.scss" as *; @use "common/refactor/common-dashboard"; @use "common/refactor/common-refactor.scss" as deprecated; @@ -24,7 +26,7 @@ margin: 0 var(--sp-l) 0 0; border-right: $b-1 solid var(--panel-border-color); background-color: var(--panel-background-color); - z-index: deprecated.$z-index-1; + z-index: var(--z-index-dropdown); } //SIDEBAR CONTENT COMPONENT @@ -392,17 +394,81 @@ .profile-dropdown { @extend .menu-dropdown; - left: var(--sp-l); - bottom: deprecated.$s-72; - min-width: $sz-252; + inset-inline-start: var(--sp-s); + inset-block-end: px2rem(72); // 72 is the height of the profile button + min-width: calc(100% - var(--sp-s)); // TODO ADD animation fadeInUp } .profile-dropdown-item { @extend .menu-item-base; - @include t.use-typography("title-small"); - height: $sz-40; - padding: var(--sp-s) var(--sp-l); + @include t.use-typography("body-medium"); + block-size: $sz-40; + margin-block-end: var(--sp-xs); + padding: var(--sp-s); + padding-inline-start: var(--sp-l); + + &:hover { + color: var(--menu-foreground-color-hover); + + .open-arrow { + --icon-stroke-color: var(--menu-foreground-color-hover); + } + } +} + +.profile-dropdown-item .open-arrow { + @include deprecated.flexCenter; +} + +.profile-dropdown-item .open-arrow svg { + @extend .button-icon; + stroke: var(--icon-foreground); +} + +.sub-menu { + @extend .menu-dropdown; + inset-inline-start: calc(deprecated.$s-292 + var(--sp-s)); + min-width: deprecated.$s-192; +} + +.sub-menu.help-learning { + inset-block-end: deprecated.$s-72; +} + +.sub-menu.community { + inset-block-end: deprecated.$s-120; +} + +.sub-menu.about { + inset-block-end: $sz-24; +} + +.submenu-item { + @extend .menu-item-base; + @include t.use-typography("body-medium"); + block-size: $sz-40; + margin-block-end: var(--sp-xs); + padding-block: var(--sp-s); + padding-inline: var(--sp-l); + + &:hover { + color: var(--menu-foreground-color-hover); + } +} + +.about-penpot { + align-items: baseline; + display: grid; + grid-template-columns: auto 1fr; +} + +.menu-version { + @include t.use-typography("code-font"); + @include deprecated.textEllipsis; + color: var(--color-foreground-secondary); + margin-inline-start: var(--sp-s); + text-transform: uppercase; } .profile-separator { diff --git a/frontend/src/app/main/ui/dashboard/subscription.scss b/frontend/src/app/main/ui/dashboard/subscription.scss index edf4616c08..7dc51ad6d6 100644 --- a/frontend/src/app/main/ui/dashboard/subscription.scss +++ b/frontend/src/app/main/ui/dashboard/subscription.scss @@ -1,8 +1,14 @@ -@use "common/refactor/common-refactor.scss" as *; +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "refactor/common-refactor.scss" as deprecated; @use "common/refactor/common-dashboard"; -@use "../ds/typography.scss" as t; -@use "../ds/_borders.scss" as *; -@use "../ds/spacing.scss" as *; +@use "ds/typography.scss" as t; +@use "ds/_borders.scss" as *; +@use "ds/spacing.scss" as *; .cta-power-up { display: flex; @@ -14,7 +20,7 @@ } .cta-top-section { - @include buttonStyle; + @include deprecated.buttonStyle; display: grid; color: var(--color-foreground-secondary); grid-template-columns: 1fr auto; @@ -31,7 +37,7 @@ } .icon-dropdown { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; width: var(--sp-l); } @@ -50,7 +56,7 @@ } .cta-bottom-section .content { @include t.use-typography("body-medium"); - @include buttonStyle; + @include deprecated.buttonStyle; color: var(--color-foreground-secondary); display: inline-block; text-align: left; @@ -77,7 +83,7 @@ } .cta-link { - @include buttonStyle; + @include deprecated.buttonStyle; align-self: end; margin-inline-start: var(--sp-xs); } @@ -86,7 +92,7 @@ display: grid; grid-auto-rows: min-content; gap: var(--sp-s); - max-width: $s-1000; + max-width: deprecated.$s-1000; width: 100%; } @@ -101,7 +107,7 @@ } .manage-subscription-link { - @include buttonStyle; + @include deprecated.buttonStyle; @include t.use-typography("body-medium"); color: var(--color-accent-tertiary); display: flex; @@ -143,8 +149,8 @@ .members-cta { height: fit-content; margin-block-start: var(--sp-s); - margin-inline-start: $s-52; - max-width: $s-220; + margin-inline-start: deprecated.$s-52; + max-width: deprecated.$s-220; .cta-title { line-height: 1.2; diff --git a/frontend/src/app/main/ui/dashboard/team.cljs b/frontend/src/app/main/ui/dashboard/team.cljs index b883736094..96afda2563 100644 --- a/frontend/src/app/main/ui/dashboard/team.cljs +++ b/frontend/src/app/main/ui/dashboard/team.cljs @@ -22,10 +22,12 @@ [app.main.ui.components.file-uploader :refer [file-uploader]] [app.main.ui.components.forms :as fm] [app.main.ui.dashboard.change-owner] - [app.main.ui.dashboard.subscription :refer [team* - members-cta* - show-subscription-members-banner?]] + [app.main.ui.dashboard.subscription :refer [members-cta* + show-subscription-members-banner? + team*]] [app.main.ui.dashboard.team-form] + [app.main.ui.ds.buttons.button :refer [button*]] + [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.foundations.assets.icon :refer [icon*] :as i] [app.main.ui.icons :as deprecated-icon] [app.main.ui.notifications.badge :refer [badge-notification]] @@ -604,11 +606,7 @@ {::mf/props :obj ::mf/private true} [{:keys [invitation team-id]}] - (let [show? (mf/use-state false) - - email (:email invitation) - role (:role invitation) - + (let [email (:email invitation) on-error (mf/use-fn (mf/deps email) @@ -631,35 +629,6 @@ :else (rx/throw cause))))) - on-delete - (mf/use-fn - (mf/deps email team-id) - (fn [] - (let [params {:email email :team-id team-id} - mdata {:on-success #(st/emit! (dtm/fetch-invitations))}] - (st/emit! (dtm/delete-invitation (with-meta params mdata)))))) - - on-resend-success - (mf/use-fn - (fn [] - (st/emit! (ntf/success (tr "notifications.invitation-email-sent")) - (modal/hide) - (dtm/fetch-invitations)))) - - on-resend - (mf/use-fn - (mf/deps email team-id) - (fn [] - (let [params (with-meta {:emails #{email} - :team-id team-id - :resend? true - :role role} - {:on-success on-resend-success - :on-error on-error})] - (st/emit! - (-> (dtm/create-invitations params) - (with-meta {::ev/origin :team})))))) - on-copy-success (mf/use-fn (fn [] @@ -675,33 +644,18 @@ :on-error on-error})] (st/emit! (-> (dtm/copy-invitation-link params) - (with-meta {::ev/origin :team})))))) + (with-meta {::ev/origin :team}))))))] - on-hide (mf/use-fn #(reset! show? false)) - on-show (mf/use-fn #(reset! show? true))] - - [:* - [:button {:class (stl/css :menu-btn) - :on-click on-show} - menu-icon] - - [:& dropdown {:show @show? :on-close on-hide :dropdown-id "invitation-actions"} - [:ul {:class (stl/css :actions-dropdown :invitations-dropdown)} - [:li {:on-click on-copy - :class (stl/css :action-dropdown-item)} - (tr "labels.copy-invitation-link")] - [:li {:on-click on-resend - :class (stl/css :action-dropdown-item)} - (tr "labels.resend-invitation")] - [:li {:on-click on-delete - :class (stl/css :action-dropdown-item)} - (tr "labels.delete-invitation")]]]])) + [:> icon-button* {:variant "ghost" + :aria-label (tr "labels.copy-invitation-link") + :on-click on-copy + :icon "clipboard"}])) (mf/defc invitation-row* {::mf/wrap [mf/memo] ::mf/private true ::mf/props :obj} - [{:keys [invitation can-invite team-id]}] + [{:keys [invitation can-invite team-id selected on-select-change]}] (let [expired? (:expired invitation) email (:email invitation) @@ -714,6 +668,17 @@ (tr "labels.expired-invitation") (tr "labels.pending-invitation")) + is-selected? (fn [email] + (contains? @selected email)) + + on-change + (mf/use-fn + (mf/deps on-select-change) + (fn [event] + (let [email (-> (dom/get-current-target event) + (dom/get-data "attr"))] + (on-select-change email)))) + on-change-role (mf/use-fn (mf/deps email team-id) @@ -723,7 +688,20 @@ (st/emit! (dtm/update-invitation-role (with-meta params mdata))))))] [:div {:class (stl/css :table-row :table-row-invitations)} - [:div {:class (stl/css :table-field :field-email)} email] + [:div {:class (stl/css :table-field :field-email)} + [:div {:class (stl/css :input-wrapper)} + [:label + [:span {:class (stl/css-case :input-checkbox true + :global/checked (is-selected? email))} + deprecated-icon/status-tick] + + [:input {:type "checkbox" + :id (dm/str "email-" email) + :data-attr email + :value email + :checked (is-selected? email) + :on-change on-change}] + email]]] [:div {:class (stl/css :table-field :field-roles)} [:> invitation-role-selector* @@ -766,33 +744,233 @@ (tr "dashboard.invite-profile")] [:div {:class (stl/css :blank-space)}]])])) +(mf/defc invitation-modal + {::mf/register modal/components + ::mf/register-as :invitation-modal} + [{:keys [selected delete on-confirm]}] + [:div {:class (stl/css :modal-overlay)} + [:div {:class (stl/css :modal-invitation-container :modal-container)} + [:div {:class (stl/css :modal-header)} + [:h2 {:class (stl/css :modal-title)} + (if delete + (tr "dashboard.invitation-modal.title.delete-invitations") + (tr "dashboard.invitation-modal.title.resend-invitations"))] + + [:button {:class (stl/css :modal-close-btn) + :on-click modal/hide!} deprecated-icon/close]] + + [:div {:class (stl/css :modal-invitation-content)} + [:p + (if delete + (tr "dashboard.invitation-modal.delete") + (tr "dashboard.invitation-modal.resend"))] + [:div {:class (stl/css :invitation-list)} + (for [{:keys [email role]} selected] + [:p {:key email} + (str "- " email " (" (tr (str "labels." (name role))) ")")])]] + + [:div {:class (stl/css :modal-footer)} + [:div {:class (stl/css :action-buttons :modal-invitation-action-buttons)} + (when-not delete + [:> button* + {:class (stl/css :cancel-button) + :variant "secondary" + :type "button" + :on-click modal/hide!} + (tr "labels.cancel")]) + [:> button* + {:class (stl/css :accept-btn) + :variant "primary" + :type "button" + :on-click on-confirm} + (if delete + (tr "labels.continue") + (tr "labels.resend"))]]]]]) + (mf/defc invitation-section* {::mf/props :obj ::mf/private true} [{:keys [team]}] (let [permissions (get team :permissions) - invitations (get team :invitations) + invitations (mf/use-state (get team :invitations)) team-id (get team :id) owner? (get permissions :is-owner) admin? (get permissions :is-admin) - can-invite? (or owner? admin?)] + can-invite? (or owner? admin?) + + selected (mf/use-state #{}) + + ;; Sort state: {:field :status/:role, :direction :asc/:desc} + sort-state (mf/use-state {:field nil :direction :asc}) + + selected-invitations (mf/with-memo [selected invitations] + (filterv #(contains? @selected (:email %)) @invitations)) + + on-select-change + (mf/use-fn + (mf/deps selected) + (fn [email] + (if (contains? @selected email) + (swap! selected disj email) + (swap! selected conj email)))) + + on-confirm-delete + (mf/use-fn + (mf/deps selected team-id) + (fn [] + (doseq [email @selected] + (let [params {:email email :team-id team-id} + mdata {:on-success #(st/emit! (ntf/success (tr "notifications.invitation-deleted")) + (dtm/fetch-invitations) + (modal/hide))}] + (st/emit! (dtm/delete-invitation (with-meta params mdata))))) + (reset! selected #{}))) + + on-delete + (mf/use-fn + (mf/deps selected-invitations team-id) + (fn [] + (st/emit! (modal/show :invitation-modal {:selected selected-invitations :delete true :on-confirm on-confirm-delete})))) + + on-error + (fn [form] + (let [{:keys [type code] :as error} (ex-data form)] + (println form) + (cond + (and (= :validation type) + (= :profile-is-muted code)) + (st/emit! (ntf/error (tr "errors.profile-is-muted")) + (modal/hide)) + + (and (= :validation type) + (= :max-invitations-by-request code)) + (st/emit! (ntf/error (tr "errors.maximum-invitations-by-request-reached" (:threshold error)))) + + (and (= :restriction type) + (= :max-quote-reached code)) + (st/emit! (ntf/error (tr "errors.max-quote-reached" (:target error)))) + + (or (= :member-is-muted code) + (= :email-has-permanent-bounces code) + (= :email-has-complaints code)) + (st/emit! (ntf/error (tr "errors.email-spam-or-permanent-bounces" (:email error)))) + + :else + (st/emit! (ntf/error (tr "errors.generic")) + (modal/hide))))) + + on-resend-success + (mf/use-fn + (fn [] + (st/emit! (ntf/success (tr "notifications.invitation-email-sent")) + (modal/hide) + (dtm/fetch-invitations)) + (reset! selected #{}))) + + on-confirm-resend + (mf/use-fn + (mf/deps selected-invitations team-id on-resend-success) + (fn [] + (modal/hide!) + (let [params (with-meta {:invitations selected-invitations + :team-id team-id + :resend? true} + {:on-success on-resend-success + :on-error on-error})] + + (st/emit! + (-> (dtm/create-invitations params) + (with-meta {::ev/origin :team})))))) + + on-resend + (mf/use-fn + (mf/deps team-id selected-invitations) + (fn [] + (st/emit! (modal/show :invitation-modal {:selected selected-invitations :on-confirm on-confirm-resend})))) + + on-order-by-status + (mf/use-fn + (mf/deps sort-state) + (fn [] + (let [current-field (:field @sort-state) + current-direction (:direction @sort-state) + new-direction (if (= current-field :status) + (if (= current-direction :asc) :desc :asc) + :asc)] + (println @invitations) + (swap! sort-state assoc :field :status :direction new-direction) + (swap! invitations #(let [sorted (sort-by (juxt :expired :email) %)] + (if (= new-direction :desc) + (reverse sorted) + sorted)))))) + + on-order-by-role + (mf/use-fn + (mf/deps sort-state) + (fn [] + (let [current-field (:field @sort-state) + current-direction (:direction @sort-state) + new-direction (if (= current-field :role) + (if (= current-direction :asc) :desc :asc) + :asc)] + (swap! sort-state assoc :field :role :direction new-direction) + (swap! invitations #(let [sorted (sort-by (juxt :role :email) %)] + (if (= new-direction :desc) + (reverse sorted) + sorted))))))] + + (mf/with-effect [team] + (reset! invitations (get team :invitations)) + (reset! sort-state {:field nil :direction :asc})) [:div {:class (stl/css :invitations)} + (when (> (count @selected) 0) + [:* + [:div {:class (stl/css :invitations-actions)} + [:div + (tr "team.invitations-selected" (i18n/c (count @selected)))] + [:div + [:> button* {:variant "secondary" + :type "button" + :on-click on-resend} + (tr "labels.resend-invitation")]] + [:> icon-button* {:on-click on-delete + :variant "destructive" + :aria-label (tr "labels.delete-invitation") + :icon "delete"}]]]) [:div {:class (stl/css :table-header)} [:div {:class (stl/css :title-field-name)} (tr "labels.invitations")] - [:div {:class (stl/css :title-field-role)} (tr "labels.role")] - [:div {:class (stl/css :title-field-status)} (tr "labels.status")]] - (if (empty? invitations) + [:div {:class (stl/css :title-field-role)} (tr "labels.role") + [:> icon-button* {:variant "action" + :class (stl/css-case :sort-active (= (:field @sort-state) :role) + :sort-inactive (not= (:field @sort-state) :role)) + :aria-label (tr "dashboard.order-invitations-by-role") + :icon (if (= (:field @sort-state) :role) + (if (= (:direction @sort-state) :asc) "arrow-down" "arrow-up") + "arrow-down") + :on-click on-order-by-role}]] + [:div {:class (stl/css :title-field-status)} (tr "labels.status") + [:> icon-button* {:variant "action" + :class (stl/css-case :sort-active (= (:field @sort-state) :status) + :sort-inactive (not= (:field @sort-state) :status)) + :aria-label (tr "dashboard.order-invitations-by-status") + :icon (if (= (:field @sort-state) :status) + (if (= (:direction @sort-state) :asc) "arrow-down" "arrow-up") + "arrow-down") + :on-click on-order-by-status}]]] + (if (empty? @invitations) [:> empty-invitation-table* {:can-invite can-invite? :team team}] [:div {:class (stl/css :table-rows)} - (for [invitation invitations] + (for [invitation @invitations] [:> invitation-row* {:key (:email invitation) :invitation invitation :can-invite can-invite? - :team-id team-id}])])])) + :team-id team-id + :selected selected + :on-select-change on-select-change}])])])) (mf/defc team-invitations-page* {::mf/props :obj} diff --git a/frontend/src/app/main/ui/dashboard/team.scss b/frontend/src/app/main/ui/dashboard/team.scss index f47f603b76..90e33f5cca 100644 --- a/frontend/src/app/main/ui/dashboard/team.scss +++ b/frontend/src/app/main/ui/dashboard/team.scss @@ -4,8 +4,13 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "common/refactor/common-dashboard"; +@use "ds/_utils.scss" as *; +@use "ds/typography.scss" as t; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/mixins.scss" as *; // Dashboard team settings .dashboard-team-settings { @@ -13,68 +18,75 @@ flex-direction: column; align-items: center; width: 100%; - border-top: $s-1 solid var(--panel-border-color); + border-top: $b-1 solid var(--color-background-quaternary); overflow-y: auto; - padding-inline-start: $s-20; - padding-block-start: $s-20; + padding-inline-start: var(--sp-xl); + padding-block-start: var(--sp-xl); } .settings-container { display: flex; flex-direction: column; align-items: center; - gap: $s-24; + gap: var(--sp-xxl); } .block { display: grid; grid-auto-rows: min-content; - gap: $s-8; - max-width: $s-1000; + gap: var(--sp-s); + max-width: $sz-1000; width: 100%; } .info-block { - margin-block-start: $s-16; + margin-block-start: var(--sp-l); } .block-label { - @include headlineSmallTypography; - color: var(--title-foreground-color); + @include t.use-typography("headline-small"); + color: var(--color-foreground-secondary); } .block-text { - color: var(--title-foreground-color-hover); + color: var(--color-foreground-primary); } .block-content { display: grid; - grid-template-columns: $s-32 1fr; + grid-template-columns: var(--sp-xxxl) 1fr; align-items: center; - gap: $s-12; + gap: var(--sp-m); } .owner-icon { - width: $s-32; - height: $s-32; + width: $sz-32; + height: $sz-32; border-radius: 50%; } .user-icon, .document-icon, .group-icon { - @extend .button-icon; + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; margin: 0 auto; - stroke: var(--icon-foreground); + stroke: var(--color-foreground-secondary); } .team-icon { --update-button-opacity: 0; position: relative; - height: $s-120; - width: $s-120; - padding: $s-16; - margin-block-end: $s-32; + height: $sz-120; + width: $sz-120; + padding: var(--sp-l); + margin-block-end: var(--sp-xxxl); &:hover { --update-button-opacity: 1; @@ -86,29 +98,40 @@ top: 0; left: 0; border-radius: 50%; - width: $s-120; - height: $s-120; + width: $sz-120; + height: $sz-120; } .update-overlay { opacity: var(--update-button-opacity); - @include buttonStyle; - @include flexCenter; + border: none; + background: none; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; position: absolute; top: 0; left: 0; height: 100%; width: 100%; - z-index: $z-index-modal; + z-index: var(--z-index-set); border-radius: $br-circle; background-color: var(--color-accent-primary); } .image-icon { - @extend .button-icon; - min-width: $s-24; - min-height: $s-24; - stroke: var(--icon-foreground-hover); + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; + min-width: $sz-24; + min-height: $sz-24; + stroke: var(--color-foreground-primary); } // TEAM MEMBERS PAGE @@ -117,9 +140,9 @@ justify-content: center; width: 100%; height: 100%; - padding-inline-start: $s-20; - padding-block-start: $s-20; - border-top: $s-1 solid var(--panel-border-color); + padding-inline-start: var(--sp-xl); + padding-block-start: var(--sp-xl); + border-top: $b-1 solid var(--color-background-quaternary); overflow-y: auto; scrollbar-gutter: stable; } @@ -133,62 +156,69 @@ display: grid; grid-template-rows: auto 1fr; height: fit-content; - max-width: $s-1000; + max-width: $sz-1000; width: 100%; } .table-header { - @include headlineSmallTypography; + @include t.use-typography("headline-small"); display: grid; align-items: center; - grid-template-columns: 43% 1fr $s-108 $s-12; - height: $s-40; + grid-template-columns: 43% 1fr px2rem(108) var(--sp-m); + height: $sz-40; width: 100%; - max-width: $s-1000; - padding: 0 $s-16; + max-width: $sz-1000; + padding: 0 var(--sp-l); user-select: none; - color: var(--title-foreground-color); + color: var(--color-foreground-secondary); } .table-rows { display: grid; - grid-auto-rows: $s-64; - gap: $s-16; + grid-auto-rows: px2rem(64); + gap: var(--sp-l); width: 100%; height: 100%; - max-width: $s-1000; - margin-top: $s-16; - color: var(--title-foreground-color); + max-width: $sz-1000; + margin-top: var(--sp-l); + color: var(--color-foreground-secondary); } .table-row { display: grid; grid-template-columns: 43% 1fr auto; align-items: center; - height: $s-64; + height: px2rem(64); width: 100%; - padding: 0 $s-16; + padding: 0 var(--sp-l); border-radius: $br-8; - background-color: var(--dashboard-list-background-color); - color: var(--dashboard-list-foreground-color); + background-color: var(--color-background-tertiary); + color: var(--color-foreground-primary); } .title-field-name { width: 43%; - min-width: $s-300; + min-width: px2rem(300); } -.title-field-roles { +.title-field-role { position: relative; cursor: default; } +.title-field-role, +.title-field-status { + display: flex; + align-items: center; + gap: var(--sp-s); +} + .field-name { display: grid; grid-template-columns: auto 1fr; - gap: $s-16; + gap: var(--sp-l); width: 43%; - min-width: $s-300; + min-width: px2rem(300); } .field-roles { @@ -202,8 +232,8 @@ // MEMBER INFO .member-image { - height: $s-32; - width: $s-32; + height: $sz-32; + width: $sz-32; border-radius: $br-circle; } @@ -216,33 +246,33 @@ .member-name, .member-email { @include textEllipsis; - @include bodyLargeTypography; + @include t.use-typography("body-large"); } .member-email { - @include bodySmallTypography; - color: var(--dashboard-list-text-foreground-color); + @include t.use-typography("body-small"); + color: var(--color-foreground-secondary); } .you { - color: var(--dashboard-list-text-foreground-color); - margin-left: $s-6; + color: var(--color-foreground-secondary); + margin-left: px2rem(6); } // ROL INFO .rol-selector { + @include t.use-typography("body-medium"); position: relative; display: grid; grid-template-columns: 1fr auto; align-items: center; - height: $s-32; - min-width: $s-160; + height: $sz-32; + min-width: $sz-160; width: fit-content; - padding: $s-4 $s-8; + padding: var(--sp-xs) var(--sp-s); border-radius: $br-8; - border-color: var(--menu-background-color-hover); - background-color: var(--menu-background-color-hover); - font-size: $fs-14; + border-color: var(--color-background-quaternary); + background-color: var(--color-background-quaternary); } .has-priv { @@ -254,37 +284,96 @@ } .roles-dropdown { - @extend .menu-dropdown; - bottom: calc(-1 * $s-76); + box-shadow: var(--el-shadow-dark); + display: flex; + flex-direction: column; + gap: var(--sp-xs); + position: absolute; + padding: var(--sp-xs); + border-radius: $br-8; + z-index: var(--z-index-dropdown); + color: var(--color-foreground-primary); + background-color: var(--color-background-tertiary); + border: $b-2 solid var(--color-background-quaternary); + margin: 0; + bottom: calc(-1 * px2rem(76)); width: fit-content; - min-width: $s-160; + min-width: $sz-160; } .rol-dropdown-item { - @extend .menu-item-base; + @include t.use-typography("body-small"); + display: flex; + align-items: center; + justify-content: space-between; + height: $sz-28; + width: 100%; + padding: px2rem(6); + border-radius: $br-8; + cursor: pointer; + &:hover { + background-color: var(--color-background-quaternary); + } } // MEMBER ACTIONS .menu-icon { - @extend .button-icon; + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; stroke: var(--color-foreground-primary); } .menu-btn { - @include buttonStyle; + border: none; + background: none; + cursor: pointer; +} + +.input-checkbox { + // TODO: remove this extended class. + @extend .input-checkbox; + cursor: pointer; } .actions-dropdown { - @extend .menu-dropdown; - bottom: calc(-1 * $s-32); + box-shadow: var(--el-shadow-dark); + display: flex; + flex-direction: column; + gap: var(--sp-xs); + position: absolute; + padding: var(--sp-xs); + border-radius: $br-8; + z-index: var(--z-index-dropdown); + color: var(--color-foreground-primary); + background-color: var(--color-background-tertiary); + border: $b-2 solid var(--color-background-quaternary); + margin: 0; + bottom: calc(-1 * var(--sp-xxxl)); right: 0; left: unset; width: fit-content; - min-width: $s-160; + min-width: $sz-160; } .action-dropdown-item { - @extend .menu-item-base; + @include t.use-typography("body-small"); + display: flex; + align-items: center; + justify-content: space-between; + height: $sz-28; + width: 100%; + padding: px2rem(6); + border-radius: $br-8; + cursor: pointer; + &:hover { + background-color: var(--color-background-quaternary); + } } // TEAM INVITATION PAGE @@ -293,9 +382,9 @@ justify-content: center; width: 100%; height: 100%; - padding-inline-start: $s-20; - padding-block-start: $s-20; - border-top: $s-1 solid var(--panel-border-color); + padding-inline-start: var(--sp-xl); + padding-block-start: var(--sp-xl); + border-top: $b-1 solid var(--color-background-quaternary); overflow-y: auto; scrollbar-gutter: stable; } @@ -304,12 +393,27 @@ display: grid; grid-template-rows: auto 1fr; height: fit-content; - max-width: $s-1000; + max-width: $sz-1000; width: 100%; } +.invitations-actions { + @include t.use-typography("body-medium"); + display: flex; + justify-content: end; + align-items: center; + gap: var(--sp-l); + color: var(--title-foreground-color); + height: $sz-40; + margin-block-end: px2rem(36); +} + +.error-notification { + margin-block-end: var(--sp-xxl); +} + .table-row-invitations { - grid-template-columns: 43% 1fr $s-108 $s-12; + grid-template-columns: 43% 1fr $sz-88 var(--sp-xxl); align-items: center; } @@ -317,19 +421,20 @@ display: grid; place-items: center; align-content: center; - height: $s-156; - max-width: $s-1000; + height: px2rem(156); + max-width: $sz-1000; width: 100%; - margin-top: $s-16; - border: $s-1 solid var(--panel-border-color); + margin-top: var(--sp-l); + border: $b-1 solid var(--color-background-quaternary); border-radius: $br-8; - color: var(--dashboard-list-text-foreground-color); + color: var(--color-foreground-secondary); } .btn-empty-invitations { + // TODO: Remove this extend add DS component @extend .button-primary; - margin-block-start: $s-16; - padding-inline: $s-12; + margin-block-start: var(--sp-l); + padding-inline: var(--sp-m); } .title-field-status { @@ -337,16 +442,25 @@ cursor: default; } +.sort-inactive { + opacity: 0.5; +} + +.sort-active { + opacity: 1; +} + .field-email { @include textEllipsis; - @include bodyLargeTypography; - display: grid; + @include t.use-typography("body-large"); + display: flex; + gap: var(--sp-l); align-items: center; } .invitations-dropdown { - bottom: calc(-1 * $s-112); - right: calc(-1 * $s-20); + bottom: calc(-1 * px2rem(112)); + right: calc(-1 * var(--sp-xl)); } // WEBHOOKS SECTION @@ -354,63 +468,64 @@ display: grid; grid-template-rows: auto 1fr; justify-items: center; - gap: $s-24; + gap: var(--sp-xxl); width: 100%; height: 100%; - padding-inline-start: $s-20; - padding-block-start: $s-20; - border-top: $s-1 solid var(--panel-border-color); + padding-inline-start: var(--sp-xl); + padding-block-start: var(--sp-xl); + border-top: $b-1 solid var(--color-background-quaternary); overflow-y: auto; } .webhooks-hero-container { display: grid; grid-template-rows: auto 1fr; - margin: $s-80 auto $s-20 auto; - gap: $s-24; + margin: px2rem(80) auto var(--sp-xl) auto; + gap: var(--sp-xxl); } .webhooks-empty { display: grid; place-items: center; align-content: center; - height: $s-156; - max-width: $s-1000; + height: px2rem(156); + max-width: $sz-1000; width: 100%; - padding: $s-32; - border: $s-1 solid var(--panel-border-color); + padding: var(--sp-xxxl); + border: $b-1 solid var(--color-background-quaternary); border-radius: $br-8; - color: var(--dashboard-list-text-foreground-color); + color: var(--color-foreground-secondary); } .webhooks-hero { - font-size: $fs-14; + @include t.use-typography("body-medium"); display: grid; grid-template-rows: auto 1fr auto; - gap: $s-32; - margin-top: $s-32; + gap: var(--sp-xxxl); + margin-top: var(--sp-xxxl); margin: 0; - padding: $s-32; + padding: var(--sp-xxxl); padding: 0; - width: $s-468; + width: px2rem(468); } .hero-title { - @include bigTitleTipography; - color: var(--dashboard-list-foreground-color); + @include t.use-typography("title-large"); + color: var(--color-foreground-primary); } .hero-desc { + @include t.use-typography("body-large"); color: var(--color-foreground-secondary); margin-bottom: 0; - font-size: $fs-16; - max-width: $s-512; + max-width: $sz-512; } .hero-btn { + //TODO: Remove this extended class using a DS component @extend .button-primary; - height: $s-32; - max-width: $s-512; + height: $sz-32; + max-width: $sz-512; } .webhook-table { @@ -421,7 +536,7 @@ display: grid; align-items: center; grid-template-columns: auto 1fr auto auto; - gap: $s-16; + gap: var(--sp-l); } .actions { @@ -429,90 +544,143 @@ } .menu-disabled { - color: var(--icon-foreground); - width: $s-28; + color: var(--color-foreground-secondary); + width: $sz-28; display: flex; justify-content: center; align-items: center; } .webhook-actions-dropdown { - @extend .menu-dropdown; - right: calc(-1 * $s-16); - bottom: calc(-1 * $s-40); + box-shadow: var(--el-shadow-dark); + display: flex; + flex-direction: column; + gap: var(--sp-xs); + position: absolute; + padding: var(--sp-xs); + border-radius: $br-8; + z-index: var(--z-index-dropdown); + color: var(--color-foreground-primary); + background-color: var(--color-background-tertiary); + border: $b-2 solid var(--color-background-quaternary); + margin: 0; + right: calc(-1 * var(--sp-l)); + bottom: calc(-1 * $sz-40); width: fit-content; - min-width: $s-160; + min-width: $sz-160; } .webhook-dropdown-item { - @extend .menu-item-base; + @include t.use-typography("body-small"); + display: flex; + align-items: center; + justify-content: space-between; + height: $sz-28; + width: 100%; + padding: px2rem(6); + border-radius: $br-8; + cursor: pointer; + &:hover { + background-color: var(--color-background-quaternary); + } } .success-icon { - @extend .button-icon; - stroke: var(--alert-icon-foreground-color-success); + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; + stroke: var(--color-accent-success); } .warning-icon { - @extend .button-icon; - stroke: var(--alert-icon-foreground-color-warning); + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; + stroke: var(--color-accent-warning); } // INVITE MEMBERS MODAL .modal-team-container { - @extend .modal-container-base; - @include menuShadow; + position: relative; + padding: var(--sp-xxxl); + border-radius: $br-8; + background-color: var(--color-background-primary); + border: $b-2 solid var(--color-background-quaternary); + min-width: $sz-364; + min-height: $sz-192; + max-width: $sz-512; + max-height: $sz-512; + box-shadow: var(--el-shadow-dark); position: fixed; - top: $s-72; - right: $s-12; + top: px2rem(72); + right: var(--sp-m); left: unset; - width: $s-400; - padding: $s-32; - background-color: var(--modal-background-color); + width: $sz-400; + padding: var(--sp-xxxl); + background-color: var(--color-background-primary); &.hero { - top: $s-216; - right: $s-32; + top: px2rem(216); + right: var(--sp-xxxl); } } .modal-team-container-workspace { - top: $s-40; - z-index: $z-index-modal; + top: $sz-40; + z-index: var(--z-index-set); } .modal-title { - @include headlineMediumTypography; - height: $s-32; - color: var(--modal-title-foreground-color); + @include t.use-typography("headline-medium"); + height: $sz-32; + color: var(--color-foreground-primary); } .role-select { - @include flexColumn; - row-gap: $s-8; + display: flex; + flex-direction: column; + gap: var(--sp-xs); + row-gap: var(--sp-s); } .arrow-icon { - @extend .button-icon; - stroke: var(--icon-foreground); + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; + stroke: var(--color-foreground-secondary); transform: rotate(90deg); } .invite-team-member-text { - @include bodyLargeTypography; - margin: 0 0 $s-16 0; - color: var(--modal-title-foreground-color); + @include t.use-typography("body-large"); + margin: 0 0 var(--sp-l) 0; + color: var(--color-foreground-primary); } .role-title { - @include bodyLargeTypography; + @include t.use-typography("body-large"); margin: 0; - color: var(--modal-title-foreground-color); + color: var(--color-foreground-primary); } .invitation-row { - margin-top: $s-8; - margin-bottom: $s-24; + margin-top: var(--sp-s); + margin-bottom: var(--sp-xxl); } .action-buttons { @@ -521,46 +689,68 @@ } .accept-btn { + // TODO: remove this extend class creating a modal component @extend .modal-accept-btn; } // WEBHOOKS MODAL .modal-overlay { - @extend .modal-overlay-base; + display: flex; + justify-content: center; + align-items: center; + position: fixed; + left: 0; + top: 0; + height: 100%; + width: 100%; + z-index: var(--z-index-set); + background-color: var(--overlay-color); } .modal-container { - @extend .modal-container-base; + position: relative; + padding: var(--sp-xxxl); + border-radius: $br-8; + background-color: var(--color-background-primary); + border: $b-2 solid var(--color-background-quaternary); + min-width: $sz-364; + min-height: $sz-192; + max-width: $sz-512; + max-height: $sz-512; } .modal-header { - margin-bottom: $s-24; + margin-bottom: var(--sp-xxl); } .modal-title { - @include uppercaseTitleTipography; - color: var(--modal-title-foreground-color); + @include t.use-typography("title-small"); + color: var(--color-foreground-primary); } .modal-close-btn { + // TODO remove extended class creating a modal component @extend .modal-close-btn-base; } .modal-content { - @include flexColumn; - gap: $s-24; - @include bodySmallTypography; - margin-bottom: $s-24; + @include t.use-typography("body-small"); + display: flex; + flex-direction: column; + gap: var(--sp-xxl); + margin-bottom: var(--sp-xxl); } .fields-row { - @include flexColumn; + display: flex; + flex-direction: column; + gap: var(--sp-xs); } .select-title { - @include bodySmallTypography; - color: var(--modal-title-foreground-color); + @include t.use-typography("body-small"); + color: var(--color-foreground-primary); } .custom-input-checkbox { @@ -568,9 +758,10 @@ } .hint { - color: var(--modal-text-foreground-color); + color: var(--color-foreground-secondary); } +// TODO: Remove this extended classes creating a modal component .action-buttons { @extend .modal-action-btns; @@ -583,8 +774,68 @@ } } +// TODO: Remove this extended class using input component .email-input { + @include t.use-typography("body-small"); @extend .input-base; - @include bodySmallTypography; height: auto; } +// FIXME: This does not conform to our CSS Guidelines. Need to unnest and to use +// custom properties to handle state changes. +.input-wrapper { + display: flex; + align-items: center; + @include t.use-typography("body-large"); + + label { + display: flex; + align-items: center; + gap: px2rem(6); + cursor: pointer; + color: var(--color-foreground-primary); + + &:focus, + &:focus-within { + span { + border-color: var(--color-accent-primary); + } + } + &:hover { + span { + border-color: var(--color-accent-primary-muted); + } + } + } + + span { + @extend .checkbox-icon; + @include t.use-typography("body-small"); + color: var(--color-foreground-secondary); + } + input { + margin: 0; + @include t.use-typography("body-small"); + color: var(--color-foreground-secondary); + } +} + +// INVITATION MODAL + +.modal-invitation-container { + overflow: hidden; + display: flex; + flex-direction: column; +} + +.modal-invitation-content { + overflow: auto; +} + +.invitation-list p { + margin: 0; +} + +.modal-invitation-action-buttons { + margin-block-start: var(--sp-xxxl); + gap: var(--sp-s); +} diff --git a/frontend/src/app/main/ui/dashboard/team_form.scss b/frontend/src/app/main/ui/dashboard/team_form.scss index d57cffb82e..eba9c361d0 100644 --- a/frontend/src/app/main/ui/dashboard/team_form.scss +++ b/frontend/src/app/main/ui/dashboard/team_form.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -15,11 +15,11 @@ } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } @@ -28,20 +28,20 @@ } .modal-content { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .team-form { - min-width: $s-400; + min-width: deprecated.$s-400; } .group-name-input { @extend .input-element-label; - @include bodySmallTypography; - margin-bottom: $s-8; + @include deprecated.bodySmallTypography; + margin-bottom: deprecated.$s-8; label { - @include flexColumn; - @include bodySmallTypography; + @include deprecated.flexColumn; + @include deprecated.bodySmallTypography; align-items: flex-start; width: 100%; border: none; @@ -49,7 +49,7 @@ height: 100%; input { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } } } diff --git a/frontend/src/app/main/ui/dashboard/templates.scss b/frontend/src/app/main/ui/dashboard/templates.scss index 8d5a6ffb52..8a5ab660c0 100644 --- a/frontend/src/app/main/ui/dashboard/templates.scss +++ b/frontend/src/app/main/ui/dashboard/templates.scss @@ -4,32 +4,35 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_utils.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as t; .dashboard-templates-section { background-color: var(--color-background-tertiary); - bottom: 0; - border-bottom-left-radius: $br-8; - border-bottom-right-radius: $br-8; - border-top-right-radius: $br-8; + inset-block-end: 0; + border-end-start-radius: $br-8; + border-end-end-radius: $br-8; + border-start-end-radius: $br-8; display: flex; flex-direction: column; - height: $s-244; + height: px2rem(244); justify-content: flex-end; - margin-left: $s-6; - margin-right: $s-6; - margin-bottom: $s-6; + margin-inline-start: px2rem(6); + margin-inline-end: px2rem(6); + margin-block-end: px2rem(6); position: absolute; transition: bottom 300ms; - width: calc(100% - $s-12); + width: calc(100% - $sz-12); pointer-events: none; &.collapsed { - bottom: calc(-1 * $s-228); + inset-block-end: calc(-1 * px2rem(228)); background-color: transparent; transition: bottom 300ms; .title-btn { - border-bottom-right-radius: $br-8; - border-bottom-left-radius: $br-8; + border-end-end-radius: $br-8; + border-end-start-radius: $br-8; } .content, .content-description { @@ -40,56 +43,54 @@ .title { pointer-events: all; - width: $s-420; - top: calc(-1 * $s-40); + width: px2rem(420); + inset-block-start: calc(-1 * $sz-40); text-align: right; - height: $s-56; + height: px2rem(56); position: absolute; } .title-btn { border: none; cursor: pointer; - height: $s-56; + height: px2rem(56); display: inline-flex; align-items: center; - border-top-left-radius: $br-8; - border-top-right-radius: $br-8; + border-start-start-radius: $br-8; + border-start-end-radius: $br-8; position: relative; - z-index: $z-index-1; + z-index: var(--z-index-auto); background-color: var(--color-background-tertiary); width: 100%; } .title-text { + @include t.use-typography("body-large"); display: inline-block; vertical-align: middle; - line-height: 1.2; - font-size: $fs-16; - margin-left: $s-12; - margin-right: $s-8; + margin-inline-start: var(--sp-m); + margin-inline-end: var(--sp-s); color: var(--color-foreground-primary); - font-weight: $fw400; } .title-icon-container { display: inline-block; vertical-align: middle; - margin-left: auto; - margin-right: $s-8; + margin-inline-start: auto; + margin-inline-end: var(--sp-s); color: var(--color-foreground-primary); } .title-icon { display: inline-block; vertical-align: middle; - margin-left: auto; - margin-right: $s-8; + margin-inline-start: auto; + margin-inline-end: var(--sp-s); transform: rotate(90deg); } .title-icon-text { - margin-right: $s-8; + margin-inline-end: var(--sp-s); } .title-icon-collapsed { @@ -97,27 +98,34 @@ } .arrow-icon { - @extend .button-icon; + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; stroke: var(--color-foreground-secondary); } .move-button { position: absolute; - top: $s-96; - border: $s-2 solid var(--color-foreground-secondary); + inset-block-start: px2rem(96); + border: $b-2 solid var(--color-foreground-secondary); border-radius: 50%; text-align: center; - width: $s-36; - height: $s-36; + width: $sz-36; + height: $sz-36; cursor: pointer; - background-color: var(--button-secondary-background-color-rest); + background-color: var(--color-background-tertiary); display: flex; align-items: center; justify-content: center; pointer-events: all; &:hover { - border: $s-2 solid var(--color-background-tertiary); + border: $b-2 solid var(--color-background-tertiary); background-color: var(--color-accent-primary); .arrow-icon { stroke: var(--color-background-tertiary); @@ -126,31 +134,31 @@ } .move-left { - left: 0; - margin-left: $s-44; + inset-inline-start: 0; + margin-inline-start: px2rem(44); transform: rotate(180deg); } .move-right { - right: 0; - margin-right: $s-44; + inset-inline-end: 0; + margin-inline-end: px2rem(44); } .content-description { - font-size: $fs-14; + @include t.use-typography("body-medium"); color: var(--color-foreground-primary); - margin-bottom: -8px; - margin-top: $s-16; - margin-left: $s-16; + margin-block-end: calc(-1 * var(--sp-s)); + margin-block-start: var(--sp-l); + margin-inline-start: var(--sp-l); visibility: visible; } .content { display: grid; - grid-template-columns: repeat(auto-fill, minmax($s-276, $s-276)); + grid-template-columns: repeat(auto-fill, minmax(px2rem(276), px2rem(276))); grid-auto-flow: column; pointer-events: all; - height: $s-228; + height: px2rem(228); overflow: scroll hidden; scroll-behavior: smooth; scroll-snap-type: x mandatory; @@ -159,8 +167,8 @@ } .card-container { - width: $s-276; - margin-top: $s-20; + width: px2rem(276); + margin-block-start: var(--sp-xl); text-align: center; vertical-align: top; background-color: transparent; @@ -170,15 +178,16 @@ } .template-card { + @include t.use-typography("body-large"); display: inline-block; - width: $s-256; - font-size: $fs-16; + width: px2rem(256); cursor: pointer; color: var(--color-foreground-primary); - padding: 0 $s-4 $s-8 $s-4; + padding: 0 var(--sp-xs) var(--sp-s) var(--sp-xs); border-radius: $br-8; - border: $s-2 solid transparent; + border: $b-2 solid transparent; &:hover { + text-decoration: none; border-color: var(--color-accent-primary); .download-icon { stroke: var(--color-accent-primary); @@ -191,9 +200,9 @@ .img-container { width: 100%; - height: $s-136; - margin-bottom: $s-8; - border-radius: $br-5; + height: px2rem(136); + margin-block-end: var(--sp-s); + border-radius: px2rem(5); display: flex; justify-content: center; flex-direction: column; @@ -204,16 +213,15 @@ } .card-name { - padding: 0 $s-6; + padding: 0 px2rem(6); display: flex; justify-content: space-between; - height: $s-24; + height: $sz-24; align-items: center; } .card-text { - font-weight: $fw400; - font-size: $fs-16; + @include t.use-typography("body-large"); white-space: nowrap; overflow: hidden; width: 90%; @@ -222,24 +230,30 @@ } .download-icon { - @extend .button-icon; + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; stroke: var(--icon-foreground); } .template-link { - border: $s-2 solid transparent; - margin: $s-32; - padding: $s-32 0; + border: $b-2 solid transparent; + margin: var(--sp-xxxl); + padding: var(--sp-xxxl) 0; } .template-link-title { - font-size: $fs-14; + @include t.use-typography("body-medium"); color: var(--color-foreground-primary); - font-weight: $fw400; } .template-link-text { - font-size: $fs-12; - margin-top: $s-8; + @include t.use-typography("body-small"); + margin-block-start: var(--sp-s); color: var(--color-foreground-secondary); } diff --git a/frontend/src/app/main/ui/debug/icons_preview.scss b/frontend/src/app/main/ui/debug/icons_preview.scss index 673c1b0658..a8493ed42b 100644 --- a/frontend/src/app/main/ui/debug/icons_preview.scss +++ b/frontend/src/app/main/ui/debug/icons_preview.scss @@ -1,4 +1,4 @@ -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .container { display: grid; @@ -9,7 +9,7 @@ } .title { - @include bigTitleTipography; + @include deprecated.bigTitleTipography; color: var(--color-foreground-primary); } @@ -31,7 +31,7 @@ color: var(--color-foreground-primary); word-break: break-word; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; svg { width: var(--cell-size); diff --git a/frontend/src/app/main/ui/delete_shared.scss b/frontend/src/app/main/ui/delete_shared.scss index c0ee957e6a..ff842933da 100644 --- a/frontend/src/app/main/ui/delete_shared.scss +++ b/frontend/src/app/main/ui/delete_shared.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -18,11 +18,11 @@ } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include headlineMediumTypography; + @include deprecated.headlineMediumTypography; color: var(--modal-title-foreground-color); } @@ -31,12 +31,12 @@ } .modal-content { - @include bodySmallTypography; - margin-bottom: $s-24; + @include deprecated.bodySmallTypography; + margin-bottom: deprecated.$s-24; } .element-list { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); } @@ -58,7 +58,7 @@ .modal-scd-msg, .modal-subtitle, .modal-msg { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); line-height: 1.5; } diff --git a/frontend/src/app/main/ui/ds/_borders.scss b/frontend/src/app/main/ui/ds/_borders.scss index cccca570ff..2c3ee5cb84 100644 --- a/frontend/src/app/main/ui/ds/_borders.scss +++ b/frontend/src/app/main/ui/ds/_borders.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "./utils.scss" as *; +@use "ds/_utils.scss" as *; // TODO: create actual tokens once we have them from design $br-8: px2rem(8); diff --git a/frontend/src/app/main/ui/ds/_sizes.scss b/frontend/src/app/main/ui/ds/_sizes.scss index dd737f6a5a..e92d399007 100644 --- a/frontend/src/app/main/ui/ds/_sizes.scss +++ b/frontend/src/app/main/ui/ds/_sizes.scss @@ -4,26 +4,40 @@ // // Copyright (c) KALEIDOS INC -@use "./utils.scss" as *; +@use "ds/_utils.scss" as *; // TODO: create actual tokens once we have them from design +$sz-1: px2rem(1); $sz-6: px2rem(6); +$sz-12: px2rem(12); +$sz-14: px2rem(14); $sz-16: px2rem(16); $sz-24: px2rem(24); +$sz-28: px2rem(28); $sz-32: px2rem(32); $sz-36: px2rem(36); $sz-40: px2rem(40); $sz-48: px2rem(48); -$sz-80: px2rem(80); $sz-88: px2rem(88); +$sz-96: px2rem(96); +$sz-120: px2rem(120); +$sz-154: px2rem(154); $sz-160: px2rem(160); +$sz-192: px2rem(192); $sz-200: px2rem(200); $sz-224: px2rem(224); $sz-252: px2rem(252); $sz-284: px2rem(284); $sz-318: px2rem(318); $sz-352: px2rem(352); +$sz-364: px2rem(364); +$sz-384: px2rem(384); $sz-400: px2rem(400); +$sz-430: px2rem(430); $sz-480: px2rem(480); $sz-500: px2rem(500); +$sz-512: px2rem(512); +$sz-520: px2rem(520); +$sz-712: px2rem(712); $sz-964: px2rem(964); +$sz-1000: px2rem(1000); diff --git a/frontend/src/app/main/ui/ds/buttons/_buttons.scss b/frontend/src/app/main/ui/ds/buttons/_buttons.scss index 08aa9fb81c..64f34c5b1a 100644 --- a/frontend/src/app/main/ui/ds/buttons/_buttons.scss +++ b/frontend/src/app/main/ui/ds/buttons/_buttons.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../_borders.scss" as *; -@use "../_sizes.scss" as *; -@use "../utils.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_utils.scss" as *; %base-button { --button-bg-color: initial; diff --git a/frontend/src/app/main/ui/ds/buttons/button.cljs b/frontend/src/app/main/ui/ds/buttons/button.cljs index 376d063fc7..237b4c5e23 100644 --- a/frontend/src/app/main/ui/ds/buttons/button.cljs +++ b/frontend/src/app/main/ui/ds/buttons/button.cljs @@ -6,9 +6,9 @@ (ns app.main.ui.ds.buttons.button (:require-macros - [app.common.data.macros :as dm] [app.main.style :as stl]) (:require + [app.common.data :as d] [app.main.ui.ds.foundations.assets.icon :refer [icon* icon-list]] [rumext.v2 :as mf])) @@ -18,22 +18,26 @@ [:icon {:optional true} [:and :string [:fn #(contains? icon-list %)]]] [:on-ref {:optional true} fn?] + [:to {:optional true} :string] ;; renders as an anchor element [:variant {:optional true} [:maybe [:enum "primary" "secondary" "ghost" "destructive"]]]]) (mf/defc button* {::mf/schema schema:button} - [{:keys [variant icon children class on-ref] :rest props}] - (let [variant (or variant "primary") - class (dm/str class " " (stl/css-case :button true - :button-primary (= variant "primary") - :button-secondary (= variant "secondary") - :button-ghost (= variant "ghost") - :button-destructive (= variant "destructive"))) - props (mf/spread-props props {:class class + [{:keys [variant icon children class on-ref to] :rest props}] + (let [variant (d/nilv variant "primary") + element (if to "a" "button") + internal-class (stl/css-case :button true + :button-link (some? to) + :button-primary (= variant "primary") + :button-secondary (= variant "secondary") + :button-ghost (= variant "ghost") + :button-destructive (= variant "destructive")) + props (mf/spread-props props {:class [class internal-class] + :href to :ref (fn [node] (when on-ref (on-ref node)))})] - [:> "button" props + [:> element props (when icon [:> icon* {:icon-id icon :size "m"}]) [:span {:class (stl/css :label-wrapper)} children]])) diff --git a/frontend/src/app/main/ui/ds/buttons/button.scss b/frontend/src/app/main/ui/ds/buttons/button.scss index 5e7b2cfe63..dd8c720559 100644 --- a/frontend/src/app/main/ui/ds/buttons/button.scss +++ b/frontend/src/app/main/ui/ds/buttons/button.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "../typography.scss" as *; +@use "ds/typography.scss" as *; @use "./buttons" as *; .button { @@ -33,3 +33,9 @@ .button-destructive { @extend %base-button-destructive; } + +.button-link { + &:hover { + text-decoration: none; + } +} diff --git a/frontend/src/app/main/ui/ds/buttons/buttons.mdx b/frontend/src/app/main/ui/ds/buttons/buttons.mdx index 229798cb31..586a04cb3c 100644 --- a/frontend/src/app/main/ui/ds/buttons/buttons.mdx +++ b/frontend/src/app/main/ui/ds/buttons/buttons.mdx @@ -69,6 +69,11 @@ Action buttons are a variant of `icon-button*` (`"action"`) but smaller. +### Semantics + +In some cases, a button needs to be semantically an 'a' tag, but visually maintain the button style. +In that case, the button accepts a 'to' property with the expected 'href'. It will then be rendered as an anchor element. + ### Accessibility Icon buttons require an `aria-label`. This is also shown in a tooltip on hovering the button. diff --git a/frontend/src/app/main/ui/ds/buttons/icon_button.cljs b/frontend/src/app/main/ui/ds/buttons/icon_button.cljs index 1d2995ea8e..551142e757 100644 --- a/frontend/src/app/main/ui/ds/buttons/icon_button.cljs +++ b/frontend/src/app/main/ui/ds/buttons/icon_button.cljs @@ -20,13 +20,15 @@ [:icon [:and :string [:fn #(contains? icon-list %)]]] [:aria-label :string] + [:tooltip-placement {:optional true} + [:maybe [:enum "top" "bottom" "left" "right" "top-right" "bottom-right" "bottom-left" "top-left"]]] [:variant {:optional true} [:maybe [:enum "primary" "secondary" "ghost" "destructive" "action"]]]]) (mf/defc icon-button* {::mf/schema schema:icon-button ::mf/memo true} - [{:keys [class icon icon-class variant aria-label children] :rest props}] + [{:keys [class icon icon-class variant aria-label children tooltip-placement] :rest props}] (let [variant (d/nilv variant "primary") @@ -47,6 +49,7 @@ :aria-labelledby tooltip-id})] [:> tooltip* {:content aria-label + :placement tooltip-placement :id tooltip-id} [:> :button props [:> icon* {:icon-id icon :aria-hidden true :class icon-class}] diff --git a/frontend/src/app/main/ui/ds/buttons/icon_button.scss b/frontend/src/app/main/ui/ds/buttons/icon_button.scss index 3a75812646..26c8692558 100644 --- a/frontend/src/app/main/ui/ds/buttons/icon_button.scss +++ b/frontend/src/app/main/ui/ds/buttons/icon_button.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../typography.scss" as *; -@use "../_sizes.scss" as *; +@use "ds/typography.scss" as *; +@use "ds/_sizes.scss" as *; @use "./buttons" as *; .icon-button { diff --git a/frontend/src/app/main/ui/ds/colors.scss b/frontend/src/app/main/ui/ds/colors.scss index d3f01a8a16..aa3d93bce6 100644 --- a/frontend/src/app/main/ui/ds/colors.scss +++ b/frontend/src/app/main/ui/ds/colors.scss @@ -29,6 +29,7 @@ $pink-400: #ff6fe0; $purple-200: #e1d2f5; $purple-400: #bb97d8; +$purple-500: #a977d1; $purple-600: #8c33eb; $purple-700: #6911d4; $purple-600-10: #8c33eb1a; @@ -76,6 +77,8 @@ $grayish-red: #bfbfbf; --color-accent-quaternary: #{$pink-400}; --color-accent-overlay: #{$purple-700-60}; --color-accent-select: #{$purple-600-10}; + --color-accent-action: #{$purple-400}; + --color-accent-action-hover: #{$purple-500}; --color-accent-success: #{$green-500}; --color-background-success: #{$green-200}; @@ -98,6 +101,9 @@ $grayish-red: #bfbfbf; --color-foreground-primary: #{$black}; --color-foreground-secondary: #{$blue-teal-700}; + --color-static-white: #{$white}; + --color-static-black: #{$black}; + --color-shadow-dark: #{color.change($gray-200, $alpha: 0.6)}; --color-overlay-default: #{$white-60}; --color-overlay-onboarding: #{$white-90}; @@ -119,6 +125,8 @@ $grayish-red: #bfbfbf; --color-accent-quaternary: #{$pink-400}; --color-accent-overlay: #{$mint-150-60}; --color-accent-select: #{$mint-250-10}; + --color-accent-action: #{$purple-400}; + --color-accent-action-hover: #{$purple-500}; --color-accent-success: #{$green-500}; --color-background-success: #{$green-950}; @@ -141,6 +149,9 @@ $grayish-red: #bfbfbf; --color-foreground-primary: #{$white}; --color-foreground-secondary: #{$grayish-blue-500}; + --color-static-white: #{$white}; + --color-static-black: #{$black}; + --color-shadow-dark: #{color.change($black, $alpha: 0.6)}; --color-overlay-default: #{$gray-950-60}; --color-overlay-onboarding: #{$gray-950-90}; diff --git a/frontend/src/app/main/ui/ds/controls/combobox.scss b/frontend/src/app/main/ui/ds/controls/combobox.scss index 18eb9051ad..3df8586715 100644 --- a/frontend/src/app/main/ui/ds/controls/combobox.scss +++ b/frontend/src/app/main/ui/ds/controls/combobox.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../_borders.scss" as *; -@use "../_sizes.scss" as *; -@use "../typography.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as *; .wrapper { --combobox-icon-color: var(--color-icon-default); diff --git a/frontend/src/app/main/ui/ds/controls/input.scss b/frontend/src/app/main/ui/ds/controls/input.scss index a78df29a1b..3de9b95466 100644 --- a/frontend/src/app/main/ui/ds/controls/input.scss +++ b/frontend/src/app/main/ui/ds/controls/input.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "../spacing.scss" as *; +@use "ds/spacing.scss" as *; .input-wrapper { display: flex; diff --git a/frontend/src/app/main/ui/ds/controls/numeric_input.stories.jsx b/frontend/src/app/main/ui/ds/controls/numeric-input.stories.jsx similarity index 95% rename from frontend/src/app/main/ui/ds/controls/numeric_input.stories.jsx rename to frontend/src/app/main/ui/ds/controls/numeric-input.stories.jsx index f3d2d20c8c..43d2971c42 100644 --- a/frontend/src/app/main/ui/ds/controls/numeric_input.stories.jsx +++ b/frontend/src/app/main/ui/ds/controls/numeric-input.stories.jsx @@ -44,8 +44,9 @@ export default { property: "search", }, parameters: { - controls: { exclude: ["tokens"] }, + controls: { exclude: ["tokens"] } }, + render: ({ ...args }) => , }; @@ -116,6 +117,14 @@ export const WithTokens = { }, ], }, + }, + parameters: { + controls: { exclude: ["tokens"] }, + docs: { + story: { + height: "320px", + }, + }, }, render: ({ ...args }) => , }; diff --git a/frontend/src/app/main/ui/ds/controls/numeric_input.cljs b/frontend/src/app/main/ui/ds/controls/numeric_input.cljs index 4c26835576..e09200febe 100644 --- a/frontend/src/app/main/ui/ds/controls/numeric_input.cljs +++ b/frontend/src/app/main/ui/ds/controls/numeric_input.cljs @@ -149,6 +149,32 @@ j))) indices))) +(defn- sort-groups-and-tokens + "Sorts both the groups and the tokens inside them alphabetically. + + Input: + A map where: + - keys are groups (keywords or strings, e.g. :dimensions, :colors) + - values are vectors of token maps, each containing at least a :name key + + Example input: + {:dimensions [{:name \"tres\"} {:name \"quini\"}] + :colors [{:name \"azul\"} {:name \"rojo\"}]} + + Output: + A sorted map where: + - groups are ordered alphabetically by key + - tokens inside each group are sorted alphabetically by :name + + Example output: + {:colors [{:name \"azul\"} {:name \"rojo\"}] + :dimensions [{:name \"quini\"} {:name \"tres\"}]}" + + [groups->tokens] + (into (sorted-map) ;; ensure groups are ordered alphabetically by their key + (for [[group tokens] groups->tokens] + [group (sort-by :name tokens)]))) + (def ^:private schema:icon [:and :string [:fn #(contains? icon-list %)]]) @@ -158,16 +184,17 @@ [:class {:optional true} :string] [:value {:optional true} [:maybe [:or :int + :float :string [:= :multiple]]]] [:default {:optional true} [:maybe :string]] [:placeholder {:optional true} :string] [:icon {:optional true} [:maybe schema:icon]] [:disabled {:optional true} [:maybe :boolean]] - [:min {:optional true} [:maybe :int]] - [:max {:optional true} [:maybe :int]] + [:min {:optional true} [:maybe [:or :int :float]]] + [:max {:optional true} [:maybe [:or :int :float]]] [:max-length {:optional true} :int] - [:step {:optional true} [:maybe :int]] + [:step {:optional true} [:maybe [:or :int :float]]] [:is-selected-on-focus {:optional true} :boolean] [:nillable {:optional true} :boolean] [:applied-token {:optional true} [:maybe [:or :string [:= :multiple]]]] @@ -177,7 +204,7 @@ [:on-focus {:optional true} fn?] [:on-detach {:optional true} fn?] [:property {:optional true} :string] - [:align {:optional true} [:enum :left :right]]]) + [:align {:optional true} [:maybe [:enum :left :right]]]]) (mf/defc numeric-input* {::mf/schema schema:numeric-input} @@ -195,7 +222,6 @@ tokens (if (object? tokens) (mfu/bean tokens) tokens) - value (if (= :multiple applied-token) :multiple value) @@ -260,11 +286,13 @@ (mf/with-memo [tokens filter-id] (delay (let [tokens (if (delay? tokens) @tokens tokens) + + sorted-tokens (sort-groups-and-tokens tokens) partial (extract-partial-brace-text filter-id) options (if (seq partial) - (filter-token-groups-by-name tokens partial) - tokens) - no-sets? (nil? tokens)] + (filter-token-groups-by-name sorted-tokens partial) + sorted-tokens) + no-sets? (nil? sorted-tokens)] (generate-dropdown-options options no-sets?)))) selected-id* @@ -595,12 +623,14 @@ :on-key-down on-key-down :on-focus on-focus :on-change store-raw-value + :variant "comfortable" :disabled disabled :slot-start (when icon (mf/html [:> tooltip* {:content property :id property} [:> icon* {:icon-id icon + :size "s" :aria-labelledby property :class (stl/css :icon)}]])) :slot-end (when-not disabled @@ -634,6 +664,7 @@ {:content property :id property} [:> icon* {:icon-id icon + :size "s" :aria-labelledby property :class (stl/css :icon)}]])) :token-wrapper-ref token-wrapper-ref diff --git a/frontend/src/app/main/ui/ds/controls/numeric_input.mdx b/frontend/src/app/main/ui/ds/controls/numeric_input.mdx index 9eaac5dd46..def6d701d4 100644 --- a/frontend/src/app/main/ui/ds/controls/numeric_input.mdx +++ b/frontend/src/app/main/ui/ds/controls/numeric_input.mdx @@ -4,8 +4,79 @@ Copyright (c) KALEIDOS INC */ } import { Canvas, Meta } from '@storybook/blocks'; -import * as InputStories from "./numeric_input.stories"; +import * as InputStories from "./numeric-input.stories"; -# Numeric Input \ No newline at end of file +# Numeric Input + +The `numeric-input*` component allows users to enter numerical values, apply tokens, or perform simple mathematical expressions. +It combines a numeric input field with token integration, making it flexible for design systems where values can come from either fixed numbers or token references. + +## Variants + +### Default +The standard numeric input that accepts direct numeric input. + + +### With Tokens +When tokens are available, the user can open a dropdown and apply a token instead of entering a fixed number. +The token will be displayed inside the input field and can be detached if needed. + + +## Technical notes + +### Tokens + +- Numeric input supports applying tokens via a dropdown that opens when typing `{` or clicking the token button. +- Tokens are grouped and searchable. +- Once a token is applied, the input field is replaced with a **token field**, showing the token name and its resolved value. + +### Validation & Math Expressions + +- The input accepts simple math expressions (e.g. `2+2`, `100/4`) and resolves them on blur. +- Values are automatically clamped to the provided `min` and `max` range. +- If the input is left empty and `nillable` is enabled, the value can be `nil`. + +### Icons + +`numeric-input*` supports optional icons at the start of the field for additional context. +Icons come from the `app.main.ui.ds.foundations.assets.icon` namespace. + +```clj +(ns app.main.ui.foo + (:require + [app.main.ui.ds.foundations.assets.icon :as i])) + +[:> numeric-input* + {:icon i/hash + :placeholder "Enter number" + :min 0 + :max 100 + :step 1}] +``` + +## Usage guidelines (design) +### Where to Use + +Use numeric input in forms and properties panels where users need to adjust numerical values, such as sizes, spacings, or opacities. + +### When to Use + +When users must provide a numeric value within a defined range. + +When design tokens can be applied instead of raw numbers. + +When supporting advanced workflows where math expressions improve speed. + +### Interaction / Behavior + +Typing Numbers: The user can type numbers directly in the field. + +Using Tokens: Typing `{` opens a token dropdown; selecting one replaces the raw value with the token. + +Increment / Decrement: Users can adjust values with arrow keys ↑/↓ or mouse wheel. + +Validation: Invalid or out-of-range inputs fall back to the last valid value or the default. + +Detaching Tokens: Applied tokens can be removed via the detach button or with Backspace/Delete. diff --git a/frontend/src/app/main/ui/ds/controls/numeric_input.scss b/frontend/src/app/main/ui/ds/controls/numeric_input.scss index a44717f826..ec9b2aec69 100644 --- a/frontend/src/app/main/ui/ds/controls/numeric_input.scss +++ b/frontend/src/app/main/ui/ds/controls/numeric_input.scss @@ -4,13 +4,15 @@ // // Copyright (c) KALEIDOS INC -@use "../spacing.scss" as *; -@use "../borders.scss" as *; -@use "../sizes.scss" as *; -@use "../typography.scss" as t; +@use "ds/_borders.scss" as *; +@use "ds/spacing.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as t; .input-wrapper { + --input-padding-size: var(--sp-xs); --opacity-button: 0; + @include t.use-typography("code-font"); display: flex; flex-direction: column; gap: var(--sp-xs); diff --git a/frontend/src/app/main/ui/ds/controls/select.cljs b/frontend/src/app/main/ui/ds/controls/select.cljs index cb1e9ec135..a8572dd8b9 100644 --- a/frontend/src/app/main/ui/ds/controls/select.cljs +++ b/frontend/src/app/main/ui/ds/controls/select.cljs @@ -52,11 +52,12 @@ [:disabled {:optional true} :boolean] [:default-selected {:optional true} :string] [:empty-to-end {:optional true} [:maybe :boolean]] - [:on-change {:optional true} fn?]]) + [:on-change {:optional true} fn?] + [:variant {:optional true} [:maybe [:enum "default" "ghost"]]]]) (mf/defc select* {::mf/schema schema:select} - [{:keys [options class disabled default-selected empty-to-end on-change] :rest props}] + [{:keys [options class disabled default-selected empty-to-end on-change variant] :rest props}] (let [;; NOTE: we use mfu/bean here for transparently handle ;; options provide as clojure data structures or javascript ;; plain objects and lists. @@ -64,6 +65,8 @@ (mfu/bean options) options) + variant (d/nilv variant "default") + empty-to-end (d/nilv empty-to-end false) is-open* (mf/use-state false) is-open (deref is-open*) @@ -162,7 +165,7 @@ (reset! focused-id* nil))))))) props - (mf/spread-props props {:class [class (stl/css :select)] + (mf/spread-props props {:class [class (stl/css :select) (stl/css-case :variant-ghost (= variant "ghost"))] :role "combobox" :aria-controls listbox-id :aria-haspopup "listbox" @@ -183,7 +186,10 @@ (get selected-option :icon) has-icon? - (some? icon)] + (some? icon) + + dimmed? + (:dimmed selected-option)] (mf/with-effect [options] (mf/set-ref-val! options-ref options)) @@ -201,7 +207,7 @@ :size "s" :aria-hidden true}]) [:span {:class (stl/css-case :header-label true - :header-label-dimmed empty-selected-id?)} + :header-label-dimmed (or empty-selected-id? dimmed?))} (if ^boolean empty-selected-id? "--" label)]] [:> icon* {:icon-id i/arrow-down diff --git a/frontend/src/app/main/ui/ds/controls/select.mdx b/frontend/src/app/main/ui/ds/controls/select.mdx index 0ecdf1e7af..d51bc592a2 100644 --- a/frontend/src/app/main/ui/ds/controls/select.mdx +++ b/frontend/src/app/main/ui/ds/controls/select.mdx @@ -34,6 +34,9 @@ If we consider that empty options have a special meaning, we can move them to th Each option of `select*` may accept an `icon`, which must contain an [icon ID](../foundations/assets/icon.mdx). These are available in the `app.main.ds.foundations.assets.icon` namespace. +### Dimmed +Each option can have an optional parameter `dimmed` with value `true` to show the option dimmed + ```clj (ns app.main.ui.foo @@ -42,7 +45,7 @@ These are available in the `app.main.ds.foundations.assets.icon` namespace. ``` ```clj -[:> select* +[:> select* {:options [{ :label "Code" :id "option-code" :icon i/fill-content } @@ -50,7 +53,8 @@ These are available in the `app.main.ds.foundations.assets.icon` namespace. :id "option-design" :icon i/pentool } { :label "Menu" - :id "option-menu" } + :id "option-menu" + :dimmed true } ]}] ``` @@ -58,8 +62,8 @@ These are available in the `app.main.ds.foundations.assets.icon` namespace. ### Where to use -Used in a wide range of applications in the app, -to select among available text-based options, +Used in a wide range of applications in the app, +to select among available text-based options, sometimes with icons that offers additional context. ### When to use @@ -68,5 +72,5 @@ Consider using select when you have 5 or more options to choose from. ### Interaction / Behavior -When the user clicks on the clickable area, a list of +When the user clicks on the clickable area, a list of options appears. When an option is chosen, the list is closed. \ No newline at end of file diff --git a/frontend/src/app/main/ui/ds/controls/select.scss b/frontend/src/app/main/ui/ds/controls/select.scss index 6f5856f1ad..ce9fc573c7 100644 --- a/frontend/src/app/main/ui/ds/controls/select.scss +++ b/frontend/src/app/main/ui/ds/controls/select.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../_borders.scss" as *; -@use "../_sizes.scss" as *; -@use "../typography.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as *; .select-wrapper { --select-icon-color: var(--color-icon-default); @@ -18,6 +18,7 @@ &:hover { --select-background-color: var(--color-background-quaternary); + --select-icon-color: var(--color-foreground-primary); } @include use-typography("body-small"); @@ -43,8 +44,8 @@ display: grid; grid-template-columns: 1fr auto; gap: var(--sp-xs); - height: $sz-32; - width: 100%; + block-size: $sz-32; + inline-size: 100%; padding: var(--sp-s); border: none; border-radius: $br-8; @@ -55,6 +56,19 @@ appearance: none; } +.variant-ghost { + --select-background-color: transparent; + inline-size: fit-content; + + & .arrow { + margin-inline-start: var(--sp-xs); + } + + &:is(:focus-visible, :disabled) { + --select-background-color: transparent; + } +} + .arrow { color: var(--select-icon-color); } diff --git a/frontend/src/app/main/ui/ds/controls/select.stories.jsx b/frontend/src/app/main/ui/ds/controls/select.stories.jsx index 2529b851dc..5bbf204654 100644 --- a/frontend/src/app/main/ui/ds/controls/select.stories.jsx +++ b/frontend/src/app/main/ui/ds/controls/select.stories.jsx @@ -9,6 +9,11 @@ import Components from "@target/components"; const { Select } = Components; +const variants = [ + "default", + "ghost", +]; + const options = [ { id: "option-code", label: "Code" }, { id: "option-design", label: "Design" }, @@ -29,12 +34,17 @@ export default { argTypes: { disabled: { control: "boolean" }, emptyToEnd: { control: "boolean" }, + variant: { + control: { type: "select" }, + options: variants, + }, }, args: { disabled: false, options: options, emptyToEnd: false, defaultSelected: "option-code", + variant: variants[0], }, parameters: { controls: { @@ -51,6 +61,12 @@ export default { export const Default = {}; +export const Ghost = { + args: { + variant: "ghost", + }, +}; + export const WithIcons = { args: { options: optionsWithIcons, diff --git a/frontend/src/app/main/ui/ds/controls/shared/option.scss b/frontend/src/app/main/ui/ds/controls/shared/option.scss index 9720ad3960..0c2462206b 100644 --- a/frontend/src/app/main/ui/ds/controls/shared/option.scss +++ b/frontend/src/app/main/ui/ds/controls/shared/option.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../_borders.scss" as *; -@use "../../_sizes.scss" as *; -@use "../../typography.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as *; .option { --options-fg-color: var(--color-foreground-primary); diff --git a/frontend/src/app/main/ui/ds/controls/shared/options_dropdown.cljs b/frontend/src/app/main/ui/ds/controls/shared/options_dropdown.cljs index 3a7bef9cac..d604b60319 100644 --- a/frontend/src/app/main/ui/ds/controls/shared/options_dropdown.cljs +++ b/frontend/src/app/main/ui/ds/controls/shared/options_dropdown.cljs @@ -95,7 +95,7 @@ :icon (get option :icon) :ref ref :focused (= id focused) - :dimmed false + :dimmed (true? (:dimmed option)) :on-click on-click}])))) diff --git a/frontend/src/app/main/ui/ds/controls/shared/options_dropdown.scss b/frontend/src/app/main/ui/ds/controls/shared/options_dropdown.scss index 7b98d05ccc..59f72657b4 100644 --- a/frontend/src/app/main/ui/ds/controls/shared/options_dropdown.scss +++ b/frontend/src/app/main/ui/ds/controls/shared/options_dropdown.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../_borders.scss" as *; -@use "../../_sizes.scss" as *; -@use "../../typography.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as *; .option-list { --options-dropdown-icon-fg-color: var(--color-foreground-secondary); @@ -17,6 +17,7 @@ position: absolute; top: $sz-36; width: var(--dropdown-width, 100%); + transform: translateX(var(--dropdown-translate-distance, 0)); background-color: var(--options-dropdown-bg-color); border-radius: $br-8; border: $b-1 solid var(--options-dropdown-border-color); diff --git a/frontend/src/app/main/ui/ds/controls/shared/token_option.scss b/frontend/src/app/main/ui/ds/controls/shared/token_option.scss index e168da53a5..884ddfea54 100644 --- a/frontend/src/app/main/ui/ds/controls/shared/token_option.scss +++ b/frontend/src/app/main/ui/ds/controls/shared/token_option.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../_borders.scss" as *; -@use "../../_sizes.scss" as *; -@use "../../typography.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as *; .token-option { --token-options-fg-color: var(--color-foreground-primary); diff --git a/frontend/src/app/main/ui/ds/controls/utilities/hint_message.cljs b/frontend/src/app/main/ui/ds/controls/utilities/hint_message.cljs index 04b3aaaaf3..78925688e1 100644 --- a/frontend/src/app/main/ui/ds/controls/utilities/hint_message.cljs +++ b/frontend/src/app/main/ui/ds/controls/utilities/hint_message.cljs @@ -13,7 +13,7 @@ (def ^:private schema::hint-message [:map - [:message :string] + [:message [:or fn? :string]] [:id :string] [:type {:optional true} [:enum "hint" "error" "warning"]] [:class {:optional true} :string]]) diff --git a/frontend/src/app/main/ui/ds/controls/utilities/hint_message.scss b/frontend/src/app/main/ui/ds/controls/utilities/hint_message.scss index c80cf0e1a5..1112a3f816 100644 --- a/frontend/src/app/main/ui/ds/controls/utilities/hint_message.scss +++ b/frontend/src/app/main/ui/ds/controls/utilities/hint_message.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../../typography.scss" as *; -@use "../../colors.scss" as *; +@use "ds/typography.scss" as *; +@use "ds/colors.scss" as *; .hint-message { --hint-color: var(--color-foreground-secondary); diff --git a/frontend/src/app/main/ui/ds/controls/utilities/input_field.cljs b/frontend/src/app/main/ui/ds/controls/utilities/input_field.cljs index 4f546ade66..4a8bcb1554 100644 --- a/frontend/src/app/main/ui/ds/controls/utilities/input_field.cljs +++ b/frontend/src/app/main/ui/ds/controls/utilities/input_field.cljs @@ -6,18 +6,19 @@ (ns app.main.ui.ds.controls.utilities.input-field (:require-macros - [app.common.data.macros :as dm] [app.main.style :as stl]) (:require [app.common.data :as d] [app.main.constants :refer [max-input-length]] [app.main.ui.ds.foundations.assets.icon :refer [icon* icon-list]] + [app.main.ui.ds.tooltip :refer [tooltip*]] [app.util.dom :as dom] [rumext.v2 :as mf])) (def ^:private schema:input-field [:map [:class {:optional true} :string] + [:aria-label {:optional true} [:maybe :string]] [:id :string] [:icon {:optional true} [:maybe [:and :string [:fn #(contains? icon-list %)]]]] @@ -35,10 +36,13 @@ [{:keys [id icon class type has-hint hint-type max-length variant - slot-start slot-end] :rest props} ref] + slot-start slot-end + aria-label] :rest props} ref] (let [input-ref (mf/use-ref) type (d/nilv type "text") variant (d/nilv variant "dense") + tooltip-id (mf/use-id) + props (mf/spread-props props {:class (stl/css-case :input true @@ -49,10 +53,18 @@ "true") :aria-describedby (when has-hint (str id "-hint")) + :aria-labelledby tooltip-id :type (d/nilv type "text") :id id :max-length (d/nilv max-length max-input-length)}) - + inside-class (stl/css-case :input-wrapper true + :has-hint has-hint + :hint-type-hint (= hint-type "hint") + :hint-type-warning (= hint-type "warning") + :hint-type-error (= hint-type "error") + :variant-seamless (= variant "seamless") + :variant-dense (= variant "dense") + :variant-comfortable (= variant "comfortable")) on-icon-click (mf/use-fn (mf/deps ref) @@ -61,18 +73,15 @@ (dom/select-node input-node) (dom/focus! input-node))))] - [:div {:class (dm/str class " " (stl/css-case :input-wrapper true - :has-hint has-hint - :hint-type-hint (= hint-type "hint") - :hint-type-warning (= hint-type "warning") - :hint-type-error (= hint-type "error") - :variant-seamless (= variant "seamless") - :variant-dense (= variant "dense") - :variant-comfortable (= variant "comfortable")))} + [:div {:class [inside-class class]} (when (some? slot-start) slot-start) (when (some? icon) - [:> icon* {:icon-id icon :class (stl/css :icon) :on-click on-icon-click}]) + (if aria-label + [:> tooltip* {:content aria-label + :id tooltip-id} + [:> icon* {:icon-id icon :class (stl/css :icon) :on-click on-icon-click}]] + [:> icon* {:icon-id icon :class (stl/css :icon) :on-click on-icon-click}])) [:> "input" props] (when (some? slot-end) slot-end)])) diff --git a/frontend/src/app/main/ui/ds/controls/utilities/input_field.scss b/frontend/src/app/main/ui/ds/controls/utilities/input_field.scss index ca2eb27785..3e95b194d9 100644 --- a/frontend/src/app/main/ui/ds/controls/utilities/input_field.scss +++ b/frontend/src/app/main/ui/ds/controls/utilities/input_field.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@use "../../_borders.scss" as *; -@use "../../_sizes.scss" as *; -@use "../../typography.scss" as *; -@use "../../colors.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as *; +@use "ds/colors.scss" as *; .input-wrapper { --input-bg-color: var(--color-background-tertiary); @@ -25,7 +25,7 @@ background: var(--input-bg-color); border-radius: $br-8; - padding: 0 var(--sp-s); + padding: 0 var(--input-padding-size, var(--sp-s)); outline: $b-1 solid var(--input-outline-color); &:hover { diff --git a/frontend/src/app/main/ui/ds/controls/utilities/label.scss b/frontend/src/app/main/ui/ds/controls/utilities/label.scss index 740204fcae..405beb6c6f 100644 --- a/frontend/src/app/main/ui/ds/controls/utilities/label.scss +++ b/frontend/src/app/main/ui/ds/controls/utilities/label.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../typography.scss" as *; -@use "../../colors.scss" as *; -@use "../../spacing.scss" as *; +@use "ds/typography.scss" as *; +@use "ds/colors.scss" as *; +@use "ds/spacing.scss" as *; .label { --label-color: var(--color-foreground-primary); diff --git a/frontend/src/app/main/ui/ds/controls/utilities/token_field.scss b/frontend/src/app/main/ui/ds/controls/utilities/token_field.scss index 8bafa9a1fc..37498bdf7e 100644 --- a/frontend/src/app/main/ui/ds/controls/utilities/token_field.scss +++ b/frontend/src/app/main/ui/ds/controls/utilities/token_field.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@use "../../_borders.scss" as *; -@use "../../_sizes.scss" as *; -@use "../../typography.scss" as t; -@use "../../colors.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as t; +@use "ds/colors.scss" as *; .token-field { --token-field-bg-color: var(--color-background-tertiary); @@ -25,7 +25,7 @@ inline-size: 100%; background: var(--token-field-bg-color); border-radius: $br-8; - padding: var(--sp-s); + padding: var(--sp-xs); outline: $b-1 solid var(--token-field-outline-color); &:hover { diff --git a/frontend/src/app/main/ui/ds/foundations/assets/icon.cljs b/frontend/src/app/main/ui/ds/foundations/assets/icon.cljs index 0ca9fbeb59..de4acf3c82 100644 --- a/frontend/src/app/main/ui/ds/foundations/assets/icon.cljs +++ b/frontend/src/app/main/ui/ds/foundations/assets/icon.cljs @@ -125,6 +125,7 @@ (def ^:icon-id document "document") (def ^:icon-id download "download") (def ^:icon-id drop "drop") +(def ^:icon-id drop-shadow "drop-shadow") (def ^:icon-id easing-ease "easing-ease") (def ^:icon-id easing-ease-in "easing-ease-in") (def ^:icon-id easing-ease-in-out "easing-ease-in-out") @@ -169,6 +170,7 @@ (def ^:icon-id hug-content "hug-content") (def ^:icon-id icon "icon") (def ^:icon-id img "img") +(def ^:icon-id inner-shadow "inner-shadow") (def ^:icon-id info "info") (def ^:icon-id import-export "import-export") (def ^:icon-id interaction "interaction") diff --git a/frontend/src/app/main/ui/ds/foundations/typography/heading.scss b/frontend/src/app/main/ui/ds/foundations/typography/heading.scss index 67c16bd367..37256f5fec 100644 --- a/frontend/src/app/main/ui/ds/foundations/typography/heading.scss +++ b/frontend/src/app/main/ui/ds/foundations/typography/heading.scss @@ -3,7 +3,7 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. // // Copyright (c) KALEIDOS INC -@use "../../typography.scss" as t; +@use "ds/typography.scss" as t; .display-typography { @include t.use-typography("display"); diff --git a/frontend/src/app/main/ui/ds/foundations/typography/text.scss b/frontend/src/app/main/ui/ds/foundations/typography/text.scss index 67c16bd367..37256f5fec 100644 --- a/frontend/src/app/main/ui/ds/foundations/typography/text.scss +++ b/frontend/src/app/main/ui/ds/foundations/typography/text.scss @@ -3,7 +3,7 @@ // file, You can obtain one at http://mozilla.org/MPL/2.0/. // // Copyright (c) KALEIDOS INC -@use "../../typography.scss" as t; +@use "ds/typography.scss" as t; .display-typography { @include t.use-typography("display"); diff --git a/frontend/src/app/main/ui/ds/layout/tab_switcher.scss b/frontend/src/app/main/ui/ds/layout/tab_switcher.scss index 0a85096956..f25fc4ccd9 100644 --- a/frontend/src/app/main/ui/ds/layout/tab_switcher.scss +++ b/frontend/src/app/main/ui/ds/layout/tab_switcher.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../_sizes.scss" as *; -@use "../_borders.scss" as *; -@use "../typography.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as *; .tabs { --tabs-bg-color: var(--color-background-secondary); diff --git a/frontend/src/app/main/ui/ds/mixins.scss b/frontend/src/app/main/ui/ds/mixins.scss new file mode 100644 index 0000000000..c8de5deced --- /dev/null +++ b/frontend/src/app/main/ui/ds/mixins.scss @@ -0,0 +1,22 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@mixin textEllipsis { + display: block; + max-width: 99%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +@mixin twoLineTextEllipsis { + max-width: 99%; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} diff --git a/frontend/src/app/main/ui/ds/notifications/actionable.scss b/frontend/src/app/main/ui/ds/notifications/actionable.scss index d69dffcf4e..23ca9c6eae 100644 --- a/frontend/src/app/main/ui/ds/notifications/actionable.scss +++ b/frontend/src/app/main/ui/ds/notifications/actionable.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../_borders.scss" as *; -@use "../typography.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as *; .notification { @include use-typography("body-medium"); diff --git a/frontend/src/app/main/ui/ds/notifications/shared/notification_pill.scss b/frontend/src/app/main/ui/ds/notifications/shared/notification_pill.scss index 9216f12858..3cf7b1bd2c 100644 --- a/frontend/src/app/main/ui/ds/notifications/shared/notification_pill.scss +++ b/frontend/src/app/main/ui/ds/notifications/shared/notification_pill.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../_sizes.scss" as *; -@use "../../_borders.scss" as *; -@use "../../typography.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as *; .notification-pill { @include use-typography("body-medium"); diff --git a/frontend/src/app/main/ui/ds/notifications/toast.scss b/frontend/src/app/main/ui/ds/notifications/toast.scss index aabed6bd09..c09629bfdd 100644 --- a/frontend/src/app/main/ui/ds/notifications/toast.scss +++ b/frontend/src/app/main/ui/ds/notifications/toast.scss @@ -4,11 +4,11 @@ // // Copyright (c) KALEIDOS INC -@use "../_sizes.scss" as *; -@use "../_borders.scss" as *; -@use "../typography.scss" as *; -@use "../spacing.scss" as *; -@use "../z-index.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as *; +@use "ds/spacing.scss" as *; +@use "ds/z-index.scss" as *; .toast { --toast-icon-color: var(--color-foreground-secondary); diff --git a/frontend/src/app/main/ui/ds/product/avatar.scss b/frontend/src/app/main/ui/ds/product/avatar.scss index eac040a8eb..36952c13d7 100644 --- a/frontend/src/app/main/ui/ds/product/avatar.scss +++ b/frontend/src/app/main/ui/ds/product/avatar.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../_sizes.scss" as *; -@use "../_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; .avatar { border-radius: $br-circle; diff --git a/frontend/src/app/main/ui/ds/product/cta.scss b/frontend/src/app/main/ui/ds/product/cta.scss index a08238958c..20d82a77c6 100644 --- a/frontend/src/app/main/ui/ds/product/cta.scss +++ b/frontend/src/app/main/ui/ds/product/cta.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@use "../colors.scss" as *; -@use "../_sizes.scss" as *; -@use "../_borders.scss" as *; -@use "../typography.scss" as t; +@use "ds/colors.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as t; .cta { border-radius: $br-8; diff --git a/frontend/src/app/main/ui/ds/product/empty_placeholder.scss b/frontend/src/app/main/ui/ds/product/empty_placeholder.scss index cc4654b9e7..2850b67eb5 100644 --- a/frontend/src/app/main/ui/ds/product/empty_placeholder.scss +++ b/frontend/src/app/main/ui/ds/product/empty_placeholder.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../_sizes.scss" as *; -@use "../_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; .empty-placeholder { display: grid; diff --git a/frontend/src/app/main/ui/ds/product/input_with_meta.scss b/frontend/src/app/main/ui/ds/product/input_with_meta.scss index e2f63f1bf4..a01190d120 100644 --- a/frontend/src/app/main/ui/ds/product/input_with_meta.scss +++ b/frontend/src/app/main/ui/ds/product/input_with_meta.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@use "../_borders.scss" as *; -@use "../spacing.scss" as *; -@use "../_sizes.scss" as *; -@use "../typography.scss" as t; +@use "ds/_borders.scss" as *; +@use "ds/spacing.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as t; .input-with-meta-container { --input-meta-value: var(--color-foreground-primary); diff --git a/frontend/src/app/main/ui/ds/product/loader.scss b/frontend/src/app/main/ui/ds/product/loader.scss index 4eb1f3abde..772049d573 100644 --- a/frontend/src/app/main/ui/ds/product/loader.scss +++ b/frontend/src/app/main/ui/ds/product/loader.scss @@ -4,6 +4,8 @@ // // Copyright (c) KALEIDOS INC +@use "ds/_utils.scss" as *; + @keyframes line-pencil { 0% { transform: translateY(0); @@ -44,8 +46,8 @@ // Tips container .tips-container { text-align: center; - min-width: var(--sp-600); - max-width: var(--sp-800); + min-width: px2rem(600); + max-width: px2rem(800); display: flex; flex-direction: column; gap: var(--sp-s); diff --git a/frontend/src/app/main/ui/ds/product/milestone.scss b/frontend/src/app/main/ui/ds/product/milestone.scss index b4ec7ab7ab..5e276d23a0 100644 --- a/frontend/src/app/main/ui/ds/product/milestone.scss +++ b/frontend/src/app/main/ui/ds/product/milestone.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../_sizes.scss" as *; -@use "../_borders.scss" as *; -@use "../typography.scss" as t; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as t; .milestone { border: $b-1 solid var(--border-color, transparent); diff --git a/frontend/src/app/main/ui/ds/product/milestone_group.scss b/frontend/src/app/main/ui/ds/product/milestone_group.scss index 0ed02e1f16..43c71ce334 100644 --- a/frontend/src/app/main/ui/ds/product/milestone_group.scss +++ b/frontend/src/app/main/ui/ds/product/milestone_group.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../_sizes.scss" as *; -@use "../_borders.scss" as *; -@use "../typography.scss" as t; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as t; .milestone { border: $b-1 solid var(--border-color, transparent); diff --git a/frontend/src/app/main/ui/ds/spacing.scss b/frontend/src/app/main/ui/ds/spacing.scss index 577a182358..796699dd27 100644 --- a/frontend/src/app/main/ui/ds/spacing.scss +++ b/frontend/src/app/main/ui/ds/spacing.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "./utils.scss" as *; +@use "ds/_utils.scss" as *; $_sp-2: px2rem(2); $_sp-4: px2rem(4); @@ -14,8 +14,6 @@ $_sp-16: px2rem(16); $_sp-20: px2rem(20); $_sp-24: px2rem(24); $_sp-32: px2rem(32); -$_sp-600: px2rem(600); -$_sp-800: px2rem(800); :global(:root) { --sp-xxs: #{$_sp-2}; @@ -26,6 +24,4 @@ $_sp-800: px2rem(800); --sp-xl: #{$_sp-20}; --sp-xxl: #{$_sp-24}; --sp-xxxl: #{$_sp-32}; - --sp-600: #{$_sp-600}; - --sp-800: #{$_sp-800}; } diff --git a/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs b/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs index ac89d1fe24..440bd7ee23 100644 --- a/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs +++ b/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs @@ -172,7 +172,7 @@ [:id {:optional true} :string] [:offset {:optional true} :int] [:delay {:optional true} :int] - [:content [:or fn? :string [:fn mf/element?]]] + [:content [:or fn? :string]] [:placement {:optional true} [:maybe [:enum "top" "bottom" "left" "right" "top-right" "bottom-right" "bottom-left" "top-left"]]]]) diff --git a/frontend/src/app/main/ui/ds/tooltip/tooltip.scss b/frontend/src/app/main/ui/ds/tooltip/tooltip.scss index fcce788d33..df9047d2dd 100644 --- a/frontend/src/app/main/ui/ds/tooltip/tooltip.scss +++ b/frontend/src/app/main/ui/ds/tooltip/tooltip.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../_sizes.scss" as *; -@use "../_borders.scss" as *; -@use "../typography.scss" as t; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as t; $arrow-side: 12px; diff --git a/frontend/src/app/main/ui/ds/typography.scss b/frontend/src/app/main/ui/ds/typography.scss index 6cb7014877..6ca2fd6670 100644 --- a/frontend/src/app/main/ui/ds/typography.scss +++ b/frontend/src/app/main/ui/ds/typography.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "./utils.scss" as *; +@use "ds/_utils.scss" as *; $_font-weight-regular: 400; $_font-weight-medium: 500; diff --git a/frontend/src/app/main/ui/ds/utilities/swatch.cljs b/frontend/src/app/main/ui/ds/utilities/swatch.cljs index bd8d086fd2..8eda95fd3a 100644 --- a/frontend/src/app/main/ui/ds/utilities/swatch.cljs +++ b/frontend/src/app/main/ui/ds/utilities/swatch.cljs @@ -14,6 +14,7 @@ [app.common.schema :as sm] [app.common.types.color :as ct] [app.config :as cfg] + [app.main.ui.ds.tooltip :refer [tooltip*]] [app.util.color :as uc] [app.util.i18n :refer [tr]] [cuerdas.core :as str] @@ -62,11 +63,12 @@ [:class {:optional true} :string] [:size {:optional true} [:enum "small" "medium" "large"]] [:active {:optional true} ::sm/boolean] + [:has-errors {:optional true} [:maybe ::sm/boolean]] [:on-click {:optional true} ::sm/fn]]) (mf/defc swatch* {::mf/schema (sm/schema schema:swatch)} - [{:keys [background on-click size active class] + [{:keys [background on-click size active class tooltip-content has-errors] :rest props}] (let [;; NOTE: this code is only relevant for storybook, because ;; storybook is unable to pass in a comfortable way a complex @@ -90,6 +92,13 @@ :stops gradient-stops} image (:image background) format (if id? "rounded" "square") + element-id (mf/use-id) + on-click + (mf/use-fn + (mf/deps background on-click) + (fn [event] + (when (fn? on-click) + (^function on-click background event)))) class (dm/str class " " (stl/css-case @@ -106,23 +115,28 @@ (mf/spread-props props {:class class :on-click on-click :type button-type - :title (color-title background)})] + :aria-labelledby element-id})] - [:> element-type props - (cond + [:> tooltip* {:content (if tooltip-content + tooltip-content + (color-title background)) + :id element-id} + [:> element-type props + (cond + (some? gradient-type) + [:span {:class (stl/css :swatch-gradient) + :style {:background-image (str (uc/gradient->css gradient-data) ", repeating-conic-gradient(lightgray 0% 25%, white 0% 50%)")}}] - (some? gradient-type) - [:span {:class (stl/css :swatch-gradient) - :style {:background-image (str (uc/gradient->css gradient-data) ", repeating-conic-gradient(lightgray 0% 25%, white 0% 50%)")}}] + (some? image) + (let [uri (cfg/resolve-file-media image)] + [:span {:class (stl/css :swatch-image) + :style {:background-image (str/ffmt "url(%)" uri)}}]) + has-errors + [:span {:class (stl/css :swatch-error)}] - (some? image) - (let [uri (cfg/resolve-file-media image)] - [:span {:class (stl/css :swatch-image) - :style {:background-image (str/ffmt "url(%)" uri)}}]) - - :else - [:span {:class (stl/css :swatch-opacity)} - [:span {:class (stl/css :swatch-solid-side) - :style {:background (uc/color->background (assoc background :opacity 1))}}] - [:span {:class (stl/css :swatch-opacity-side) - :style {:background (uc/color->background background)}}]])])) + :else + [:span {:class (stl/css :swatch-opacity)} + [:span {:class (stl/css :swatch-solid-side) + :style {:background (uc/color->background (assoc background :opacity 1))}}] + [:span {:class (stl/css :swatch-opacity-side) + :style {:background (uc/color->background background)}}]])]])) diff --git a/frontend/src/app/main/ui/ds/utilities/swatch.scss b/frontend/src/app/main/ui/ds/utilities/swatch.scss index edf3d3fb6b..37ffe33e4e 100644 --- a/frontend/src/app/main/ui/ds/utilities/swatch.scss +++ b/frontend/src/app/main/ui/ds/utilities/swatch.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../_borders.scss" as *; -@use "../_sizes.scss" as *; -@use "../colors.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/colors.scss" as *; .swatch { --border-color: var(--color-accent-primary-muted); @@ -17,10 +17,9 @@ --checkerboard-background: repeating-conic-gradient(lightgray 0% 25%, white 0% 50%); --checkerboard-size: 0.5rem 0.5rem; - border: 1px solid var(--border-color); + border: $b-1 solid var(--border-color); border-radius: var(--border-radius); overflow: hidden; - &:focus { --border-color: var(--color-accent-primary); } @@ -109,3 +108,7 @@ flex: 1; display: block; } + +.swatch-error { + background: var(--color-background-primary); +} diff --git a/frontend/src/app/main/ui/exports/assets.scss b/frontend/src/app/main/ui/exports/assets.scss index 0af4851951..8bc4737a20 100644 --- a/frontend/src/app/main/ui/exports/assets.scss +++ b/frontend/src/app/main/ui/exports/assets.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; // PROGRESS WIDGET .export-progress-widget { - @include flexCenter; - width: $s-28; - height: $s-28; + @include deprecated.flexCenter; + width: deprecated.$s-28; + height: deprecated.$s-28; } // PROGRESS MODAL @@ -20,19 +20,19 @@ --export-modal-icon-color: var(--alert-icon-foreground-color-default); --export-modal-border-color: var(--alert-border-color-default); position: absolute; - right: $s-16; - top: $s-48; + right: deprecated.$s-16; + top: deprecated.$s-48; display: grid; - grid-template-columns: $s-24 1fr $s-24; + grid-template-columns: deprecated.$s-24 1fr deprecated.$s-24; grid-template-areas: "icon text close" "bar bar bar"; - gap: $s-4 $s-8; - padding-block-start: $s-8; + gap: deprecated.$s-4 deprecated.$s-8; + padding-block-start: deprecated.$s-8; background-color: var(--export-modal-bg-color); - border: $s-1 solid var(--export-modal-border-color); - border-radius: $br-8; - z-index: $z-index-modal; + border: deprecated.$s-1 solid var(--export-modal-border-color); + border-radius: deprecated.$br-8; + z-index: deprecated.$z-index-modal; overflow: hidden; } @@ -42,23 +42,23 @@ --export-modal-icon-color: var(--alert-icon-foreground-color-error); --export-modal-border-color: var(--alert-border-color-error); grid-template-areas: "icon text close"; - gap: $s-8; - padding-block: $s-8; + gap: deprecated.$s-8; + padding-block: deprecated.$s-8; } .icon { @extend .button-icon; grid-area: icon; align-self: center; - margin-inline-start: $s-8; + margin-inline-start: deprecated.$s-8; stroke: var(--export-modal-icon-color); } .export-progress-title { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; display: grid; grid-template-columns: auto 1fr; - gap: $s-8; + gap: deprecated.$s-8; grid-area: text; align-self: center; padding: 0; @@ -67,16 +67,16 @@ } .progress { - @include bodyMediumTypography; - padding-left: $s-8; + @include deprecated.bodyMediumTypography; + padding-left: deprecated.$s-8; margin: 0; align-self: center; color: var(--modal-text-foreground-color); } .retry-btn { - @include buttonStyle; - @include bodySmallTypography; + @include deprecated.buttonStyle; + @include deprecated.bodySmallTypography; display: inline; text-align: left; color: var(--modal-link-foreground-color); @@ -85,9 +85,9 @@ } .progress-close-button { - @include buttonStyle; + @include deprecated.buttonStyle; padding: 0; - margin-inline-end: $s-8; + margin-inline-end: deprecated.$s-8; } .close-icon { @@ -110,15 +110,15 @@ .modal-container { @extend .modal-container-base; - max-height: calc(10 * $s-80); + max-height: calc(10 * deprecated.$s-80); } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include headlineMediumTypography; + @include deprecated.headlineMediumTypography; color: var(--modal-title-foreground-color); } @@ -128,32 +128,32 @@ .modal-content, .no-selection { - @include bodySmallTypography; - margin-bottom: $s-24; + @include deprecated.bodySmallTypography; + margin-bottom: deprecated.$s-24; .modal-link { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; text-decoration: none; cursor: pointer; color: var(--modal-link-foreground-color); } .selection-header { - @include flexRow; - height: $s-32; - margin-bottom: $s-4; + @include deprecated.flexRow; + height: deprecated.$s-32; + margin-bottom: deprecated.$s-4; .selection-btn { - @include buttonStyle; + @include deprecated.buttonStyle; @extend .input-checkbox; - @include flexCenter; - height: $s-24; - width: $s-24; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-24; padding: 0; - margin-left: $s-16; + margin-left: deprecated.$s-16; span { @extend .checkbox-icon; } } .selection-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); } } @@ -177,67 +177,67 @@ } } .selection-list { - @include flexColumn; - max-height: $s-400; + @include deprecated.flexColumn; + max-height: deprecated.$s-400; overflow-y: auto; - padding-bottom: $s-12; + padding-bottom: deprecated.$s-12; .selection-row { - @include flexRow; + @include deprecated.flexRow; background-color: var(--entry-background-color); - min-height: $s-40; - border-radius: $br-8; + min-height: deprecated.$s-40; + border-radius: deprecated.$br-8; .selection-btn { - @include buttonStyle; + @include deprecated.buttonStyle; display: grid; grid-template-columns: min-content auto 1fr auto auto; align-items: center; width: 100%; height: 10%; - gap: $s-8; - padding: 0 $s-16; + gap: deprecated.$s-8; + padding: 0 deprecated.$s-16; .checkbox-wrapper { @extend .input-checkbox; - @include flexCenter; - height: $s-24; - width: $s-24; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-24; padding: 0; .checkobox-tick { @extend .checkbox-icon; } } .selection-name { - @include bodyLargeTypography; - @include textEllipsis; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; flex-grow: 1; color: var(--modal-text-foreground-color); text-align: start; } .selection-scale { - @include bodyLargeTypography; - @include textEllipsis; - min-width: $s-108; - padding: $s-12; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; + min-width: deprecated.$s-108; + padding: deprecated.$s-12; color: var(--modal-text-foreground-color); } .selection-extension { - @include bodyLargeTypography; - @include textEllipsis; - min-width: $s-72; - padding: $s-12; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; + min-width: deprecated.$s-72; + padding: deprecated.$s-12; color: var(--modal-text-foreground-color); } } .image-wrapper { - @include flexCenter; - min-height: $s-32; - min-width: $s-32; + @include deprecated.flexCenter; + min-height: deprecated.$s-32; + min-width: deprecated.$s-32; background-color: var(--app-white); - border-radius: $br-6; + border-radius: deprecated.$br-6; margin: auto 0; img, svg { object-fit: contain; - max-height: $s-40; + max-height: deprecated.$s-40; } } } @@ -260,7 +260,7 @@ .modal-scd-msg, .modal-subtitle, .modal-msg { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); } @@ -271,27 +271,27 @@ label { align-items: flex-start; .modal-subtitle { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } } span { - margin-top: $s-8; + margin-top: deprecated.$s-8; } } .option-content { - @include flexColumn; - @include bodyLargeTypography; + @include deprecated.flexColumn; + @include deprecated.bodyLargeTypography; } .file-entry { .file-name { - @include flexRow; + @include deprecated.flexRow; .file-icon { - @include flexCenter; - height: $s-16; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; @@ -299,8 +299,8 @@ } } .file-name-label { - @include bodyLargeTypography; - @include textEllipsis; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; } } &.loading { diff --git a/frontend/src/app/main/ui/exports/files.scss b/frontend/src/app/main/ui/exports/files.scss index 8857bd9c0c..d6055ed184 100644 --- a/frontend/src/app/main/ui/exports/files.scss +++ b/frontend/src/app/main/ui/exports/files.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; // EXPORT MODAL .modal-overlay { @@ -16,15 +16,15 @@ .modal-container { @extend .modal-container-base; - max-height: calc(10 * $s-80); + max-height: calc(10 * deprecated.$s-80); } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include headlineMediumTypography; + @include deprecated.headlineMediumTypography; color: var(--modal-title-foreground-color); } @@ -33,32 +33,32 @@ } .modal-content { - @include bodySmallTypography; - margin-bottom: $s-24; + @include deprecated.bodySmallTypography; + margin-bottom: deprecated.$s-24; .modal-link { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; text-decoration: none; cursor: pointer; color: var(--modal-link-foreground-color); } .selection-header { - @include flexRow; - height: $s-32; - margin-bottom: $s-4; + @include deprecated.flexRow; + height: deprecated.$s-32; + margin-bottom: deprecated.$s-4; .selection-btn { - @include buttonStyle; + @include deprecated.buttonStyle; @extend .input-checkbox; - @include flexCenter; - height: $s-24; - width: $s-24; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-24; padding: 0; - margin-left: $s-16; + margin-left: deprecated.$s-16; span { @extend .checkbox-icon; } } .selection-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); } } @@ -82,67 +82,67 @@ } } .selection-list { - @include flexColumn; - max-height: $s-400; + @include deprecated.flexColumn; + max-height: deprecated.$s-400; overflow-y: auto; - padding-bottom: $s-12; + padding-bottom: deprecated.$s-12; .selection-row { - @include flexRow; + @include deprecated.flexRow; background-color: var(--entry-background-color); - min-height: $s-40; - border-radius: $br-8; + min-height: deprecated.$s-40; + border-radius: deprecated.$br-8; .selection-btn { - @include buttonStyle; + @include deprecated.buttonStyle; display: grid; grid-template-columns: min-content auto 1fr auto auto; align-items: center; width: 100%; height: 10%; - gap: $s-8; - padding: 0 $s-16; + gap: deprecated.$s-8; + padding: 0 deprecated.$s-16; .checkbox-wrapper { @extend .input-checkbox; - @include flexCenter; - height: $s-24; - width: $s-24; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-24; padding: 0; .checkobox-tick { @extend .checkbox-icon; } } .selection-name { - @include bodyLargeTypography; - @include textEllipsis; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; flex-grow: 1; color: var(--modal-text-foreground-color); text-align: start; } .selection-scale { - @include bodyLargeTypography; - @include textEllipsis; - min-width: $s-108; - padding: $s-12; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; + min-width: deprecated.$s-108; + padding: deprecated.$s-12; color: var(--modal-text-foreground-color); } .selection-extension { - @include bodyLargeTypography; - @include textEllipsis; - min-width: $s-72; - padding: $s-12; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; + min-width: deprecated.$s-72; + padding: deprecated.$s-12; color: var(--modal-text-foreground-color); } } .image-wrapper { - @include flexCenter; - min-height: $s-32; - min-width: $s-32; + @include deprecated.flexCenter; + min-height: deprecated.$s-32; + min-width: deprecated.$s-32; background-color: var(--app-white); - border-radius: $br-6; + border-radius: deprecated.$br-6; margin: auto 0; img, svg { object-fit: contain; - max-height: $s-40; + max-height: deprecated.$s-40; } } } @@ -165,7 +165,7 @@ .modal-scd-msg, .modal-subtitle, .modal-msg { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); } @@ -176,29 +176,29 @@ label { align-items: flex-start; .modal-subtitle { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); padding: 0.25rem 0; } } span { - margin-top: $s-8; + margin-top: deprecated.$s-8; } } .option-content { - @include flexColumn; - @include bodyLargeTypography; + @include deprecated.flexColumn; + @include deprecated.bodyLargeTypography; } .file-entry { .file-name { - @include flexRow; + @include deprecated.flexRow; .file-icon { - @include flexCenter; - height: $s-16; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; @@ -206,8 +206,8 @@ } } .file-name-label { - @include bodyLargeTypography; - @include textEllipsis; + @include deprecated.bodyLargeTypography; + @include deprecated.textEllipsis; } } &.loading { diff --git a/frontend/src/app/main/ui/hooks.cljs b/frontend/src/app/main/ui/hooks.cljs index bfc2399d2a..a7ba644c8c 100644 --- a/frontend/src/app/main/ui/hooks.cljs +++ b/frontend/src/app/main/ui/hooks.cljs @@ -65,10 +65,10 @@ (def sortable-ctx (mf/create-context nil)) -(mf/defc sortable-container - [{:keys [children] :as props}] +(mf/defc sortable-container* + [{:keys [children]}] (let [global-drag-end (mf/use-memo #(rx/subject))] - [:& (mf/provider sortable-ctx) {:value global-drag-end} + [:> (mf/provider sortable-ctx) {:value global-drag-end} children])) diff --git a/frontend/src/app/main/ui/icons.cljs b/frontend/src/app/main/ui/icons.cljs index 665f5b6eb1..3acb7238cb 100644 --- a/frontend/src/app/main/ui/icons.cljs +++ b/frontend/src/app/main/ui/icons.cljs @@ -107,6 +107,7 @@ (def ^:icon document (icon-xref :document)) (def ^:icon download (icon-xref :download)) (def ^:icon drop-icon (icon-xref :drop)) +(def ^:icon drop-shadow (icon-xref :drop-shadow)) (def ^:icon easing-ease-in-out (icon-xref :easing-ease-in-out)) (def ^:icon easing-ease-in (icon-xref :easing-ease-in)) (def ^:icon easing-ease-out (icon-xref :easing-ease-out)) @@ -149,6 +150,7 @@ (def ^:icon hug-content (icon-xref :hug-content)) (def ^:icon icon (icon-xref :icon)) (def ^:icon img (icon-xref :img)) +(def ^:icon inner-shadow (icon-xref :inner-shadow)) (def ^:icon interaction (icon-xref :interaction)) (def ^:icon join-nodes (icon-xref :join-nodes)) (def ^:icon justify-content-column-around (icon-xref :justify-content-column-around)) @@ -260,6 +262,7 @@ (def ^:icon text-uppercase (icon-xref :text-uppercase)) (def ^:icon thumbnail (icon-xref :thumbnail)) (def ^:icon tick (icon-xref :tick)) +(def ^:icon tokens (icon-xref :tokens)) (def ^:icon to-corner (icon-xref :to-corner)) (def ^:icon to-curve (icon-xref :to-curve)) (def ^:icon tree (icon-xref :tree)) diff --git a/frontend/src/app/main/ui/inspect/annotation.scss b/frontend/src/app/main/ui/inspect/annotation.scss index 27d27c61c2..431754d330 100644 --- a/frontend/src/app/main/ui/inspect/annotation.scss +++ b/frontend/src/app/main/ui/inspect/annotation.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-annotation { @@ -15,10 +15,10 @@ } .annotation-content { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--entry-foreground-color); } .copy-btn-title { - max-width: $s-28; + max-width: deprecated.$s-28; } diff --git a/frontend/src/app/main/ui/inspect/attributes.scss b/frontend/src/app/main/ui/inspect/attributes.scss index ddd279ff2b..b20d543d20 100644 --- a/frontend/src/app/main/ui/inspect/attributes.scss +++ b/frontend/src/app/main/ui/inspect/attributes.scss @@ -4,21 +4,21 @@ // // Copyright (c) KALEIDOS INC -@use "../ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/_sizes.scss" as *; +@use "ds/_utils.scss" as *; .element-options { display: flex; flex-direction: column; - gap: $s-16; + gap: var(--sp-l); width: 100%; - height: calc(100vh - #{$s-128}); // TODO: Fix this hardcoded value - padding-top: $s-8; + height: calc(100vh - px2rem(128)); // TODO: Fix this hardcoded value + padding-top: var(--sp-s); overflow-y: auto; overflow-x: hidden; scrollbar-gutter: stable; } .workspace-element-options { - height: calc(100vh - #{$sz-200}); // TODO: Fix this hardcoded value + height: calc(100vh - px2rem(200)); // TODO: Fix this hardcoded value } diff --git a/frontend/src/app/main/ui/inspect/attributes/blur.scss b/frontend/src/app/main/ui/inspect/attributes/blur.scss index a3f2dc334e..736ab135c9 100644 --- a/frontend/src/app/main/ui/inspect/attributes/blur.scss +++ b/frontend/src/app/main/ui/inspect/attributes/blur.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-blur { @@ -23,5 +23,5 @@ } .copy-btn-title { - max-width: $s-28; + max-width: deprecated.$s-28; } diff --git a/frontend/src/app/main/ui/inspect/attributes/common.cljs b/frontend/src/app/main/ui/inspect/attributes/common.cljs index f1311884f2..a943818a52 100644 --- a/frontend/src/app/main/ui/inspect/attributes/common.cljs +++ b/frontend/src/app/main/ui/inspect/attributes/common.cljs @@ -13,36 +13,15 @@ [app.common.types.color :as cc] [app.config :as cf] [app.main.refs :as refs] - [app.main.store :as st] [app.main.ui.components.color-bullet :as cb] [app.main.ui.components.copy-button :refer [copy-button*]] [app.main.ui.components.select :refer [select]] [app.main.ui.formats :as fmt] + [app.main.ui.inspect.common.colors :as isc] [app.util.i18n :refer [tr]] [cuerdas.core :as str] - [okulary.core :as l] [rumext.v2 :as mf])) -(def file-colors-ref - (l/derived (l/in [:viewer :file :data :colors]) st/state)) - -(defn make-colors-library-ref - [libraries-place file-id] - (let [get-library - (fn [state] - (get-in state [libraries-place file-id :data :colors]))] - (l/derived get-library st/state))) - -(defn- use-colors-library - [{:keys [ref-file] :as color}] - (let [library (mf/with-memo [ref-file] - (make-colors-library-ref :files ref-file))] - (mf/deref library))) - -;; FIXME: this breaks react hooks rule (broken code) -(defn- get-file-colors [] - (or (mf/deref file-colors-ref) (mf/deref refs/workspace-file-colors))) - (defn get-css-rule-humanized [property] (as-> property $ (d/name $) @@ -51,8 +30,10 @@ (str/capital $))) (mf/defc color-row [{:keys [color format copy-data on-change-format]}] - (let [colors-library (use-colors-library color) - file-colors (get-file-colors) + (let [colors-library (isc/use-colors-library color) + file-colors-ref (mf/deref isc/file-colors-ref) + file-colors-wokspace (mf/deref refs/workspace-file-colors) + file-colors (or file-colors-ref file-colors-wokspace) color-library-name (get-in (or colors-library file-colors) [(:ref-id color) :name]) color (assoc color :name color-library-name) image (:image color)] diff --git a/frontend/src/app/main/ui/inspect/attributes/common.scss b/frontend/src/app/main/ui/inspect/attributes/common.scss index 5ea1fdf411..305c396489 100644 --- a/frontend/src/app/main/ui/inspect/attributes/common.scss +++ b/frontend/src/app/main/ui/inspect/attributes/common.scss @@ -4,67 +4,67 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-image-as-color-row { - max-width: $s-240; + max-width: deprecated.$s-240; } .attributes-color-row { display: grid; - grid-template-columns: $s-16 $s-72 $s-144; - gap: $s-4; + grid-template-columns: deprecated.$s-16 deprecated.$s-72 deprecated.$s-144; + gap: deprecated.$s-4; } .bullet-wrapper { - @include flexCenter; - height: $s-32; + @include deprecated.flexCenter; + height: deprecated.$s-32; } .format-wrapper { - width: $s-72; - height: $s-32; + width: deprecated.$s-72; + height: deprecated.$s-32; } .image-format { - @include uppercaseTitleTipography; - height: $s-32; - padding: $s-8 0; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-32; + padding: deprecated.$s-8 0; color: var(--menu-foreground-color-rest); } .select-format-wrapper { width: 100%; - padding: $s-8 $s-2; + padding: deprecated.$s-8 deprecated.$s-2; background-color: transparent; border-color: transparent; color: var(--menu-foreground-color-rest); } .format-info { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; display: flex; align-items: center; width: 100%; height: 100%; - padding-left: $s-2; - font-size: $fs-12; + padding-left: deprecated.$s-2; + font-size: deprecated.$fs-12; color: var(--menu-foreground-color-rest); } .color-row-copy-btn { - max-width: $s-144; + max-width: deprecated.$s-144; } .color-info { display: flex; align-items: flex-start; - gap: $s-4; + gap: deprecated.$s-4; flex-grow: 1; - max-width: $s-144; + max-width: deprecated.$s-144; button { visibility: hidden; - min-width: $s-28; + min-width: deprecated.$s-28; } &:hover button { visibility: visible; @@ -72,32 +72,32 @@ } .one-line { - max-height: $s-32; + max-height: deprecated.$s-32; } .two-line { display: grid; grid-template-rows: auto 1fr; - gap: $s-4; + gap: deprecated.$s-4; } .color-name-wrapper { - @include bodySmallTypography; - @include flexColumn; - padding: $s-8 $s-4 $s-8 $s-8; - height: $s-32; - max-width: $s-80; + @include deprecated.bodySmallTypography; + @include deprecated.flexColumn; + padding: deprecated.$s-8 deprecated.$s-4 deprecated.$s-8 deprecated.$s-8; + height: deprecated.$s-32; + max-width: deprecated.$s-80; } .opacity-info { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--menu-foreground-color); - padding: $s-8 0; + padding: deprecated.$s-8 0; } .first-row { display: grid; - grid-template-columns: 1fr $s-28; + grid-template-columns: 1fr deprecated.$s-28; height: fit-content; width: 100%; padding: 0; @@ -107,14 +107,14 @@ .name-opacity { height: fit-content; width: 100%; - line-height: $s-16; + line-height: deprecated.$s-16; display: grid; grid-template-columns: 1fr auto; } .color-value-wrapper { - @include textEllipsis; - @include inspectValue; + @include deprecated.textEllipsis; + @include deprecated.inspectValue; text-transform: uppercase; &.gradient-name { text-transform: none; @@ -122,14 +122,14 @@ } .opacity-info { - @include inspectValue; + @include deprecated.inspectValue; text-transform: uppercase; width: 100%; } .second-row { - min-height: $s-16; - padding-right: $s-8; + min-height: deprecated.$s-16; + padding-right: deprecated.$s-8; width: 100%; text-align: left; margin: 0; @@ -137,7 +137,7 @@ } .color-name-library { - @include inspectValue; + @include deprecated.inspectValue; color: var(--menu-foreground-color-rest); word-break: break-word; } @@ -148,22 +148,22 @@ .download-button { @extend .button-secondary; - @include uppercaseTitleTipography; - height: $s-32; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-32; width: 100%; - margin-top: $s-4; + margin-top: deprecated.$s-4; } .image-wrapper { background-color: var(--menu-background-color); position: relative; - @include flexCenter; - width: $s-240; - height: $s-160; - max-height: $s-160; - max-width: $s-248; - margin: $s-8 0; - border-radius: $br-8; + @include deprecated.flexCenter; + width: deprecated.$s-240; + height: deprecated.$s-160; + max-height: deprecated.$s-160; + max-width: deprecated.$s-248; + margin: deprecated.$s-8 0; + border-radius: deprecated.$br-8; img { height: 100%; diff --git a/frontend/src/app/main/ui/inspect/attributes/fill.scss b/frontend/src/app/main/ui/inspect/attributes/fill.scss index 9515dad3ee..c55c401b98 100644 --- a/frontend/src/app/main/ui/inspect/attributes/fill.scss +++ b/frontend/src/app/main/ui/inspect/attributes/fill.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-fill { @@ -16,5 +16,5 @@ .attributes-content { display: grid; - gap: $s-4; + gap: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/inspect/attributes/geometry.scss b/frontend/src/app/main/ui/inspect/attributes/geometry.scss index b32c0c1031..dd002ce5e6 100644 --- a/frontend/src/app/main/ui/inspect/attributes/geometry.scss +++ b/frontend/src/app/main/ui/inspect/attributes/geometry.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-geometry { @@ -23,5 +23,5 @@ } .copy-btn-title { - max-width: $s-28; + max-width: deprecated.$s-28; } diff --git a/frontend/src/app/main/ui/inspect/attributes/layout.cljs b/frontend/src/app/main/ui/inspect/attributes/layout.cljs index 6a697f2425..545efdc9fa 100644 --- a/frontend/src/app/main/ui/inspect/attributes/layout.cljs +++ b/frontend/src/app/main/ui/inspect/attributes/layout.cljs @@ -29,7 +29,10 @@ :row-gap :column-gap :gap - :padding]) + :padding-inline-start + :padding-inline-end + :padding-block-start + :padding-block-end]) (mf/defc layout-block [{:keys [objects shape]}] diff --git a/frontend/src/app/main/ui/inspect/attributes/layout.scss b/frontend/src/app/main/ui/inspect/attributes/layout.scss index 8a84e1d988..0eb1b64168 100644 --- a/frontend/src/app/main/ui/inspect/attributes/layout.scss +++ b/frontend/src/app/main/ui/inspect/attributes/layout.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-layout { @@ -23,5 +23,5 @@ } .copy-btn-title { - max-width: $s-28; + max-width: deprecated.$s-28; } diff --git a/frontend/src/app/main/ui/inspect/attributes/layout_element.scss b/frontend/src/app/main/ui/inspect/attributes/layout_element.scss index 56b174dd58..7f32cca1a1 100644 --- a/frontend/src/app/main/ui/inspect/attributes/layout_element.scss +++ b/frontend/src/app/main/ui/inspect/attributes/layout_element.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-layout-element { @@ -23,5 +23,5 @@ } .copy-btn-title { - max-width: $s-28; + max-width: deprecated.$s-28; } diff --git a/frontend/src/app/main/ui/inspect/attributes/shadow.cljs b/frontend/src/app/main/ui/inspect/attributes/shadow.cljs index ebda4bcd3b..9a1ee8fd4f 100644 --- a/frontend/src/app/main/ui/inspect/attributes/shadow.cljs +++ b/frontend/src/app/main/ui/inspect/attributes/shadow.cljs @@ -13,7 +13,7 @@ [app.main.ui.components.title-bar :refer [inspect-title-bar*]] [app.main.ui.inspect.attributes.common :refer [color-row]] [app.util.code-gen.style-css :as css] - [app.util.code-gen.style-css-formats :refer [format-color]] + [app.util.code-gen.style-css-formats :refer [format-color-value]] [app.util.i18n :refer [tr]] [rumext.v2 :as mf])) @@ -26,7 +26,7 @@ (defn- copy-color-data "Converts a fill object to CSS color string in the specified format." [color format] - (format-color color {:format format})) + (format-color-value color {:format format})) (mf/defc shadow-block [{:keys [shadow]}] (let [color-format (mf/use-state :hex) diff --git a/frontend/src/app/main/ui/inspect/attributes/shadow.scss b/frontend/src/app/main/ui/inspect/attributes/shadow.scss index 1d741ab26e..106cb03bca 100644 --- a/frontend/src/app/main/ui/inspect/attributes/shadow.scss +++ b/frontend/src/app/main/ui/inspect/attributes/shadow.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-shadow { diff --git a/frontend/src/app/main/ui/inspect/attributes/stroke.scss b/frontend/src/app/main/ui/inspect/attributes/stroke.scss index fe0f59df43..a83ad6cfea 100644 --- a/frontend/src/app/main/ui/inspect/attributes/stroke.scss +++ b/frontend/src/app/main/ui/inspect/attributes/stroke.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-stroke { @@ -15,7 +15,7 @@ } .attributes-stroke-block { - @include flexColumn; + @include deprecated.flexColumn; } .stroke-row { @@ -28,5 +28,5 @@ .attributes-content { display: grid; - gap: $s-4; + gap: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/inspect/attributes/svg.scss b/frontend/src/app/main/ui/inspect/attributes/svg.scss index 1ad6d6a8fc..41846547dc 100644 --- a/frontend/src/app/main/ui/inspect/attributes/svg.scss +++ b/frontend/src/app/main/ui/inspect/attributes/svg.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-svg { @@ -23,12 +23,12 @@ } .attributes-subtitle { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; display: flex; justify-content: space-between; - height: $s-32; + height: deprecated.$s-32; span { - height: $s-32; + height: deprecated.$s-32; display: flex; align-items: center; } diff --git a/frontend/src/app/main/ui/inspect/attributes/text.cljs b/frontend/src/app/main/ui/inspect/attributes/text.cljs index b843f1bd08..0736babeba 100644 --- a/frontend/src/app/main/ui/inspect/attributes/text.cljs +++ b/frontend/src/app/main/ui/inspect/attributes/text.cljs @@ -83,7 +83,7 @@ (when (:font-id style) [:div {:class (stl/css :text-row)} - [:div {:class (stl/css :global/attr-label)} (tr "inspect.attributes.typography.font-family")] + [:div {:class (stl/css :global/attr-label)} "Font Family"] [:div {:class (stl/css :global/attr-value)} [:> copy-button* {:data (copy-style-data style :font-family)} [:div {:class (stl/css :button-children)} @@ -91,8 +91,7 @@ (when (:font-style style) [:div {:class (stl/css :text-row)} - [:div {:class (stl/css :global/attr-label)} - (tr "inspect.attributes.typography.font-style")] + [:div {:class (stl/css :global/attr-label)} "Font Style"] [:div {:class (stl/css :global/attr-value)} [:> copy-button* {:data (copy-style-data style :font-style)} [:div {:class (stl/css :button-children)} @@ -100,8 +99,7 @@ (when (:font-size style) [:div {:class (stl/css :text-row)} - [:div {:class (stl/css :global/attr-label)} - (tr "inspect.attributes.typography.font-size")] + [:div {:class (stl/css :global/attr-label)} "Font Size"] [:div {:class (stl/css :global/attr-value)} [:> copy-button* {:data (copy-style-data (assoc style :font-size (fmt/format-pixels (:font-size style))) :font-size)} [:div {:class (stl/css :button-children)} @@ -109,8 +107,7 @@ (when (:font-weight style) [:div {:class (stl/css :text-row)} - [:div {:class (stl/css :global/attr-label)} - (tr "inspect.attributes.typography.font-weight")] + [:div {:class (stl/css :global/attr-label)} "Font Weight"] [:div {:class (stl/css :global/attr-value)} [:> copy-button* {:data (copy-style-data style :font-weight)} [:div {:class (stl/css :button-children)} @@ -118,8 +115,7 @@ (when (:line-height style) [:div {:class (stl/css :text-row)} - [:div {:class (stl/css :global/attr-label)} - (tr "inspect.attributes.typography.line-height")] + [:div {:class (stl/css :global/attr-label)} "Line Height"] [:div {:class (stl/css :global/attr-value)} [:> copy-button* {:data (copy-style-data style :line-height)} [:div {:class (stl/css :button-children)} @@ -127,8 +123,7 @@ (when (:letter-spacing style) [:div {:class (stl/css :text-row)} - [:div {:class (stl/css :global/attr-label)} - (tr "inspect.attributes.typography.letter-spacing")] + [:div {:class (stl/css :global/attr-label)} "Letter Spacing"] [:div {:class (stl/css :global/attr-value)} [:> copy-button* {:data (copy-style-data style :letter-spacing)} [:div {:class (stl/css :button-children)} @@ -136,8 +131,7 @@ (when (:text-decoration style) [:div {:class (stl/css :text-row)} - [:div {:class (stl/css :global/attr-label)} - (tr "inspect.attributes.typography.text-decoration")] + [:div {:class (stl/css :global/attr-label)} "Text Decoration"] ;; Execution time translation strings: ;; (tr "inspect.attributes.typography.text-decoration.none") ;; (tr "inspect.attributes.typography.text-decoration.strikethrough") @@ -149,8 +143,7 @@ (when (:text-transform style) [:div {:class (stl/css :text-row)} - [:div {:class (stl/css :global/attr-label)} - (tr "inspect.attributes.typography.text-transform")] + [:div {:class (stl/css :global/attr-label)} "Text Transform"] ;; Execution time translation strings: ;; (tr "inspect.attributes.typography.text-transform.lowercase") ;; (tr "inspect.attributes.typography.text-transform.none") diff --git a/frontend/src/app/main/ui/inspect/attributes/text.scss b/frontend/src/app/main/ui/inspect/attributes/text.scss index 5c5a74a534..54bc1e8095 100644 --- a/frontend/src/app/main/ui/inspect/attributes/text.scss +++ b/frontend/src/app/main/ui/inspect/attributes/text.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-text { @@ -15,13 +15,13 @@ } .attributes-content { - @include flexColumn; + @include deprecated.flexColumn; } .text-row { @extend .attr-row; height: unset; - min-height: $s-32; + min-height: deprecated.$s-32; :global(.attr-value) { align-items: center; } @@ -32,20 +32,20 @@ } .attributes-content-row { - max-width: $s-240; - min-height: calc($s-2 + $s-32); - border-radius: $br-8; - border: $s-1 solid var(--menu-border-color-disabled); - margin-top: $s-4; + max-width: deprecated.$s-240; + min-height: calc(deprecated.$s-2 + deprecated.$s-32); + border-radius: deprecated.$br-8; + border: deprecated.$s-1 solid var(--menu-border-color-disabled); + margin-top: deprecated.$s-4; .content { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; width: 100%; - padding: $s-4 0; + padding: deprecated.$s-4 0; color: var(--color-foreground-secondary); } &:hover { - border: $s-1 solid var(--color-background-tertiary); + border: deprecated.$s-1 solid var(--color-background-tertiary); background-color: var(--menu-background-color); .content { color: var(--menu-foreground-color-hover); diff --git a/frontend/src/app/main/ui/inspect/attributes/variant.scss b/frontend/src/app/main/ui/inspect/attributes/variant.scss index ef8af2983d..7478fae373 100644 --- a/frontend/src/app/main/ui/inspect/attributes/variant.scss +++ b/frontend/src/app/main/ui/inspect/attributes/variant.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-variant { diff --git a/frontend/src/app/main/ui/inspect/attributes/visibility.scss b/frontend/src/app/main/ui/inspect/attributes/visibility.scss index df8d00a876..d76c906b18 100644 --- a/frontend/src/app/main/ui/inspect/attributes/visibility.scss +++ b/frontend/src/app/main/ui/inspect/attributes/visibility.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .attributes-block { - @include flexColumn; + @include deprecated.flexColumn; } .title-spacing-visibility { @@ -23,5 +23,5 @@ } .copy-btn-title { - max-width: $s-28; + max-width: deprecated.$s-28; } diff --git a/frontend/src/app/main/ui/inspect/code.scss b/frontend/src/app/main/ui/inspect/code.scss index 341f269991..c0fa8bab75 100644 --- a/frontend/src/app/main/ui/inspect/code.scss +++ b/frontend/src/app/main/ui/inspect/code.scss @@ -4,42 +4,42 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-options { display: flex; flex-direction: column; - height: calc(100vh - #{$s-160}); // TODO: Fix this hardcoded value + height: calc(100vh - #{deprecated.$s-160}); // TODO: Fix this hardcoded value overflow: hidden; - padding-bottom: $s-16; + padding-bottom: deprecated.$s-16; overflow-y: auto; overflow-x: hidden; scrollbar-gutter: stable; } .viewer-code-block { - height: calc(100vh - #{$s-108}); // TODO: Fix this hardcoded value + height: calc(100vh - #{deprecated.$s-108}); // TODO: Fix this hardcoded value } .download-button { @extend .button-secondary; - @include uppercaseTitleTipography; - height: $s-32; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-32; width: 100%; - margin: $s-8 0; + margin: deprecated.$s-8 0; } .code-block { - @include codeTypography; + @include deprecated.codeTypography; display: flex; flex-direction: column; height: 100%; min-height: 0; - padding: 0 $s-4 $s-8 0; + padding: 0 deprecated.$s-4 deprecated.$s-8 0; pre { - border-radius: $br-8; - padding: $s-16; + border-radius: deprecated.$br-8; + padding: deprecated.$s-16; overflow: auto; height: 100%; } @@ -56,13 +56,13 @@ .code-row-lang { display: grid; - grid-template-columns: $s-12 1fr $s-60; - gap: $s-4; + grid-template-columns: deprecated.$s-12 1fr deprecated.$s-60; + gap: deprecated.$s-4; width: 100%; } .code-lang { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; display: flex; align-items: center; } @@ -70,15 +70,15 @@ .action-btns { display: grid; grid-template-columns: 1fr 1fr; - gap: $s-4; + gap: deprecated.$s-4; } .expand-button, .css-copy-btn, .html-copy-btn { @extend .button-tertiary; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -86,20 +86,20 @@ } .code-lang-options { - max-width: $s-108; + max-width: deprecated.$s-108; } .code-lang-select { - @include uppercaseTitleTipography; - width: $s-72; - border: $s-1 solid transparent; + @include deprecated.uppercaseTitleTipography; + width: deprecated.$s-72; + border: deprecated.$s-1 solid transparent; background-color: transparent; color: var(--menu-foreground-color-disabled); } .code-lang-option { - @include uppercaseTitleTipography; - width: $s-72; - height: $s-32; - padding: $s-8; + @include deprecated.uppercaseTitleTipography; + width: deprecated.$s-72; + height: deprecated.$s-32; + padding: deprecated.$s-8; color: var(--menu-foreground-color-disabled); } @@ -107,20 +107,20 @@ flex: 1; min-height: 0; overflow: hidden; - padding-bottom: $s-8; + padding-bottom: deprecated.$s-8; } .toggle-btn { - @include buttonStyle; + @include deprecated.buttonStyle; display: flex; align-items: center; padding: 0; color: var(--title-foreground-color); stroke: var(--title-foreground-color); .collapsabled-icon { - @include flexCenter; - height: $s-24; - border-radius: $br-8; + @include deprecated.flexCenter; + height: deprecated.$s-24; + border-radius: deprecated.$br-8; svg { @extend .button-icon-small; transform: rotate(90deg); diff --git a/frontend/src/app/main/ui/inspect/common/colors.cljs b/frontend/src/app/main/ui/inspect/common/colors.cljs new file mode 100644 index 0000000000..43b834ebfd --- /dev/null +++ b/frontend/src/app/main/ui/inspect/common/colors.cljs @@ -0,0 +1,27 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.common.colors + (:require + [app.main.store :as st] + [okulary.core :as l] + [rumext.v2 :as mf])) + +(def file-colors-ref + (l/derived (l/in [:viewer :file :data :colors]) st/state)) + +(defn make-colors-library-ref + [libraries-place file-id] + (let [get-library + (fn [state] + (get-in state [libraries-place file-id :data :colors]))] + (l/derived get-library st/state))) + +(defn use-colors-library + [{:keys [ref-file] :as color}] + (let [library (mf/with-memo [ref-file] + (make-colors-library-ref :files ref-file))] + (mf/deref library))) diff --git a/frontend/src/app/main/ui/inspect/exports.scss b/frontend/src/app/main/ui/inspect/exports.scss index 1b3b7aa4f6..4ca98720a8 100644 --- a/frontend/src/app/main/ui/inspect/exports.scss +++ b/frontend/src/app/main/ui/inspect/exports.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { - padding-bottom: $s-16; + padding-bottom: deprecated.$s-16; margin: 0; } @@ -18,14 +18,14 @@ .title-spacing-export-viewer { margin: 0; color: var(--entry-foreground-color-hover); - margin-inline-start: calc(-1 * $s-8); - width: calc(100% + $s-8); + margin-inline-start: calc(-1 * deprecated.$s-8); + width: calc(100% + deprecated.$s-8); } .add-export { @extend .button-tertiary; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -33,12 +33,12 @@ } .element-set-content { - @include flexColumn; - margin-bottom: $s-4; + @include deprecated.flexColumn; + margin-bottom: deprecated.$s-4; } .multiple-exports { - @include flexRow; + @include deprecated.flexRow; grid-column: 1 / span 9; } @@ -47,17 +47,17 @@ } .actions { - @include flexRow; + @include deprecated.flexRow; } .element-group { display: grid; grid-template-columns: repeat(9, 1fr); - column-gap: $s-4; + column-gap: deprecated.$s-4; .action-btn { @extend .button-tertiary; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; } @@ -75,8 +75,8 @@ padding: 0; .dropdown-upwards { - bottom: $s-36; - width: $s-80; + bottom: deprecated.$s-36; + width: deprecated.$s-80; top: unset; } } @@ -85,21 +85,21 @@ grid-column: span 2; padding: 0; .dropdown-upwards { - bottom: $s-36; + bottom: deprecated.$s-36; top: unset; - width: $s-80; + width: deprecated.$s-80; } } .suffix-input { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; grid-column: span 3; } .export-btn { @extend .button-secondary; - @include uppercaseTitleTipography; - height: $s-32; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-32; width: 100%; } diff --git a/frontend/src/app/main/ui/inspect/left_sidebar.scss b/frontend/src/app/main/ui/inspect/left_sidebar.scss index 503b80907e..a5b9247b1e 100644 --- a/frontend/src/app/main/ui/inspect/left_sidebar.scss +++ b/frontend/src/app/main/ui/inspect/left_sidebar.scss @@ -4,19 +4,19 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .settings-bar-left { background-color: var(--panel-background-color); height: 100%; - width: $s-256; + width: deprecated.$s-256; } .settings-bar-inside { display: grid; grid-template-columns: 100%; grid-template-rows: 100%; - height: calc(100% - $s-2); + height: calc(100% - deprecated.$s-2); overflow-y: auto; - padding-top: $s-8; + padding-top: deprecated.$s-8; } diff --git a/frontend/src/app/main/ui/inspect/right_sidebar.cljs b/frontend/src/app/main/ui/inspect/right_sidebar.cljs index 9964ac6015..56f3f20999 100644 --- a/frontend/src/app/main/ui/inspect/right_sidebar.cljs +++ b/frontend/src/app/main/ui/inspect/right_sidebar.cljs @@ -104,7 +104,7 @@ tabs (mf/with-memo [] (if (contains? cf/flags :inspect-styles) - [{:label (tr "inspect.tabs.styles") + [{:label (tr "labels.styles") :id "styles"} {:label (tr "inspect.tabs.computed") :id "computed"} @@ -167,6 +167,7 @@ [:div {:class (stl/css :inspect-tab-switcher-controls-color-space)} [:> select* {:options color-spaces :default-selected "hex" + :variant "ghost" :on-change handle-change-color-space}]] [:div {:class (stl/css :inspect-tab-switcher-controls-tab)} [:> select* {:options tabs @@ -179,6 +180,7 @@ (case @section :styles [:> styles-tab* {:color-space color-space + :objects objects :shapes shapes :libraries libraries :file-id file-id}] diff --git a/frontend/src/app/main/ui/inspect/right_sidebar.scss b/frontend/src/app/main/ui/inspect/right_sidebar.scss index fac452cc97..a4c3e6cf45 100644 --- a/frontend/src/app/main/ui/inspect/right_sidebar.scss +++ b/frontend/src/app/main/ui/inspect/right_sidebar.scss @@ -4,11 +4,12 @@ // // Copyright (c) KALEIDOS INC -@use "../ds/typography.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as *; +@use "ds/_sizes.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .settings-bar-right { - min-width: $s-252; + min-width: deprecated.$s-252; width: 100%; height: 100vh; position: relative; @@ -18,28 +19,28 @@ overflow: hidden; &.viewer-code { - height: calc(100vh - $s-48); + height: calc(100vh - deprecated.$s-48); } } .viewer-code { - padding-inline-start: $s-8; + padding-inline-start: deprecated.$s-8; } .tool-windows { height: 100%; display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; padding-left: var(--sp-m); } .shape-info { display: grid; grid-template-columns: auto minmax(0, 1fr); - gap: $s-8; + gap: deprecated.$s-8; align-items: center; - height: $s-32; + height: deprecated.$s-32; } .shape-info-subtitle { @@ -49,16 +50,16 @@ .layers-icon, .shape-icon { - @include flexCenter; - height: $s-32; + @include deprecated.flexCenter; + height: deprecated.$s-32; --icon-stroke-color: var(--color-foreground-primary); } .layer-title { - @include bodySmallTypography; - @include textEllipsis; - height: $s-32; - padding: $s-8 0; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; + height: deprecated.$s-32; + padding: deprecated.$s-8 0; color: var(--color-foreground-primary); } @@ -68,8 +69,8 @@ } .layer-subtitle { - @include bodySmallTypography; - @include textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; color: var(--assets-item-name-foreground-color-rest); } @@ -77,17 +78,17 @@ display: flex; flex-direction: column; align-items: center; - gap: $s-40; - padding-top: $s-24; + gap: deprecated.$s-40; + padding-top: deprecated.$s-24; } .code-info, .help-info { - @include flexColumn; + @include deprecated.flexColumn; align-items: center; justify-content: flex-start; - gap: $s-12; - margin-right: $s-8; + gap: deprecated.$s-12; + margin-right: deprecated.$s-8; } .placeholder-icon { @@ -95,17 +96,17 @@ } .placeholder-label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; text-align: center; - width: $s-200; + width: deprecated.$s-200; color: var(--empty-message-foreground-color); } .more-info-btn { @extend .button-secondary; - @include uppercaseTitleTipography; - height: $s-32; - padding: $s-8 $s-24; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-32; + padding: deprecated.$s-8 deprecated.$s-24; } .inspect-tab-switcher { @@ -130,7 +131,7 @@ } .inspect-tab-switcher-controls-color-space { - flex: 1; + flex: 1 0 $sz-24; } .inspect-tab-switcher-controls-tab { @@ -145,6 +146,13 @@ .viewer-tab-switcher { --tabs-nav-padding-inline-start: 0; --tabs-nav-padding-inline-end: var(--sp-m); + + /* same height as .element-options in workspace/sidebar/options.scss */ + /* which is one of the parents of this component */ + --max-inspect-tab-height: var(--sidebar-element-options-height); + max-block-size: var(--max-inspect-tab-height); + + overflow: auto; } .viewer-tab-switcher-layout { diff --git a/frontend/src/app/main/ui/inspect/styles.cljs b/frontend/src/app/main/ui/inspect/styles.cljs index d5e68f53e7..f25d766feb 100644 --- a/frontend/src/app/main/ui/inspect/styles.cljs +++ b/frontend/src/app/main/ui/inspect/styles.cljs @@ -1,3 +1,9 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + (ns app.main.ui.inspect.styles (:require-macros [app.main.style :as stl]) (:require @@ -5,12 +11,45 @@ [app.common.data.macros :as dm] [app.common.types.component :as ctc] [app.common.types.components-list :as ctkl] + [app.common.types.shape.layout :as ctl] + [app.common.types.tokens-lib :as ctob] + [app.main.data.style-dictionary :as sd] + [app.main.refs :as refs] + [app.main.ui.inspect.styles.panels.blur :refer [blur-panel*]] + [app.main.ui.inspect.styles.panels.fill :refer [fill-panel*]] + [app.main.ui.inspect.styles.panels.geometry :refer [geometry-panel*]] + [app.main.ui.inspect.styles.panels.layout :refer [layout-panel*]] + [app.main.ui.inspect.styles.panels.layout-element :refer [layout-element-panel*]] + [app.main.ui.inspect.styles.panels.stroke :refer [stroke-panel*]] + [app.main.ui.inspect.styles.panels.svg :refer [svg-panel*]] + [app.main.ui.inspect.styles.panels.tokens-panel :refer [tokens-panel*]] + [app.main.ui.inspect.styles.panels.variants-panel :refer [variants-panel*]] + [app.main.ui.inspect.styles.panels.visibility :refer [visibility-panel*]] [app.main.ui.inspect.styles.style-box :refer [style-box*]] + [app.util.code-gen.style-css :as css] [app.util.i18n :refer [tr]] [rumext.v2 :as mf])) +(def layout-element-properties + [:margin-block-start + :margin-block-end + :margin-inline-start + :margin-inline-end + :max-block-size + :min-block-size + :max-inline-size + :min-inline-size + :align-self + :justify-self + :flex-shrink + :flex -(def type->options + ;; Grid cell properties + :grid-column + :grid-row]) + + +(def type->panel-group {:multiple [:fill :stroke :text :shadow :blur :layout-element] :frame [:visibility :geometry :fill :stroke :shadow :blur :layout :layout-element] :group [:visibility :geometry :svg :layout-element] @@ -20,6 +59,18 @@ :text [:visibility :geometry :text :shadow :blur :stroke :layout-element] :variant [:variant :geometry :fill :stroke :shadow :blur :layout :layout-element]}) +(defn- has-fill? + [shape] + (and + (not (contains? #{:text :group} (:type shape))) + (seq (:fills shape)))) + +(defn- has-stroke? [shape] + (seq (:strokes shape))) + +(defn- has-blur? [shape] + (:blur shape)) + (defn- get-shape-type [shapes first-shape first-component] (if (= (count shapes) 1) @@ -31,21 +82,122 @@ :multiple)) (mf/defc styles-tab* - [{:keys [color-space shapes libraries file-id]}] + [{:keys [color-space shapes libraries objects file-id]}] (let [data (dm/get-in libraries [file-id :data]) first-shape (first shapes) - first-component (mf/with-memo (ctkl/get-component data (:component-id first-shape))) - type (mf/with-memo (get-shape-type shapes first-shape first-component)) - has-tokens? (:applied-tokens first-shape) - options (type->options type)] - [:ol {:class (stl/css :styles-tab) :aria-label (tr "inspect.tabs.styles")} - (when has-tokens? - [:li {:key "token"} - [:> style-box* {:attribute :token} - [:p "Tokens Panel (WIP)"]]]) - (for [option options] - [:li {:key (d/name option)} - [:> style-box* {:attribute option} color-space]])])) + first-component (ctkl/get-component data (:component-id first-shape)) + shape-type (get-shape-type shapes first-shape first-component) + panels (type->panel-group shape-type) + + tokens-lib (mf/deref refs/tokens-lib) + active-themes (mf/deref refs/workspace-active-theme-paths-no-hidden) + active-sets (mf/with-memo [tokens-lib] + (some-> tokens-lib (ctob/get-active-themes-set-names))) + active-tokens (mf/with-memo [tokens-lib] + (some-> tokens-lib (ctob/get-tokens-in-active-sets))) + resolved-active-tokens (sd/use-resolved-tokens* active-tokens) + has-visibility-props? (mf/use-fn + (fn [shape] + (let [shape-type (:type shape)] + (and + (not (or (= shape-type :text) (= shape-type :group))) + (or (:opacity shape) + (:blend-mode shape) + (:visibility shape))))))] + [:ol {:class (stl/css :styles-tab) :aria-label (tr "labels.styles")} + ;; TOKENS PANEL + (when (or active-themes active-sets) + [:li + [:> style-box* {:panel :token} + [:> tokens-panel* {:theme-paths active-themes :set-names active-sets}]]]) + (for [panel panels] + [:li {:key (d/name panel)} + (case panel + ;; VARIANTS PANEL + :variant + [:> style-box* {:panel :variant} + [:> variants-panel* {:component first-component + :objects objects + :shape first-shape + :data data}]] + ;; GEOMETRY PANEL + :geometry + [:> style-box* {:panel :geometry} + [:> geometry-panel* {:shapes shapes + :objects objects + :resolved-tokens resolved-active-tokens}]] + ;; LAYOUT PANEL + :layout + (let [layout-shapes (->> shapes (filter ctl/any-layout?))] + (when (seq layout-shapes) + [:> style-box* {:panel :layout} + [:> layout-panel* {:shapes layout-shapes + :objects objects + :resolved-tokens resolved-active-tokens}]])) + ;; LAYOUT ELEMENT PANEL + :layout-element + (let [shapes (->> shapes (filter #(ctl/any-layout-immediate-child? objects %))) + some-layout-prop? (->> shapes + (mapcat (fn [shape] + (keep #(css/get-css-value objects shape %) layout-element-properties))) + (seq))] + (when some-layout-prop? + (let [only-flex? (every? #(ctl/flex-layout-immediate-child? objects %) shapes) + only-grid? (every? #(ctl/grid-layout-immediate-child? objects %) shapes) + panel (if only-flex? + :flex-element + (if only-grid? + :grid-element + :layout-element))] + [:> style-box* {:panel panel} + [:> layout-element-panel* {:shapes shapes + :objects objects + :resolved-tokens resolved-active-tokens + :layout-element-properties layout-element-properties}]]))) + ;; FILL PANEL + :fill + (let [shapes (filter has-fill? shapes)] + (when (seq shapes) + [:> style-box* {:panel :fill} + [:> fill-panel* {:color-space color-space + :shapes shapes + :resolved-tokens resolved-active-tokens}]])) + + ;; STROKE PANEL + :stroke + (let [shapes (filter has-stroke? shapes)] + (when (seq shapes) + [:> style-box* {:panel :stroke} + [:> stroke-panel* {:color-space color-space + :shapes shapes + :objects objects + :resolved-tokens resolved-active-tokens}]])) + + ;; VISIBILITY PANEL + :visibility + (let [shapes (filter has-visibility-props? shapes)] + (when (seq shapes) + [:> style-box* {:panel :visibility} + [:> visibility-panel* {:shapes shapes + :objects objects + :resolved-tokens resolved-active-tokens}]])) + ;; SVG PANEL + :svg + (let [shape (first shapes)] + (when (seq (:svg-attrs shape)) + [:> style-box* {:panel :svg} + [:> svg-panel* {:shape shape + :objects objects}]])) + ;; BLUR PANEL + :blur + (let [shapes (->> shapes (filter has-blur?))] + (when (seq shapes) + [:> style-box* {:panel :blur} + [:> blur-panel* {:shapes shapes + :objects objects}]])) + ;; DEFAULT WIP + [:> style-box* {:panel panel} + [:div color-space]])])])) ;; WIP diff --git a/frontend/src/app/main/ui/inspect/styles/panels/blur.cljs b/frontend/src/app/main/ui/inspect/styles/panels/blur.cljs new file mode 100644 index 0000000000..61e97e0ec2 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/blur.cljs @@ -0,0 +1,29 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.blur + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data.macros :as dm] + [app.main.ui.inspect.attributes.common :as cmm] + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [app.util.code-gen.style-css :as css] + [rumext.v2 :as mf])) + +(mf/defc blur-panel* + [{:keys [shapes objects]}] + [:div {:class (stl/css :blur-panel)} + (for [shape shapes] + [:div {:key (:id shape) :class "blur-shape"} + (let [property :filter + value (css/get-css-value objects shape property) + property-name (cmm/get-css-rule-humanized property) + property-value (css/get-css-property objects shape property)] + [:> properties-row* {:key (dm/str "blur-property-" property) + :term property-name + :detail (dm/str value) + :property property-value + :copiable true}])])]) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/fill.cljs b/frontend/src/app/main/ui/inspect/styles/panels/fill.cljs new file mode 100644 index 0000000000..76111195c9 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/fill.cljs @@ -0,0 +1,59 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.fill + (:require-macros [app.main.style :as stl]) + (:require + [app.common.types.fills :as types.fills] + [app.main.ui.inspect.attributes.common :as cmm] + [app.main.ui.inspect.styles.rows.color-properties-row :refer [color-properties-row*]] + [rumext.v2 :as mf])) + +(defn- get-applied-tokens-in-shape + [shape-tokens property] + (get shape-tokens property)) + +(defn- get-resolved-token + "Get the resolved token for a specific property in a shape." + [shape resolved-tokens] + (let [shape-tokens (:applied-tokens shape) + applied-tokens-in-shape (get-applied-tokens-in-shape shape-tokens :fill) + token (get resolved-tokens applied-tokens-in-shape)] + token)) + +;; Current token implementation on fills only supports one token per shape and has to be the first fill +;; This must be improved in the future +(defn- has-token? + "Returns true if the resolved token matches the color and is the first fill (idx = 0)." + [resolved-token color-type idx] + (and (= (:resolved-value resolved-token) (:color color-type)) + (= 0 idx))) + +(mf/defc fill-panel* + [{:keys [shapes resolved-tokens color-space]}] + [:div {:class (stl/css :fill-panel)} + (for [shape shapes] + [:div {:key (:id shape) :class "fill-shape"} + (for [[idx fill] (map-indexed vector (:fills shape))] + (let [property :background + color-type (types.fills/fill->color fill) ;; can be :color, :gradient or :image + property-name (cmm/get-css-rule-humanized property) + resolved-token (get-resolved-token shape resolved-tokens) + has-token (has-token? resolved-token color-type idx)] + + (if (:color color-type) + [:> color-properties-row* {:key idx + :term property-name + :color color-type + :token (when has-token resolved-token) + :format color-space + :copiable true}] + (if (or (:gradient color-type) (:image color-type)) + [:> color-properties-row* {:key idx + :term property-name + :color color-type + :copiable true}] + [:span "background-image"]))))])]) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/geometry.cljs b/frontend/src/app/main/ui/inspect/styles/panels/geometry.cljs new file mode 100644 index 0000000000..d49d3bdc9b --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/geometry.cljs @@ -0,0 +1,62 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.geometry + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data.macros :as dm] + [app.main.ui.inspect.attributes.common :as cmm] + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [app.util.code-gen.style-css :as css] + [rumext.v2 :as mf])) + +(def ^:private properties + [:width + :height + :left + :top + :border-start-start-radius + :border-start-end-radius + :border-end-start-radius + :border-end-end-radius + :transform]) + +(def ^:private shape-prop->border-radius-prop + {:border-start-start-radius :r1 + :border-start-end-radius :r2 + :border-end-start-radius :r3 + :border-end-end-radius :r4}) + +(defn- get-applied-tokens-in-shape + [shape-tokens property] + (let [border-prop (get shape-prop->border-radius-prop property)] + (if border-prop + (get shape-tokens border-prop) + (get shape-tokens property)))) + +(defn- get-resolved-token + [property shape resolved-tokens] + (let [shape-tokens (:applied-tokens shape) + applied-tokens-in-shape (get-applied-tokens-in-shape shape-tokens property) + token (get resolved-tokens applied-tokens-in-shape)] + token)) + +(mf/defc geometry-panel* + [{:keys [shapes objects resolved-tokens]}] + [:div {:class (stl/css :geometry-panel)} + (for [shape shapes] + [:div {:key (:id shape) :class "geometry-shape"} + (for [property properties] + (when-let [value (css/get-css-value objects shape property)] + (let [property-name (cmm/get-css-rule-humanized property) + resolved-token (get-resolved-token property shape resolved-tokens) + property-value (if (not resolved-token) (css/get-css-property objects shape property) "")] + [:> properties-row* {:key (dm/str "geometry-property-" property) + :term property-name + :detail value + :token resolved-token + :property property-value + :copiable true}])))])]) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/layout.cljs b/frontend/src/app/main/ui/inspect/styles/panels/layout.cljs new file mode 100644 index 0000000000..bac0c70a1c --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/layout.cljs @@ -0,0 +1,69 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.layout + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data.macros :as dm] + [app.main.ui.inspect.attributes.common :as cmm] + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [app.util.code-gen.style-css :as css] + [rumext.v2 :as mf])) + +(def ^:private properties + [:display + :flex-direction + :flex-wrap + :grid-template-rows + :grid-template-columns + :align-items + :align-content + :justify-items + :justify-content + :row-gap + :column-gap + :gap + :padding-inline-start + :padding-inline-end + :padding-block-start + :padding-block-end]) + +(def ^:private shape-prop->padding-prop + {:padding-block-start :p1 + :padding-inline-end :p2 + :padding-block-end :p3 + :padding-inline-start :p4}) + +(defn- get-applied-tokens-in-shape + [shape-tokens property] + (let [padding-prop (get shape-prop->padding-prop property)] + (if padding-prop + (get shape-tokens padding-prop) + (get shape-tokens property)))) + +(defn- get-resolved-token + [property shape resolved-tokens] + (let [shape-tokens (:applied-tokens shape) + applied-tokens-in-shape (get-applied-tokens-in-shape shape-tokens property) + token (get resolved-tokens applied-tokens-in-shape)] + token)) + +(mf/defc layout-panel* + [{:keys [shapes objects resolved-tokens]}] + [:div {:class (stl/css :variants-panel)} + (for [shape shapes] + [:div {:key (:id shape) :class "layout-shape"} + (for [property properties] + (when-let [value (css/get-css-value objects shape property)] + (let [property-name (cmm/get-css-rule-humanized property) + resolved-token (get-resolved-token property shape resolved-tokens) + property-value (if (not resolved-token) (css/get-css-property objects shape property) "")] + [:> properties-row* {:key (dm/str "layout-property-" property) + :term property-name + :detail value + :token resolved-token + :property property-value + :copiable true}])))])]) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/layout_element.cljs b/frontend/src/app/main/ui/inspect/styles/panels/layout_element.cljs new file mode 100644 index 0000000000..4ebf9b393a --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/layout_element.cljs @@ -0,0 +1,57 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.layout-element + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data.macros :as dm] + [app.common.types.shape.layout :as ctl] + [app.main.ui.inspect.attributes.common :as cmm] + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [app.util.code-gen.style-css :as css] + [rumext.v2 :as mf])) + +(def ^:private shape-prop->margin-prop + {:margin-block-start :m1 + :margin-inline-end :m2 + :margin-block-end :m3 + :margin-inline-start :m4 + :max-block-size :layout-item-max-h ;; :max-height + :min-block-size :layout-item-min-h ;; :min-height + :max-inline-size :layout-item-max-w ;; :max-width + :min-inline-size :layout-item-min-w ;; :min-width + }) + +(defn- get-applied-margins-in-shape + [shape-tokens property] + (if-let [margin-prop (get shape-prop->margin-prop property)] + (get shape-tokens margin-prop) + (get shape-tokens property))) + +(defn- get-resolved-tokens + [property shape resolved-tokens] + (when-let [shape-tokens (:applied-tokens shape)] + (let [applied-tokens-in-shape (get-applied-margins-in-shape shape-tokens property) + token (get resolved-tokens applied-tokens-in-shape)] + token))) + +(mf/defc layout-element-panel* + [{:keys [shapes objects resolved-tokens layout-element-properties]}] + (let [shapes (->> shapes (filter #(ctl/any-layout-immediate-child? objects %)))] + [:div {:class (stl/css :layout-element-panel)} + (for [shape shapes] + [:div {:key (:id shape) :class "layout-element-shape"} + (for [property layout-element-properties] + (when-let [value (css/get-css-value objects shape property)] + (let [property-name (cmm/get-css-rule-humanized property) + resolved-token (get-resolved-tokens property shape resolved-tokens) + property-value (if (not resolved-token) (css/get-css-property objects shape property) "")] + [:> properties-row* {:key (dm/str "layout-element-property-" property) + :term property-name + :detail (str value) + :token resolved-token + :property property-value + :copiable true}])))])])) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/stroke.cljs b/frontend/src/app/main/ui/inspect/styles/panels/stroke.cljs new file mode 100644 index 0000000000..461dc51649 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/stroke.cljs @@ -0,0 +1,82 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.stroke + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data :as d] + [app.common.data.macros :as dm] + [app.main.ui.inspect.attributes.common :as cmm] + [app.main.ui.inspect.styles.rows.color-properties-row :refer [color-properties-row*]] + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [app.util.code-gen.style-css :as css] + [rumext.v2 :as mf])) + +(def ^:private properties [:border-color :border-style :border-width]) + +(defn- stroke->color [shape] + {:color (:stroke-color shape) + :opacity (:stroke-opacity shape) + :gradient (:stroke-color-gradient shape) + :id (:stroke-color-ref-id shape) + :file-id (:stroke-color-ref-file shape) + :image (:stroke-image shape)}) + +(def ^:private shape-prop->stroke-prop + {:border-style :stroke-style + :border-width :stroke-width + :border-color :stroke-color}) + +(defn- get-applied-tokens-in-shape + [shape-tokens property] + (let [border-prop (get shape-prop->stroke-prop property)] + (if border-prop + (get shape-tokens border-prop) + (get shape-tokens property)))) + +(defn- get-resolved-token + "Get the resolved token for a specific property in a shape." + [property shape resolved-tokens] + (let [shape-tokens (:applied-tokens shape) + applied-tokens-in-shape (get-applied-tokens-in-shape shape-tokens property) + token (get resolved-tokens applied-tokens-in-shape)] + token)) + +;; Current token implementation on fills only supports one token per shape and has to be the first fill +;; This must be improved in the future +(defn- has-token? + "Returns true if the resolved token matches the color and is the first fill (idx = 0)." + [resolved-token stroke-type idx] + (and (= (:resolved-value resolved-token) (:color stroke-type)) + (= 0 idx))) + +(mf/defc stroke-panel* + [{:keys [shapes objects resolved-tokens color-space]}] + [:div {:class (stl/css :stroke-panel)} + (for [shape shapes] + [:div {:key (:id shape) :class "stroke-shape"} + (for [[idx stroke] (map-indexed vector (:strokes shape))] + (for [property properties] + (let [property property + value (css/get-css-value objects stroke property) + stroke-type (stroke->color stroke) + property-name (cmm/get-css-rule-humanized property) + property-value (css/get-css-property objects stroke property) + resolved-token (get-resolved-token property shape resolved-tokens) + has-token (has-token? resolved-token stroke-type idx)] + (if (= property :border-color) + [:> color-properties-row* {:key (str idx property) + :term property-name + :color stroke-type + :token (when has-token resolved-token) + :format color-space + :copiable true}] + [:> properties-row* {:key (str idx property) + :term (d/name property-name) + :detail (dm/str value) + :token (when has-token resolved-token) + :property property-value + :copiable true}]))))])]) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/svg.cljs b/frontend/src/app/main/ui/inspect/styles/panels/svg.cljs new file mode 100644 index 0000000000..79ab7d4a71 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/svg.cljs @@ -0,0 +1,38 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.svg + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data :as d] + [app.common.data.macros :as dm] + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [cuerdas.core :as str] + [rumext.v2 :as mf])) + +(defn- map->css [attr] + (->> attr + (map (fn [[attr-key attr-value]] (str (d/name attr-key) ":" attr-value))) + (str/join "; "))) + +(mf/defc svg-panel* + [{:keys [shape _objects]}] + [:div {:class (stl/css :svg-panel)} + [:div {:key (:id shape) :class (stl/css :svg-shape)} + (for [[attr-key attr-value] (:svg-attrs shape)] + (if (map? attr-value) + (for [[sub-attr-key sub-attr-value] attr-value] + (let [property-value (map->css sub-attr-value)] + [:> properties-row* {:key (dm/str "svg-property-" (d/name sub-attr-key)) + :term (d/name sub-attr-key) + :detail (dm/str sub-attr-value) + :property property-value + :copiable false}])) + [:> properties-row* {:key (dm/str "svg-property-" (d/name attr-key)) + :term (d/name attr-key) + :detail (dm/str attr-value) + :property (dm/str attr-key ": " attr-value ";") + :copiable false}]))]]) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/tokens_panel.cljs b/frontend/src/app/main/ui/inspect/styles/panels/tokens_panel.cljs new file mode 100644 index 0000000000..0da0a56d5f --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/tokens_panel.cljs @@ -0,0 +1,27 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.tokens-panel + (:require-macros [app.main.style :as stl]) + (:require + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [app.util.i18n :refer [tr]] + [cuerdas.core :as str] + [rumext.v2 :as mf])) + +(mf/defc tokens-panel* + [{:keys [theme-paths set-names]}] + [:div {:class (stl/css :tokens-panel)} + (when (seq theme-paths) + (let [theme-list (str/join ", " theme-paths)] + [:> properties-row* {:class (stl/css :token-theme) + :term (tr "inspect.tabs.styles.panel.tokens.active-themes") + :detail theme-list}])) + (when (seq set-names) + (let [sets-list (str/join ", " set-names)] + [:> properties-row* {:class (stl/css :token-sets) + :term (tr "inspect.tabs.styles.panel.tokens.active-sets") + :detail sets-list}]))]) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/tokens_panel.scss b/frontend/src/app/main/ui/inspect/styles/panels/tokens_panel.scss new file mode 100644 index 0000000000..6478b564b4 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/tokens_panel.scss @@ -0,0 +1,11 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +.token-theme, +.token-sets { + align-items: flex-start; + padding-block: var(--sp-s); +} diff --git a/frontend/src/app/main/ui/inspect/styles/panels/variants_panel.cljs b/frontend/src/app/main/ui/inspect/styles/panels/variants_panel.cljs new file mode 100644 index 0000000000..9e797f05d0 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/variants_panel.cljs @@ -0,0 +1,30 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.variants-panel + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data.macros :as dm] + [app.common.files.variant :as cfv] + [app.common.types.component :as ctc] + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [cuerdas.core :as str] + [rumext.v2 :as mf])) + +(mf/defc variants-panel* + [{:keys [component objects shape data]}] + (let [is-container? (ctc/is-variant-container? shape) + properties (mf/with-memo [objects shape] + (if is-container? + (->> (cfv/extract-properties-values data objects (:id shape)) + (map #(update % :value (partial str/join ", ")))) + (->> (:variant-properties component) + (map #(update % :value (fn [v] (if (str/blank? v) "--" v)))))))] + [:div {:class (stl/css :variants-panel)} + (for [property properties] + [:> properties-row* {:key (dm/str "variant-property-" property) + :term (:name property) + :detail (:value property)}])])) diff --git a/frontend/src/app/main/ui/inspect/styles/panels/visibility.cljs b/frontend/src/app/main/ui/inspect/styles/panels/visibility.cljs new file mode 100644 index 0000000000..4325329026 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/panels/visibility.cljs @@ -0,0 +1,46 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.panels.visibility + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data.macros :as dm] + [app.main.ui.inspect.attributes.common :as cmm] + [app.main.ui.inspect.styles.rows.properties-row :refer [properties-row*]] + [app.util.code-gen.style-css :as css] + [rumext.v2 :as mf])) + +(def ^:private properties + [:opacity + :blend-mode]) + +(defn- get-applied-tokens-in-shape + [shape-tokens property] + (get shape-tokens property)) + +(defn- get-resolved-token + [property shape resolved-tokens] + (let [shape-tokens (:applied-tokens shape) + applied-tokens-in-shape (get-applied-tokens-in-shape shape-tokens property) + token (get resolved-tokens applied-tokens-in-shape)] + token)) + +(mf/defc visibility-panel* + [{:keys [shapes objects resolved-tokens]}] + [:div {:class (stl/css :visibility-panel)} + (for [shape shapes] + [:div {:key (:id shape) :class "visibility-shape"} + (for [property properties] + (when-let [value (css/get-css-value objects shape property)] + (let [property-name (cmm/get-css-rule-humanized property) + resolved-token (get-resolved-token property shape resolved-tokens) + property-value (if (not resolved-token) (css/get-css-property objects shape property) "")] + [:> properties-row* {:key (dm/str "visibility-property-" property) + :term property-name + :detail (dm/str value) + :token resolved-token + :property property-value + :copiable true}])))])]) diff --git a/frontend/src/app/main/ui/inspect/styles/property_detail_copiable.cljs b/frontend/src/app/main/ui/inspect/styles/property_detail_copiable.cljs new file mode 100644 index 0000000000..337ac35e9a --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/property_detail_copiable.cljs @@ -0,0 +1,54 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.property-detail-copiable + (:require-macros [app.main.style :as stl]) + (:require + [app.main.refs :as refs] + [app.main.ui.components.color-bullet :as bc] + [app.main.ui.ds.foundations.assets.icon :refer [icon*] :as i] + [app.main.ui.inspect.common.colors :as isc] + [app.util.i18n :refer [tr]] + [rumext.v2 :as mf])) + +(def ^:private schema:property-detail-copiable + [:map + [:detail :string] + [:color {:optional true} :any] ;; color object with :color, :gradient or :image + [:token {:optional true} :any] ;; resolved token object + [:copied :boolean] + [:on-click fn?]]) + +(mf/defc property-detail-copiable* + {::mf/schema schema:property-detail-copiable} + [{:keys [detail color token copied on-click]}] + [:button {:class (stl/css-case :property-detail-copiable true + :property-detail-copied copied + :property-detail-copiable-color (some? color)) + :on-click on-click} + (when color + [:> bc/color-bullet {:color color + :mini true}]) + (if token + [:span {:class (stl/css :property-detail-text :property-detail-text-token)} + (:name token)] + (if (:ref-id color) + (let [colors-library (isc/use-colors-library color) + + file-colors-ref (mf/deref isc/file-colors-ref) + file-colors-wokspace (mf/deref refs/workspace-file-colors) + file-colors (or file-colors-ref file-colors-wokspace) + + color-library-name (get-in (or colors-library file-colors) [(:ref-id color) :name]) + color (assoc color :name color-library-name)] + [:span {:class (stl/css :property-detail-text)} (:name color)]) + [:span {:class (stl/css :property-detail-text)} detail])) + [:> icon* {:class (stl/css :property-detail-icon) + :icon-id (if copied i/tick i/clipboard) + :size "s" + :aria-label (tr "inspect.tabs.styles.panel.copy-to-clipboard")}]]) + + diff --git a/frontend/src/app/main/ui/inspect/styles/property_detail_copiable.scss b/frontend/src/app/main/ui/inspect/styles/property_detail_copiable.scss new file mode 100644 index 0000000000..83f1bc1f0f --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/property_detail_copiable.scss @@ -0,0 +1,71 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "ds/typography.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; + +.property-detail-copiable { + --detail-color: var(--color-foreground-primary); + --button-min-inline-size: #{$sz-154}; + --button-min-block-size: #{$sz-36}; +} + +.property-detail-text { + color: var(--detail-color); +} + +.property-detail-text-token { + @include use-typography("code-font"); + --detail-color: var(--color-token-foreground); + + line-height: 1.4; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.property-detail-copiable { + --button-border-radius: #{$br-4}; + --button-background: none; + + appearance: none; + background: var(--button-background); + cursor: pointer; + display: grid; + grid-template-columns: 1fr auto; + gap: var(--sp-s); + align-items: center; + width: 100%; + color: var(--detail-color); + min-block-size: var(--button-min-block-size); + min-inline-size: var(--button-min-inline-size); + padding: var(--sp-s); + border-radius: var(--button-border-radius); + border: $b-1 solid transparent; + text-align: left; + + &:hover { + --button-background: var(--color-background-tertiary); + + & .property-detail-icon { + display: block; + } + } +} + +.property-detail-copiable-color { + grid-template-columns: auto 1fr auto; +} + +.property-detail-copied { + --button-border-active: var(--color-accent-tertiary); + border: $b-1 solid var(--button-border-active); +} + +.property-detail-icon { + display: none; +} diff --git a/frontend/src/app/main/ui/inspect/styles/rows/color_properties_row.cljs b/frontend/src/app/main/ui/inspect/styles/rows/color_properties_row.cljs new file mode 100644 index 0000000000..dc99c16703 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/rows/color_properties_row.cljs @@ -0,0 +1,128 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC +(ns app.main.ui.inspect.styles.rows.color-properties-row + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data :as d] + [app.common.data.macros :as dm] + [app.common.types.color :as cc] + [app.config :as cfg] + [app.main.ui.ds.buttons.button :refer [button*]] + [app.main.ui.ds.tooltip :refer [tooltip*]] + [app.main.ui.formats :as fmt] + [app.main.ui.inspect.styles.property-detail-copiable :refer [property-detail-copiable*]] + [app.util.color :as uc] + [app.util.i18n :refer [tr]] + [app.util.timers :as tm] + [app.util.webapi :as wapi] + [cuerdas.core :as str] + [rumext.v2 :as mf])) + +(def ^:private schema:color-properties-row + [:map + [:term :string] + [:color :any] ;; color object with :color, :gradient or :image + [:format {:optional true} :string] ;; color format, e.g., "hex", "rgba", etc. + [:token {:optional true} :any] ;; resolved token object + [:copiable {:optional true} :boolean]]) + +(mf/defc color-properties-row* + {::mf/schema schema:color-properties-row} + [{:keys [class term color format token]}] + (let [copied* (mf/use-state false) + copied (deref copied*) + + color-value (:color color) + color-gradient (:gradient color) + color-image (:image color) + color-image-name (:name color-image) + color-image-url (when (some? color-image) + (cfg/resolve-file-media color-image)) + color-opacity (mf/use-memo + (mf/deps color) + #(dm/str (-> color + (:opacity) + (d/coalesce 1) + (* 100) + (fmt/format-number)) "%")) + + formatted-color-value (mf/use-memo + (mf/deps color) + #(cond + (some? (:color color)) (case format + "hex" (dm/str color-value " " color-opacity) + "rgba" (let [[r g b a] (cc/hex->rgba color-value color-opacity) + result (cc/format-rgba [r g b a])] + result) + "hsla" (let [[h s l a] (cc/hex->hsla color-value color-opacity) + result (cc/format-hsla [h s l a])] + result) + color-value) + (some? (:gradient color)) (uc/gradient-type->string (:type color-gradient)) + (some? (:image color)) (tr "media.image") + :else "none")) + + css-term (-> term + (str/replace #" " "-") + (str/replace #"([A-Z])" "-$1") + (str/lower) + (str/replace #"^-" "")) + + copiable-value (mf/use-memo + (mf/deps color formatted-color-value color-opacity color-image-url token) + #(if (some? token) + (:name token) + (cond + (:color color) (if (= format "hex") + (dm/str css-term ": " color-value "; opacity: " color-opacity ";") + (dm/str css-term ": " formatted-color-value ";")) + (:gradient color) (dm/str css-term ": " (uc/color->background color) ";") + (:image color) (dm/str css-term ": url(" color-image-url ") no-repeat center center / cover;") + :else "none"))) + copy-attr + (mf/use-fn + (mf/deps copied formatted-color-value) + (fn [] + (reset! copied* true) + (wapi/write-to-clipboard copiable-value) + (tm/schedule 1000 #(reset! copied* false))))] + [:* + [:dl {:class [(stl/css :property-row) class]} + [:dt {:class (stl/css :property-term)} term] + [:dd {:class (stl/css :property-detail)} + (if token + [:> tooltip* {:id (:name token) + :class (stl/css :tooltip-token-wrapper) + :content #(mf/html + [:div {:class (stl/css :tooltip-token)} + [:div {:class (stl/css :tooltip-token-title)} + (tr "inspect.tabs.styles.token.resolved-value")] + [:div {:class (stl/css :tooltip-token-value)} + (:value token)]])} + [:> property-detail-copiable* {:detail formatted-color-value + :color color + :token token + :copied copied + :on-click copy-attr}]] + + + [:> property-detail-copiable* {:detail formatted-color-value + :color color + :copied copied + :on-click copy-attr}])]] + (when (:image color) + [:div {:class (stl/css :color-image-preview)} + [:div {:class (stl/css :color-image-preview-wrapper)} + [:img {:class (stl/css :color-image) + :src color-image-url + :title color-image-name + :alt ""}]] + [:> button* {:variant "secondary" + :to color-image-url + :target "_blank" + :download color-image-name} + (tr "inspect.attributes.image.download")]])])) + diff --git a/frontend/src/app/main/ui/inspect/styles/rows/color_properties_row.scss b/frontend/src/app/main/ui/inspect/styles/rows/color_properties_row.scss new file mode 100644 index 0000000000..d5b8497c5c --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/rows/color_properties_row.scss @@ -0,0 +1,82 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "ds/typography.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; + +// TOKENS ROW + +.property-row { + --term-color: var(--color-foreground-secondary); + --detail-color: var(--color-foreground-primary); + --button-min-inline-size: #{$sz-154}; + --button-min-block-size: #{$sz-36}; + + display: grid; + grid-template-columns: 30% 1fr; + align-items: center; + min-inline-size: var(--button-min-inline-size); + min-block-size: var(--button-min-block-size); +} + +.property-term, +.property-detail { + @include use-typography("body-small"); +} + +.property-term { + color: var(--term-color); +} + +.property-detail { + color: var(--detail-color); +} + +// IMAGE PREVIEW + +.color-image-preview { + --image-margin: var(--sp-m); + + display: grid; + justify-content: center; + align-items: center; + margin: var(--image-margin); + gap: var(--sp-m); +} + +.color-image-preview-wrapper { + --image-background: var(--color-background-secondary); + background: var(--image-background); +} + +.color-image { + max-block-size: 10rem; + block-size: 100%; + inline-size: 100%; + object-fit: contain; +} + +// TOOLTIP CONTENT + +.tooltip-token { + --title-color: var(--color-foreground-secondary); + --title-value: var(--color-foreground-primary); +} + +.tooltip-token-title { + @include use-typography("body-small"); + color: var(--title-color); +} + +.tooltip-token-value { + @include use-typography("body-small"); + color: var(--title-value); +} + +.tooltip-token-wrapper { + inline-size: 100%; +} diff --git a/frontend/src/app/main/ui/inspect/styles/rows/properties_row.cljs b/frontend/src/app/main/ui/inspect/styles/rows/properties_row.cljs new file mode 100644 index 0000000000..91c50d04bd --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/rows/properties_row.cljs @@ -0,0 +1,62 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.inspect.styles.rows.properties-row + (:require-macros [app.main.style :as stl]) + (:require + [app.main.ui.ds.tooltip :refer [tooltip*]] + [app.main.ui.inspect.styles.property-detail-copiable :refer [property-detail-copiable*]] + [app.util.i18n :refer [tr]] + [app.util.timers :as tm] + [app.util.webapi :as wapi] + [cuerdas.core :as str] + [rumext.v2 :as mf])) + +(def ^:private schema:properties-row + [:map + [:term :string] + [:detail :string] + [:property {:optional true} :string] ;; CSS valid property + [:token {:optional true} :any] ;; resolved token object + [:copiable {:optional true} :boolean]]) + +(mf/defc properties-row* + {::mf/schema schema:properties-row} + [{:keys [class term detail token property copiable]}] + (let [copiable? (or copiable false) + detail? (not (or (nil? detail) (str/blank? detail))) + detail (if detail? detail "-") + copied* (mf/use-state false) + copied (deref copied*) + copiable-value (if (some? token) + (:name token) + property) + copy-attr + (mf/use-fn + (mf/deps copied) + (fn [] + (reset! copied* true) + (wapi/write-to-clipboard copiable-value) + (tm/schedule 1000 #(reset! copied* false))))] + [:dl {:class [(stl/css :property-row) class]} + [:dt {:class (stl/css :property-term)} term] + [:dd {:class (stl/css :property-detail)} + (if copiable? + (if token + [:> tooltip* {:id (:name token) + :class (stl/css :tooltip-token-wrapper) + :content #(mf/html + [:div {:class (stl/css :tooltip-token)} + [:div {:class (stl/css :tooltip-token-title)} (tr "inspect.tabs.styles.token.resolved-value")] + [:div {:class (stl/css :tooltip-token-value)} (:value token)]])} + [:> property-detail-copiable* {:detail detail + :token token + :copied copied + :on-click copy-attr}]] + [:> property-detail-copiable* {:detail detail + :copied copied + :on-click copy-attr}]) + detail)]])) diff --git a/frontend/src/app/main/ui/inspect/styles/rows/properties_row.scss b/frontend/src/app/main/ui/inspect/styles/rows/properties_row.scss new file mode 100644 index 0000000000..9a77c82a32 --- /dev/null +++ b/frontend/src/app/main/ui/inspect/styles/rows/properties_row.scss @@ -0,0 +1,58 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "ds/typography.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; + +// TOKENS ROW + +.property-row { + --term-color: var(--color-foreground-secondary); + --detail-color: var(--color-foreground-primary); + --button-min-inline-size: #{$sz-154}; + --button-min-block-size: #{$sz-36}; + + display: grid; + grid-template-columns: 30% 1fr; + align-items: center; + min-inline-size: var(--button-min-inline-size); + min-block-size: var(--button-min-block-size); +} + +.property-term, +.property-detail { + @include use-typography("body-small"); +} + +.property-term { + color: var(--term-color); +} + +.property-detail { + color: var(--detail-color); +} + +// TOOLTIP CONTENT + +.tooltip-token { + --title-color: var(--color-foreground-secondary); + --title-value: var(--color-foreground-primary); +} + +.tooltip-token-title { + @include use-typography("body-small"); + color: var(--title-color); +} + +.tooltip-token-value { + @include use-typography("body-small"); + color: var(--title-value); +} + +.tooltip-token-wrapper { + inline-size: 100%; +} diff --git a/frontend/src/app/main/ui/inspect/styles/style_box.cljs b/frontend/src/app/main/ui/inspect/styles/style_box.cljs index 6e8d7c0448..404404c9c6 100644 --- a/frontend/src/app/main/ui/inspect/styles/style_box.cljs +++ b/frontend/src/app/main/ui/inspect/styles/style_box.cljs @@ -1,34 +1,44 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + (ns app.main.ui.inspect.styles.style-box (:require-macros [app.main.style :as stl]) (:require + [app.common.data :as d] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.foundations.assets.icon :refer [icon*] :as i] [app.util.i18n :refer [tr]] + [app.util.webapi :as wapi] [rumext.v2 :as mf])) -(defn- attribute->title +(defn- panel->title [type] (case type :variant (tr "inspect.tabs.styles.panel.variant") :token (tr "inspect.tabs.styles.panel.token") :geometry (tr "inspect.tabs.styles.panel.geometry") - :fill (tr "inspect.tabs.styles.panel.fill") - :stroke (tr "inspect.tabs.styles.panel.stroke") - :text (tr "inspect.tabs.styles.panel.text") - :blur (tr "inspect.tabs.styles.panel.blur") - :shadow (tr "inspect.tabs.styles.panel.shadow") - :layout (tr "inspect.tabs.styles.panel.layout") - :layout-element (tr "inspect.tabs.styles.panel.layout-element") - :visibility (tr "inspect.tabs.styles.panel.visibility") - :svg (tr "inspect.tabs.styles.panel.svg") + :fill (tr "labels.fill") + :stroke (tr "labels.stroke") + :text (tr "labels.text") + :blur (tr "labels.blur") + :shadow (tr "labels.shadow") + :layout (tr "labels.layout") + :flex-element "Flex element" + :grid-element "Grid element" + :layout-element "Layout Element" + :visibility (tr "labels.visibility") + :svg (tr "labels.svg") nil)) (mf/defc style-box* - [{:keys [attribute shorthand children]}] + [{:keys [panel shorthand children]}] (let [expanded* (mf/use-state true) expanded (deref expanded*) - title (attribute->title attribute) + title (panel->title panel) toggle-panel (mf/use-fn @@ -39,12 +49,13 @@ copy-shorthand (mf/use-fn (fn [] - (js/navigator.clipboard.writeText (str "Style: " title))))] + (wapi/write-to-clipboard (str "Style: " title))))] [:article {:class (stl/css :style-box)} [:header {:class (stl/css :disclosure-header)} [:button {:class (stl/css :disclosure-button) + :aria-expanded expanded + :aria-controls (str "style-box-" (d/name panel)) :on-click toggle-panel - :title (tr "inspect.tabs.styles.panel.toggle-style" title) :aria-label (tr "inspect.tabs.styles.panel.toggle-style" title)} [:> icon* {:icon-id (if expanded "arrow-down" "arrow") :class (stl/css :disclosure-icon) @@ -56,5 +67,5 @@ :on-click copy-shorthand :icon i/clipboard}])] (when expanded - [:div {:class (stl/css :style-box-content) :inert true} - [:div {:class (stl/css :style-box-description)} children]])])) + [:div {:class (stl/css :style-box-content) :id (str "style-box-" (d/name panel))} + [:div {:class (stl/css :style-box-panel-wrapper)} children]])])) diff --git a/frontend/src/app/main/ui/inspect/styles/style_box.scss b/frontend/src/app/main/ui/inspect/styles/style_box.scss index 9cb2281d96..25370d973c 100644 --- a/frontend/src/app/main/ui/inspect/styles/style_box.scss +++ b/frontend/src/app/main/ui/inspect/styles/style_box.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/typography.scss" as *; +@use "ds/typography.scss" as *; .style-box { --title-gap: var(--sp-xs); diff --git a/frontend/src/app/main/ui/modal.scss b/frontend/src/app/main/ui/modal.scss index 6dd5b4eda0..b78ff64bf4 100644 --- a/frontend/src/app/main/ui/modal.scss +++ b/frontend/src/app/main/ui/modal.scss @@ -1,4 +1,10 @@ -@import "refactor/common-refactor.scss"; +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "refactor/common-refactor.scss" as deprecated; :global(:root) { --s-4: 0.25rem; diff --git a/frontend/src/app/main/ui/notifications/badge.scss b/frontend/src/app/main/ui/notifications/badge.scss index b98a5ee88b..bc88b69b59 100644 --- a/frontend/src/app/main/ui/notifications/badge.scss +++ b/frontend/src/app/main/ui/notifications/badge.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .badge-notification { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; --badge-notification-bg-color: var(--alert-background-color-default); --badge-notification-fg-color: var(--alert-text-foreground-color-default); --badge-notification-border-color: var(--alert-border-color-default); @@ -15,22 +15,22 @@ display: grid; place-items: center; grid-template-columns: 1fr; - min-height: $s-32; + min-height: deprecated.$s-32; height: fit-content; - min-width: $s-80; + min-width: deprecated.$s-80; width: fit-content; padding: 0; margin: 0; - border: $s-1 solid var(--badge-notification-border-color); - border-radius: $br-8; + border: deprecated.$s-1 solid var(--badge-notification-border-color); + border-radius: deprecated.$br-8; background-color: var(--badge-notification-bg-color); color: var(--badge-notification-fg-color); } .small { - @include bodySmallTypography; - min-height: $s-20; - border-radius: $br-6; + @include deprecated.bodySmallTypography; + min-height: deprecated.$s-20; + border-radius: deprecated.$br-6; } .warning { diff --git a/frontend/src/app/main/ui/notifications/context_notification.scss b/frontend/src/app/main/ui/notifications/context_notification.scss index 69374ac8c7..1b14e33cea 100644 --- a/frontend/src/app/main/ui/notifications/context_notification.scss +++ b/frontend/src/app/main/ui/notifications/context_notification.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .context-notification { --context-notification-bg-color: var(--alert-background-color-default); @@ -13,14 +13,14 @@ --context-notification-border-color: var(--alert-border-color-default); box-sizing: border-box; display: grid; - grid-template-columns: $s-16 1fr; - gap: $s-8; - min-height: $s-32; + grid-template-columns: deprecated.$s-16 1fr; + gap: deprecated.$s-8; + min-height: deprecated.$s-32; height: fit-content; width: 100%; - padding: $s-8; - border: $s-1 solid var(--context-notification-border-color); - border-radius: $br-8; + padding: deprecated.$s-8; + border: deprecated.$s-1 solid var(--context-notification-border-color); + border-radius: deprecated.$br-8; background-color: var(--context-notification-bg-color); } @@ -66,7 +66,7 @@ } .context-text { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; align-self: center; color: var(--context-notification-fg-color); margin: auto 0; @@ -78,11 +78,11 @@ .link, .contain-html .context-text a { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; align-self: center; display: inline; text-align: left; - height: $s-16; + height: deprecated.$s-16; margin: 0; color: var(--modal-link-foreground-color); } diff --git a/frontend/src/app/main/ui/notifications/inline_notification.scss b/frontend/src/app/main/ui/notifications/inline_notification.scss index 61381be5bf..ee71bc5c3d 100644 --- a/frontend/src/app/main/ui/notifications/inline_notification.scss +++ b/frontend/src/app/main/ui/notifications/inline_notification.scss @@ -4,19 +4,19 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .new-inline { position: absolute; - top: $s-72; + top: deprecated.$s-72; margin: auto; left: 0; right: 0; - min-height: $s-48; - min-width: $s-640; + min-height: deprecated.$s-48; + min-width: deprecated.$s-640; width: fit-content; - max-width: $s-960; - z-index: $z-index-modal; + max-width: deprecated.$s-960; + z-index: deprecated.$z-index-modal; } .link { diff --git a/frontend/src/app/main/ui/onboarding/newsletter.scss b/frontend/src/app/main/ui/onboarding/newsletter.scss index 20b4230df3..34abf708bd 100644 --- a/frontend/src/app/main/ui/onboarding/newsletter.scss +++ b/frontend/src/app/main/ui/onboarding/newsletter.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -15,49 +15,49 @@ position: relative; display: grid; grid-template-columns: auto auto; - gap: $s-32; - padding-inline: $s-100; - padding-block-start: $s-100; - padding-block-end: $s-72; + gap: deprecated.$s-32; + padding-inline: deprecated.$s-100; + padding-block-start: deprecated.$s-100; + padding-block-end: deprecated.$s-72; margin: 0; - width: $s-960; - height: $s-632; - max-width: $s-960; - max-height: $s-632; + width: deprecated.$s-960; + height: deprecated.$s-632; + max-width: deprecated.$s-960; + max-height: deprecated.$s-632; } .modal-left { - width: $s-172; - margin-block-end: $s-64; + width: deprecated.$s-172; + margin-block-end: deprecated.$s-64; img { - width: $s-172; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-172; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } } .modal-right { display: grid; grid-template-columns: 1fr; - grid-template-rows: $s-40 auto auto auto auto $s-32; - gap: $s-24; + grid-template-rows: deprecated.$s-40 auto auto auto auto deprecated.$s-32; + gap: deprecated.$s-24; position: relative; } .modal-title { - @include bigTitleTipography; + @include deprecated.bigTitleTipography; color: var(--modal-title-foreground-color); } .modal-text { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); margin: 0; } .newsletter-options { display: grid; - gap: $s-16; - margin-inline-start: $s-16; + gap: deprecated.$s-16; + margin-inline-start: deprecated.$s-16; } .input-wrapper { @@ -65,7 +65,7 @@ } .modal-link { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-link-foreground-color); margin: 0; } diff --git a/frontend/src/app/main/ui/onboarding/questions.scss b/frontend/src/app/main/ui/onboarding/questions.scss index fb4c97f497..94444a493b 100644 --- a/frontend/src/app/main/ui/onboarding/questions.scss +++ b/frontend/src/app/main/ui/onboarding/questions.scss @@ -4,34 +4,34 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; } .modal-container { - max-width: $s-960; + max-width: deprecated.$s-960; max-height: fit-content; width: fit-content; - padding-inline: $s-100; - padding-block-start: $s-40; - padding-block-end: $s-72; - border-radius: $br-8; - border: $s-2 solid var(--modal-border-color); + padding-inline: deprecated.$s-100; + padding-block-start: deprecated.$s-40; + padding-block-end: deprecated.$s-72; + border-radius: deprecated.$br-8; + border: deprecated.$s-2 solid var(--modal-border-color); background-color: var(--modal-background-color); } .form-wrapper { display: grid; grid-template-columns: 1fr; - gap: $s-24; + gap: deprecated.$s-24; } // STEP CONTAINER .paginator { - @include smallTitleTipography; - height: $s-20; + @include deprecated.smallTitleTipography; + height: deprecated.$s-20; text-align: right; color: var(--modal-text-foreground-color); } @@ -49,33 +49,33 @@ .radio-btns label, .select-class span { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; } // STEP 1 .header-image { - height: $s-60; + height: deprecated.$s-60; width: auto; margin-inline-start: auto; } .modal-title { - @include bigTitleTipography; + @include deprecated.bigTitleTipography; color: var(--modal-title-foreground-color); - min-height: $s-32; + min-height: deprecated.$s-32; margin-block: auto; } .modal-subtitle { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); margin: 0; padding: 0; } .modal-text { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); margin: 0; } @@ -85,60 +85,60 @@ .step-2, .step-3, .step-5 { - max-width: $s-540; - width: $s-540; + max-width: deprecated.$s-540; + width: deprecated.$s-540; } .step-2 { - grid-template-rows: $s-20 auto auto $s-32; + grid-template-rows: deprecated.$s-20 auto auto deprecated.$s-32; } .modal-question { display: grid; grid-template-columns: 1fr; - grid-template-rows: $s-16 $s-32; - gap: $s-16; + grid-template-rows: deprecated.$s-16 deprecated.$s-32; + gap: deprecated.$s-16; height: fit-content; } .question-centered { - width: $s-424; - grid-template-rows: auto $s-32; + width: deprecated.$s-424; + grid-template-rows: auto deprecated.$s-32; margin: 0 auto; } .radio-wrapper { display: grid; grid-template-columns: 1fr; - gap: $s-16; + gap: deprecated.$s-16; } // STEP-3 .step-3 { - grid-template-rows: $s-20 auto auto auto auto $s-32; + grid-template-rows: deprecated.$s-20 auto auto auto auto deprecated.$s-32; } .image-radio { display: grid; grid-template-rows: 1fr 1fr; - grid-template-columns: $s-92 $s-92 $s-92; - row-gap: $s-16; - column-gap: $s-24; + grid-template-columns: deprecated.$s-92 deprecated.$s-92 deprecated.$s-92; + row-gap: deprecated.$s-16; + column-gap: deprecated.$s-24; justify-content: center; } .input-spacing { - height: $s-32; + height: deprecated.$s-32; width: 100%; - margin-block-end: $s-8; + margin-block-end: deprecated.$s-8; } .input-spacing input { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; } // STEP-4 .step-4 { - grid-template-rows: $s-20 auto auto $s-32; - row-gap: $s-16; + grid-template-rows: deprecated.$s-20 auto auto deprecated.$s-32; + row-gap: deprecated.$s-16; } diff --git a/frontend/src/app/main/ui/onboarding/team_choice.scss b/frontend/src/app/main/ui/onboarding/team_choice.scss index 95d275e86c..465ed6152a 100644 --- a/frontend/src/app/main/ui/onboarding/team_choice.scss +++ b/frontend/src/app/main/ui/onboarding/team_choice.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,35 +12,35 @@ .modal-container { position: relative; - width: $s-908; - max-height: $s-800; + width: deprecated.$s-908; + max-height: deprecated.$s-800; height: 100%; - padding-inline: $s-100; - padding-block-start: $s-40; - padding-block-end: $s-40; - border-radius: $br-8; + padding-inline: deprecated.$s-100; + padding-block-start: deprecated.$s-40; + padding-block-end: deprecated.$s-40; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); display: flex; flex-direction: column; - gap: $s-24; + gap: deprecated.$s-24; } .modal-sections { display: grid; - grid-template-columns: 1fr $s-32 1fr; - gap: $s-24; + grid-template-columns: 1fr deprecated.$s-32 1fr; + gap: deprecated.$s-24; height: 100%; overflow: hidden; } .paginator { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; position: absolute; - top: $s-40; - right: $s-100; - padding: $s-4; - border-radius: $br-6; + top: deprecated.$s-40; + right: deprecated.$s-100; + padding: deprecated.$s-4; + border-radius: deprecated.$br-6; color: var(--color-foreground-secondary); } @@ -48,54 +48,54 @@ .modal-left { display: grid; grid-template-columns: 1fr; - grid-template-rows: $s-32 auto auto 1fr; - gap: $s-16; + grid-template-rows: deprecated.$s-32 auto auto 1fr; + gap: deprecated.$s-16; overflow: auto; } .modal-title { - @include bigTitleTipography; + @include deprecated.bigTitleTipography; color: var(--modal-title-foreground-color); } .modal-subtitle { - @include medTitleTipography; + @include deprecated.medTitleTipography; color: var(--modal-title-foreground-color); } .invite-subtitle { - padding-top: $s-16; + padding-top: deprecated.$s-16; } .modal-text { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); margin: 0; } .modal-desc { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; margin: 0; color: var(--modal-title-foreground-color); } .team-features { - @include flexColumn; - gap: $s-16; + @include deprecated.flexColumn; + gap: deprecated.$s-16; margin: 0; } .feature { - @include flexRow; - gap: $s-16; + @include deprecated.flexRow; + gap: deprecated.$s-16; } .icon { - @include flexCenter; - height: $s-32; - width: $s-32; - border-radius: $br-circle; - border: $s-1 solid var(--color-accent-primary); + @include deprecated.flexCenter; + height: deprecated.$s-32; + width: deprecated.$s-32; + border-radius: deprecated.$br-circle; + border: deprecated.$s-1 solid var(--color-accent-primary); svg { @extend .button-icon; stroke: var(--color-accent-primary); @@ -117,9 +117,9 @@ // SEPARATOR .separator { - width: $s-8; + width: deprecated.$s-8; height: 100%; - border-radius: $br-8; + border-radius: deprecated.$br-8; opacity: 42%; background-color: var(--modal-separator-backogrund-color); } @@ -129,7 +129,7 @@ display: grid; grid-template-columns: 1fr; grid-template-rows: 1fr auto; - gap: $s-24; + gap: deprecated.$s-24; overflow: hidden; } @@ -140,21 +140,21 @@ .first-block, .second-block { - @include flexColumn; - gap: $s-16; + @include deprecated.flexColumn; + gap: deprecated.$s-16; } .modal-form { display: grid; grid-template-columns: 1fr; - gap: $s-16; + gap: deprecated.$s-16; } .team-name-input { @extend .input-element-label; label { - @include flexColumn; - @include bodySmallTypography; + @include deprecated.flexColumn; + @include deprecated.bodySmallTypography; align-items: flex-start; width: 100%; border: none; @@ -162,8 +162,8 @@ height: 100%; input { - @include bodySmallTypography; - margin-top: $s-8; + @include deprecated.bodySmallTypography; + margin-top: deprecated.$s-8; } } } @@ -174,21 +174,21 @@ display: grid; grid-template-columns: 1fr; grid-template-rows: auto auto 1fr; - gap: $s-16; - max-height: $s-512; + gap: deprecated.$s-16; + max-height: deprecated.$s-512; } .modal-form-invitations { display: grid; grid-template-columns: 1fr; grid-template-rows: auto 1fr auto auto; - margin-block-end: $s-72; - gap: $s-8; + margin-block-end: deprecated.$s-72; + gap: deprecated.$s-8; } .role-title { - @include uppercaseTitleTipography; - margin-block-end: $s-8; + @include deprecated.uppercaseTitleTipography; + margin-block-end: deprecated.$s-8; color: var(--modal-title-foreground-color); } @@ -198,7 +198,7 @@ } .modal-hint { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--modal-text-foreground-color); text-align: right; } diff --git a/frontend/src/app/main/ui/releases.cljs b/frontend/src/app/main/ui/releases.cljs index ea7268dd04..572cb5312d 100644 --- a/frontend/src/app/main/ui/releases.cljs +++ b/frontend/src/app/main/ui/releases.cljs @@ -29,6 +29,7 @@ [app.main.ui.releases.v2-0] [app.main.ui.releases.v2-1] [app.main.ui.releases.v2-10] + [app.main.ui.releases.v2-11] [app.main.ui.releases.v2-2] [app.main.ui.releases.v2-3] [app.main.ui.releases.v2-4] @@ -101,4 +102,4 @@ (defmethod rc/render-release-notes "0.0" [params] - (rc/render-release-notes (assoc params :version "2.10"))) + (rc/render-release-notes (assoc params :version "2.11"))) diff --git a/frontend/src/app/main/ui/releases/common.scss b/frontend/src/app/main/ui/releases/common.scss index d2f7a7f117..977411aec5 100644 --- a/frontend/src/app/main/ui/releases/common.scss +++ b/frontend/src/app/main/ui/releases/common.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .step-dots { display: grid; grid-template-columns: none; grid-auto-flow: column; - gap: $s-8; + gap: deprecated.$s-8; height: fit-content; width: fit-content; margin: 0; @@ -20,9 +20,9 @@ } .dot { - height: $s-12; - width: $s-12; - border-radius: $br-circle; + height: deprecated.$s-12; + width: deprecated.$s-12; + border-radius: deprecated.$br-circle; background-color: var(--modal-navigator-foreground-color-rest); cursor: pointer; } diff --git a/frontend/src/app/main/ui/releases/v2_0.scss b/frontend/src/app/main/ui/releases/v2_0.scss index 0108877b0e..0d5bc38d2e 100644 --- a/frontend/src/app/main/ui/releases/v2_0.scss +++ b/frontend/src/app/main/ui/releases/v2_0.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,76 +12,76 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; } .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -92,7 +92,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_1.scss b/frontend/src/app/main/ui/releases/v2_1.scss index e305c5d52f..7b2559bc96 100644 --- a/frontend/src/app/main/ui/releases/v2_1.scss +++ b/frontend/src/app/main/ui/releases/v2_1.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,55 +12,55 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; } .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } @@ -73,7 +73,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_10.scss b/frontend/src/app/main/ui/releases/v2_10.scss index dd1b81c82b..e5d13841eb 100644 --- a/frontend/src/app/main/ui/releases/v2_10.scss +++ b/frontend/src/app/main/ui/releases/v2_10.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,24 +12,24 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; a { color: var(--button-primary-background-color-rest); @@ -38,54 +38,54 @@ .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -96,7 +96,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_11.cljs b/frontend/src/app/main/ui/releases/v2_11.cljs new file mode 100644 index 0000000000..a4b330f8bc --- /dev/null +++ b/frontend/src/app/main/ui/releases/v2_11.cljs @@ -0,0 +1,189 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.releases.v2-11 + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data.macros :as dm] + [app.main.ui.releases.common :as c] + [rumext.v2 :as mf])) + +(defmethod c/render-release-notes "2.11" + [{:keys [slide klass next finish navigate version]}] + (mf/html + (case slide + :start + [:div {:class (stl/css-case :modal-overlay true)} + [:div.animated {:class klass} + [:div {:class (stl/css :modal-container)} + [:img {:src "images/features/2.11-slide-0.jpg" + :class (stl/css :start-image) + :border "0" + :alt "Penpot 2.11 is here!"}] + + [:div {:class (stl/css :modal-content)} + [:div {:class (stl/css :modal-header)} + [:h1 {:class (stl/css :modal-title)} + "What’s new in Penpot?"] + + [:div {:class (stl/css :version-tag)} + (dm/str "Version " version)]] + + [:div {:class (stl/css :features-block)} + [:span {:class (stl/css :feature-title)} + "Typography tokens take the stage!"] + + [:p {:class (stl/css :feature-content)} + "This release brings one of our most anticipated design system upgrades yet: Typography tokens."] + + [:p {:class (stl/css :feature-content)} + "But that’s not all. Variants get a nice boost with multi-switching, new creation shortcuts, and draggable property reordering. Invitations are now easier to manage and the user menu has been reorganized. Now showing your current Penpot version and direct access to release info."] + + [:p {:class (stl/css :feature-content)} + "And as always, you’ll notice performance improvements throughout. Faster, smoother, and just a bit more magical every time."] + + [:p {:class (stl/css :feature-content)} + "Let’s dive in!"]] + + [:div {:class (stl/css :navigation)} + [:button {:class (stl/css :next-btn) + :on-click next} "Continue"]]]]]] + + 0 + [:div {:class (stl/css-case :modal-overlay true)} + [:div.animated {:class klass} + [:div {:class (stl/css :modal-container)} + [:img {:src "images/features/2.11-typography-token.gif" + :class (stl/css :start-image) + :border "0" + :alt "Typography token: one token to rule your text"}] + + [:div {:class (stl/css :modal-content)} + [:div {:class (stl/css :modal-header)} + [:h1 {:class (stl/css :modal-title)} + "Typography token: one token to rule your text"]] + + [:div {:class (stl/css :feature)} + [:p {:class (stl/css :feature-content)} + "Imagine having just one token to manage all your typography. With the new Typography token, you can create presets that bundle all your text styles (font, weight, size, line height, spacing, and more) into a single reusable definition. Just one clean, flexible token to keep your type consistent across your designs."] + + [:p {:class (stl/css :feature-content)} + "The Typography token also marks a big step forward for Penpot: it’s our first composite token! Composite tokens are special because they can hold multiple properties within one token. Shadow token will be the next composite token coming your way."]] + + [:div {:class (stl/css :navigation)} + [:& c/navigation-bullets + {:slide slide + :navigate navigate + :total 4}] + + [:button {:on-click next + :class (stl/css :next-btn)} "Continue"]]]]]] + + 1 + [:div {:class (stl/css-case :modal-overlay true)} + [:div.animated {:class klass} + [:div {:class (stl/css :modal-container)} + [:img {:src "images/features/2.11-variants.gif" + :class (stl/css :start-image) + :border "0" + :alt "Variants get a power-up"}] + + [:div {:class (stl/css :modal-content)} + [:div {:class (stl/css :modal-header)} + [:h1 {:class (stl/css :modal-title)} + "Variants get a power-up"]] + [:div {:class (stl/css :feature)} + + [:p {:class (stl/css :feature-content)} + "Variants just got published and they already got a serious quality-of-life boost!"] + + [:p {:class (stl/css :feature-content)} + "- Switch several variant copies at once: No more clicking through each one individually when you want to update a property. Just select multiple copies and change their values in one go — fast, smooth, and efficient."] + + [:p {:class (stl/css :feature-content)} + "- New ways to create variants, right from the design viewport: No need to dig through menus. The new buttons make it super quick to spin up variant sets directly where you’re working."] + + [:p {:class (stl/css :feature-content)} + "- Reorder your component properties by drag & drop: Because organization matters, now you can arrange your properties however makes the most sense to you, so you can keep the ones you use most often right where you want them."]] + + [:div {:class (stl/css :navigation)} + [:& c/navigation-bullets + {:slide slide + :navigate navigate + :total 4}] + + [:button {:on-click next + :class (stl/css :next-btn)} "Continue"]]]]]] + + 2 + [:div {:class (stl/css-case :modal-overlay true)} + [:div.animated {:class klass} + [:div {:class (stl/css :modal-container)} + [:img {:src "images/features/2.11-invitations.gif" + :class (stl/css :start-image) + :border "0" + :alt "A smoother way to manage invitations"}] + + [:div {:class (stl/css :modal-content)} + [:div {:class (stl/css :modal-header)} + [:h1 {:class (stl/css :modal-title)} + "A smoother way to manage invitations"]] + [:div {:class (stl/css :feature)} + + [:p {:class (stl/css :feature-content)} + "The Invitations section just got a big usability upgrade for admins. Here’s what’s new:"] + + + [:p {:class (stl/css :feature-content)} + "Sorting - Organize invitations by role type or status to keep track of who’s in and who’s pending."] + [:p {:class (stl/css :feature-content)} + "Quicker actions - Main actions (resend and delete) are now visible upfront for quicker access."] + [:p {:class (stl/css :feature-content)} + "Bulk management - Select multiple invitations to resend or delete them all at once."] + + [:p {:class (stl/css :feature-content)} + "Invited users will also get clearer emails, including a reminder sent one day before the invite expires (after seven days). Simple, clean, and much more efficient."]] + + [:div {:class (stl/css :navigation)} + [:& c/navigation-bullets + {:slide slide + :navigate navigate + :total 4}] + + [:button {:on-click next + :class (stl/css :next-btn)} "Continue"]]]]]] + + 3 + [:div {:class (stl/css-case :modal-overlay true)} + [:div.animated {:class klass} + [:div {:class (stl/css :modal-container)} + [:img {:src "images/features/2.11-menu.gif" + :class (stl/css :start-image) + :border "0" + :alt "User menu makeover"}] + + [:div {:class (stl/css :modal-content)} + [:div {:class (stl/css :modal-header)} + [:h1 {:class (stl/css :modal-title)} + "User menu makeover"]] + [:div {:class (stl/css :feature)} + + [:p {:class (stl/css :feature-content)} + "The user menu got a well-deserved cleanup. Options are now grouped into clear sections like Help & Learning and Community & Contributions, making navigation faster and easier."] + + [:p {:class (stl/css :feature-content)} + "You’ll also notice a handy new detail: the menu now shows your current Penpot version and gives you quick access to changelog information. This is especially useful for self-hosted setups that want to stay in sync with the latest updates. Simple, organized, and more informative."]] + + [:div {:class (stl/css :navigation)} + + [:& c/navigation-bullets + {:slide slide + :navigate navigate + :total 4}] + + [:button {:on-click finish + :class (stl/css :next-btn)} "Let's go"]]]]]]))) + diff --git a/frontend/src/app/main/ui/releases/v2_11.scss b/frontend/src/app/main/ui/releases/v2_11.scss new file mode 100644 index 0000000000..e5d13841eb --- /dev/null +++ b/frontend/src/app/main/ui/releases/v2_11.scss @@ -0,0 +1,102 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "refactor/common-refactor.scss" as deprecated; + +.modal-overlay { + @extend .modal-overlay-base; +} + +.modal-container { + display: grid; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; + background-color: var(--modal-background-color); + border: deprecated.$s-2 solid var(--modal-border-color); +} + +.start-image { + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; +} + +.modal-content { + padding: deprecated.$s-40; + display: grid; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; + + a { + color: var(--button-primary-background-color-rest); + } +} + +.modal-header { + display: grid; + gap: deprecated.$s-8; +} + +.version-tag { + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; + background-color: var(--communication-tag-background-color); + color: var(--communication-tag-foreground-color); + border-radius: deprecated.$br-8; +} + +.modal-title { + @include deprecated.headlineLargeTypography; + color: var(--modal-title-foreground-color); +} + +.features-block { + display: flex; + flex-direction: column; + gap: deprecated.$s-16; + width: deprecated.$s-440; +} + +.feature { + display: flex; + flex-direction: column; + gap: deprecated.$s-8; +} + +.feature-title { + @include deprecated.bodyLargeTypography; + color: var(--modal-title-foreground-color); +} + +.feature-content { + @include deprecated.bodyMediumTypography; + margin: 0; + color: var(--modal-text-foreground-color); +} + +.feature-list { + @include deprecated.bodyMediumTypography; + color: var(--modal-text-foreground-color); + list-style: disc; + display: grid; + gap: deprecated.$s-8; +} + +.navigation { + width: 100%; + display: grid; + grid-template-areas: "bullets button"; +} + +.next-btn { + @extend .button-primary; + width: deprecated.$s-100; + justify-self: flex-end; + grid-area: button; +} diff --git a/frontend/src/app/main/ui/releases/v2_2.scss b/frontend/src/app/main/ui/releases/v2_2.scss index dd6adbd8a0..34d030466f 100644 --- a/frontend/src/app/main/ui/releases/v2_2.scss +++ b/frontend/src/app/main/ui/releases/v2_2.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,55 +12,55 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-480; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-480; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; } .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } @@ -73,7 +73,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_3.scss b/frontend/src/app/main/ui/releases/v2_3.scss index dd1b81c82b..e5d13841eb 100644 --- a/frontend/src/app/main/ui/releases/v2_3.scss +++ b/frontend/src/app/main/ui/releases/v2_3.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,24 +12,24 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; a { color: var(--button-primary-background-color-rest); @@ -38,54 +38,54 @@ .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -96,7 +96,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_4.scss b/frontend/src/app/main/ui/releases/v2_4.scss index dd1b81c82b..e5d13841eb 100644 --- a/frontend/src/app/main/ui/releases/v2_4.scss +++ b/frontend/src/app/main/ui/releases/v2_4.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,24 +12,24 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; a { color: var(--button-primary-background-color-rest); @@ -38,54 +38,54 @@ .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -96,7 +96,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_5.scss b/frontend/src/app/main/ui/releases/v2_5.scss index dd1b81c82b..e5d13841eb 100644 --- a/frontend/src/app/main/ui/releases/v2_5.scss +++ b/frontend/src/app/main/ui/releases/v2_5.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,24 +12,24 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; a { color: var(--button-primary-background-color-rest); @@ -38,54 +38,54 @@ .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -96,7 +96,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_6.scss b/frontend/src/app/main/ui/releases/v2_6.scss index dd1b81c82b..e5d13841eb 100644 --- a/frontend/src/app/main/ui/releases/v2_6.scss +++ b/frontend/src/app/main/ui/releases/v2_6.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,24 +12,24 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; a { color: var(--button-primary-background-color-rest); @@ -38,54 +38,54 @@ .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -96,7 +96,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_7.scss b/frontend/src/app/main/ui/releases/v2_7.scss index dd1b81c82b..e5d13841eb 100644 --- a/frontend/src/app/main/ui/releases/v2_7.scss +++ b/frontend/src/app/main/ui/releases/v2_7.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,24 +12,24 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; a { color: var(--button-primary-background-color-rest); @@ -38,54 +38,54 @@ .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -96,7 +96,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_8.scss b/frontend/src/app/main/ui/releases/v2_8.scss index dd1b81c82b..e5d13841eb 100644 --- a/frontend/src/app/main/ui/releases/v2_8.scss +++ b/frontend/src/app/main/ui/releases/v2_8.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,24 +12,24 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; a { color: var(--button-primary-background-color-rest); @@ -38,54 +38,54 @@ .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -96,7 +96,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/releases/v2_9.scss b/frontend/src/app/main/ui/releases/v2_9.scss index dd1b81c82b..e5d13841eb 100644 --- a/frontend/src/app/main/ui/releases/v2_9.scss +++ b/frontend/src/app/main/ui/releases/v2_9.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,24 +12,24 @@ .modal-container { display: grid; - grid-template-columns: $s-324 1fr; - height: $s-500; - width: $s-888; - border-radius: $br-8; + grid-template-columns: deprecated.$s-324 1fr; + height: deprecated.$s-500; + width: deprecated.$s-888; + border-radius: deprecated.$br-8; background-color: var(--modal-background-color); - border: $s-2 solid var(--modal-border-color); + border: deprecated.$s-2 solid var(--modal-border-color); } .start-image { - width: $s-324; - border-radius: $br-8 0 0 $br-8; + width: deprecated.$s-324; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; } .modal-content { - padding: $s-40; + padding: deprecated.$s-40; display: grid; - grid-template-rows: auto 1fr $s-32; - gap: $s-24; + grid-template-rows: auto 1fr deprecated.$s-32; + gap: deprecated.$s-24; a { color: var(--button-primary-background-color-rest); @@ -38,54 +38,54 @@ .modal-header { display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .version-tag { - @include flexCenter; - @include headlineSmallTypography; - height: $s-32; - width: $s-96; + @include deprecated.flexCenter; + @include deprecated.headlineSmallTypography; + height: deprecated.$s-32; + width: deprecated.$s-96; background-color: var(--communication-tag-background-color); color: var(--communication-tag-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .modal-title { - @include headlineLargeTypography; + @include deprecated.headlineLargeTypography; color: var(--modal-title-foreground-color); } .features-block { display: flex; flex-direction: column; - gap: $s-16; - width: $s-440; + gap: deprecated.$s-16; + width: deprecated.$s-440; } .feature { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; } .feature-title { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-title-foreground-color); } .feature-content { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; margin: 0; color: var(--modal-text-foreground-color); } .feature-list { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--modal-text-foreground-color); list-style: disc; display: grid; - gap: $s-8; + gap: deprecated.$s-8; } .navigation { @@ -96,7 +96,7 @@ .next-btn { @extend .button-primary; - width: $s-100; + width: deprecated.$s-100; justify-self: flex-end; grid-area: button; } diff --git a/frontend/src/app/main/ui/settings.scss b/frontend/src/app/main/ui/settings.scss index 5c95a0058d..2963138812 100644 --- a/frontend/src/app/main/ui/settings.scss +++ b/frontend/src/app/main/ui/settings.scss @@ -4,14 +4,14 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "common/refactor/common-dashboard"; .dashboard { background-color: var(--app-background); display: grid; - grid-template-rows: $s-48 1fr; - grid-template-columns: $s-40 $s-256 1fr; + grid-template-rows: deprecated.$s-48 1fr; + grid-template-columns: deprecated.$s-40 deprecated.$s-256 1fr; height: 100vh; } @@ -20,26 +20,26 @@ flex-direction: column; position: relative; grid-row: 1 / span 2; - padding: $s-16 $s-16 0 0; + padding: deprecated.$s-16 deprecated.$s-16 0 0; } .dashboard-container { flex: 1 0 0; - margin-right: $s-16; + margin-right: deprecated.$s-16; overflow-y: auto; width: 100%; - border-top: $s-1 solid var(--color-background-quaternary); + border-top: deprecated.$s-1 solid var(--color-background-quaternary); &.dashboard-projects { user-select: none; } &.dashboard-shared { - width: calc(100vw - $s-320); - margin-right: $s-52; + width: calc(100vw - deprecated.$s-320); + margin-right: deprecated.$s-52; } &.search { - margin-top: $s-12; + margin-top: deprecated.$s-12; } } @@ -54,24 +54,24 @@ } .form-container { - width: $s-800; - margin: $s-48 auto $s-32 $s-120; + width: deprecated.$s-800; + margin: deprecated.$s-48 auto deprecated.$s-32 deprecated.$s-120; display: flex; - max-width: $s-368; + max-width: deprecated.$s-368; width: 100%; &.two-columns { - max-width: $s-520; + max-width: deprecated.$s-520; justify-content: space-between; flex-direction: row; } h2 { - margin-bottom: $s-16; + margin-bottom: deprecated.$s-16; } form { - width: $s-468; + width: deprecated.$s-468; .custom-input, .custom-select { @@ -80,26 +80,26 @@ position: relative; text-transform: uppercase; color: var(--color-foreground-primary); - font-size: $fs-11; - margin-bottom: $s-12; - margin-left: calc(-1 * $s-4); + font-size: deprecated.$fs-11; + margin-bottom: deprecated.$s-12; + margin-left: calc(-1 * deprecated.$s-4); } input, select { background-color: var(--color-background-tertiary); - border-radius: $s-8; + border-radius: deprecated.$s-8; border-color: transparent; color: var(--color-foreground-primary); - padding: 0 $s-16; + padding: 0 deprecated.$s-16; &:focus { - outline: $s-1 solid var(--color-accent-primary); + outline: deprecated.$s-1 solid var(--color-accent-primary); } ::placeholder { color: var(--color-foreground-secondary); } } .help-icon { - bottom: $s-12; + bottom: deprecated.$s-12; top: auto; svg { fill: var(--color-foreground-secondary); @@ -114,30 +114,30 @@ } .input-container { background-color: var(--color-background-tertiary); - border-radius: $s-8; + border-radius: deprecated.$s-8; border-color: transparent; - margin-top: $s-24; + margin-top: deprecated.$s-24; .main-content { label { position: absolute; - top: calc(-1 * $s-24); + top: calc(-1 * deprecated.$s-24); } span { color: var(--color-foreground-primary); } } &:focus { - border: $s-1 solid var(--color-accent-primary); + border: deprecated.$s-1 solid var(--color-accent-primary); } } textarea { - border-radius: $s-8; - padding: $s-12 $s-16; + border-radius: deprecated.$s-8; + padding: deprecated.$s-12 deprecated.$s-16; background-color: var(--color-background-tertiary); color: var(--color-foreground-primary); border: none; &:focus { - outline: $s-1 solid var(--color-accent-primary); + outline: deprecated.$s-1 solid var(--color-accent-primary); } } } @@ -146,7 +146,7 @@ color: var(--color-foreground-primary); } .field-title:not(:first-child) { - margin-top: $s-64; + margin-top: deprecated.$s-64; } .field-text { @@ -155,7 +155,7 @@ button, .btn-secondary { width: 100%; - font-size: $fs-11; + font-size: deprecated.$fs-11; text-transform: uppercase; background-color: var(--color-background-tertiary); color: var(--color-foreground-primary); @@ -169,41 +169,41 @@ } } .links { - margin-top: $s-12; + margin-top: deprecated.$s-12; } } .profile-form { display: flex; flex-direction: column; - max-width: $s-368; + max-width: deprecated.$s-368; width: 100%; .newsletter-subs { - border-bottom: $s-1 solid var(--color-foreground-secondary); - border-top: $s-1 solid var(--color-foreground-secondary); - padding: $s-32 0; - margin-bottom: $s-32; + border-bottom: deprecated.$s-1 solid var(--color-foreground-secondary); + border-top: deprecated.$s-1 solid var(--color-foreground-secondary); + padding: deprecated.$s-32 0; + margin-bottom: deprecated.$s-32; .newsletter-title { font-family: "worksans", "vazirmatn", sans-serif; color: var(--color-foreground-secondary); - font-size: $fs-14; + font-size: deprecated.$fs-14; } label { font-family: "worksans", "vazirmatn", sans-serif; color: var(--color-background-primary); - font-size: $fs-12; - margin-right: calc(-1 * $s-16); - margin-bottom: $s-12; + font-size: deprecated.$fs-12; + margin-right: calc(-1 * deprecated.$s-16); + margin-bottom: deprecated.$s-12; } .info { font-family: "worksans", "vazirmatn", sans-serif; color: var(--color-foreground-secondary); - font-size: $fs-12; - margin-bottom: $s-8; + font-size: deprecated.$fs-12; + margin-bottom: deprecated.$s-8; } .input-checkbox label { @@ -215,30 +215,30 @@ .avatar-form { display: flex; flex-direction: column; - width: $s-120; - min-width: $s-120; + width: deprecated.$s-120; + min-width: deprecated.$s-120; img { border-radius: 50%; flex-shrink: 0; - height: $s-120; - margin-right: $s-16; - width: $s-120; + height: deprecated.$s-120; + margin-right: deprecated.$s-16; + width: deprecated.$s-120; } .image-change-field { position: relative; - width: $s-120; - height: $s-120; + width: deprecated.$s-120; + height: deprecated.$s-120; .update-overlay { opacity: 0; cursor: pointer; position: absolute; - width: $s-120; - height: $s-120; + width: deprecated.$s-120; + height: deprecated.$s-120; border-radius: 50%; - font-size: $fs-24; + font-size: deprecated.$fs-24; color: var(--color-foreground-primary); line-height: 5; text-align: center; @@ -247,8 +247,8 @@ } input[type="file"] { - width: $s-120; - height: $s-120; + width: deprecated.$s-120; + height: deprecated.$s-120; position: absolute; opacity: 0; cursor: pointer; @@ -267,7 +267,7 @@ .options-form, .password-form { h2 { - font-size: $fs-14; - margin-bottom: $s-20; + font-size: deprecated.$fs-14; + margin-bottom: deprecated.$s-20; } } diff --git a/frontend/src/app/main/ui/settings/access_tokens.scss b/frontend/src/app/main/ui/settings/access_tokens.scss index afb7dc6bab..5e9f139765 100644 --- a/frontend/src/app/main/ui/settings/access_tokens.scss +++ b/frontend/src/app/main/ui/settings/access_tokens.scss @@ -4,36 +4,36 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; // ACCESS TOKENS PAGE .dashboard-access-tokens { display: grid; grid-template-rows: auto 1fr; - margin: $s-80 auto $s-120 auto; - gap: $s-32; - width: $s-800; + margin: deprecated.$s-80 auto deprecated.$s-120 auto; + gap: deprecated.$s-32; + width: deprecated.$s-800; } // hero .access-tokens-hero { display: grid; grid-template-rows: auto auto 1fr; - gap: $s-32; - width: $s-500; - font-size: $fs-14; - margin: $s-16 auto 0 auto; + gap: deprecated.$s-32; + width: deprecated.$s-500; + font-size: deprecated.$fs-14; + margin: deprecated.$s-16 auto 0 auto; } .hero-title { - @include bigTitleTipography; + @include deprecated.bigTitleTipography; color: var(--title-foreground-color-hover); } .hero-desc { color: var(--title-foreground-color); margin-bottom: 0; - font-size: $fs-14; + font-size: deprecated.$fs-14; } .hero-btn { @@ -45,12 +45,12 @@ display: grid; place-items: center; align-content: center; - height: $s-156; - max-width: $s-1000; + height: deprecated.$s-156; + max-width: deprecated.$s-1000; width: 100%; - padding: $s-32; - border: $s-1 solid var(--panel-border-color); - border-radius: $br-8; + padding: deprecated.$s-32; + border: deprecated.$s-1 solid var(--panel-border-color); + border-radius: deprecated.$br-8; color: var(--dashboard-list-text-foreground-color); } @@ -61,12 +61,12 @@ .table-rows { display: grid; - grid-auto-rows: $s-64; - gap: $s-16; + grid-auto-rows: deprecated.$s-64; + gap: deprecated.$s-16; width: 100%; height: 100%; - max-width: $s-1000; - margin-top: $s-16; + max-width: deprecated.$s-1000; + margin-top: deprecated.$s-16; color: var(--title-foreground-color); } @@ -74,33 +74,33 @@ display: grid; grid-template-columns: 43% 1fr auto; align-items: center; - height: $s-64; + height: deprecated.$s-64; width: 100%; - padding: 0 $s-16; - border-radius: $br-8; + padding: 0 deprecated.$s-16; + border-radius: deprecated.$br-8; background-color: var(--dashboard-list-background-color); color: var(--dashboard-list-foreground-color); } .field-name { - @include textEllipsis; + @include deprecated.textEllipsis; display: grid; width: 43%; - min-width: $s-300; + min-width: deprecated.$s-300; } .expiration-date { - @include flexCenter; - min-width: $s-76; + @include deprecated.flexCenter; + min-width: deprecated.$s-76; width: fit-content; - height: $s-24; - border-radius: $br-8; + height: deprecated.$s-24; + border-radius: deprecated.$br-8; color: var(--dashboard-list-text-foreground-color); } .expired { - @include headlineSmallTypography; - padding: 0 $s-6; + @include deprecated.headlineSmallTypography; + padding: 0 deprecated.$s-6; color: var(--pill-foreground-color); background-color: var(--status-widget-background-color-warning); } @@ -114,7 +114,7 @@ } .menu-btn { - @include buttonStyle; + @include deprecated.buttonStyle; } // Create access token modal @@ -124,15 +124,15 @@ .modal-container { @extend .modal-container-base; - min-width: $s-408; + min-width: deprecated.$s-408; } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } .modal-close-btn { @@ -140,46 +140,46 @@ } .modal-content { - @include flexColumn; - gap: $s-24; - @include bodySmallTypography; - margin-bottom: $s-24; + @include deprecated.flexColumn; + gap: deprecated.$s-24; + @include deprecated.bodySmallTypography; + margin-bottom: deprecated.$s-24; } .select-title { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--modal-title-foreground-color); } .custon-input-wrapper { - @include flexRow; - border-radius: $br-8; - height: $s-32; + @include deprecated.flexRow; + border-radius: deprecated.$br-8; + height: deprecated.$s-32; background-color: var(--input-background-color); } .custom-input-token { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; margin: 0; flex-grow: 1; &:focus { outline: none; - border: $s-1 solid var(--input-border-color-active); + border: deprecated.$s-1 solid var(--input-border-color-active); } } .token-value { - @include textEllipsis; - @include bodySmallTypography; + @include deprecated.textEllipsis; + @include deprecated.bodySmallTypography; flex-grow: 1; } .copy-btn { - @include flexCenter; + @include deprecated.flexCenter; @extend .button-secondary; - height: $s-28; - width: $s-28; + height: deprecated.$s-28; + width: deprecated.$s-28; } .clipboard-icon { diff --git a/frontend/src/app/main/ui/settings/change_email.scss b/frontend/src/app/main/ui/settings/change_email.scss index fef165d493..71900cf9e4 100644 --- a/frontend/src/app/main/ui/settings/change_email.scss +++ b/frontend/src/app/main/ui/settings/change_email.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,15 +12,15 @@ .modal-container { @extend .modal-container-base; - min-width: $s-408; + min-width: deprecated.$s-408; } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } @@ -29,18 +29,18 @@ } .modal-content { - @include flexColumn; - @include bodySmallTypography; - gap: $s-24; - margin-bottom: $s-24; + @include deprecated.flexColumn; + @include deprecated.bodySmallTypography; + gap: deprecated.$s-24; + margin-bottom: deprecated.$s-24; } .fields-row { - @include flexColumn; + @include deprecated.flexColumn; } .select-title { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--modal-title-foreground-color); } diff --git a/frontend/src/app/main/ui/settings/delete_account.scss b/frontend/src/app/main/ui/settings/delete_account.scss index fd8e01b55e..c69d17de53 100644 --- a/frontend/src/app/main/ui/settings/delete_account.scss +++ b/frontend/src/app/main/ui/settings/delete_account.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,15 +12,15 @@ .modal-container { @extend .modal-container-base; - min-width: $s-408; + min-width: deprecated.$s-408; } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } @@ -29,18 +29,18 @@ } .modal-content { - @include flexColumn; - @include bodySmallTypography; - gap: $s-24; - margin-bottom: $s-24; + @include deprecated.flexColumn; + @include deprecated.bodySmallTypography; + gap: deprecated.$s-24; + margin-bottom: deprecated.$s-24; } .fields-row { - @include flexColumn; + @include deprecated.flexColumn; } .select-title { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--modal-title-foreground-color); } diff --git a/frontend/src/app/main/ui/settings/notifications.scss b/frontend/src/app/main/ui/settings/notifications.scss index 7e2cd4ae08..27a2273536 100644 --- a/frontend/src/app/main/ui/settings/notifications.scss +++ b/frontend/src/app/main/ui/settings/notifications.scss @@ -4,17 +4,17 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "./profile" as *; .update-btn { - margin-top: $s-16; + margin-top: deprecated.$s-16; @extend .button-primary; - height: $s-36; + height: deprecated.$s-36; } .notifications-form { - width: $s-400; + width: deprecated.$s-400; } .notifications-page { @@ -34,9 +34,9 @@ } h4 { - font-size: $fs-11; + font-size: deprecated.$fs-11; color: var(--color-foreground-primary); text-transform: uppercase; - margin: $s-12; + margin: deprecated.$s-12; } } diff --git a/frontend/src/app/main/ui/settings/password.scss b/frontend/src/app/main/ui/settings/password.scss index fe44ec71b3..5a0551333e 100644 --- a/frontend/src/app/main/ui/settings/password.scss +++ b/frontend/src/app/main/ui/settings/password.scss @@ -4,11 +4,11 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; @use "./profile" as *; .update-btn { - margin-top: $s-16; + margin-top: deprecated.$s-16; @extend .button-primary; - height: $s-36; + height: deprecated.$s-36; } diff --git a/frontend/src/app/main/ui/settings/sidebar.scss b/frontend/src/app/main/ui/settings/sidebar.scss index 096d6342ec..a072c59b8f 100644 --- a/frontend/src/app/main/ui/settings/sidebar.scss +++ b/frontend/src/app/main/ui/settings/sidebar.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .dashboard-sidebar { grid-column: 1 / span 2; @@ -12,9 +12,9 @@ display: grid; grid-template-rows: 1fr auto; height: 100%; - padding-block-start: $s-16; - border-right: $s-1 solid var(--panel-border-color); - z-index: $z-index-1; + padding-block-start: deprecated.$s-16; + border-right: deprecated.$s-1 solid var(--panel-border-color); + z-index: deprecated.$z-index-1; background-color: var(--panel-background-color); } @@ -28,7 +28,7 @@ .sidebar-separator { border-color: transparent; - margin: $s-12 $s-16; + margin: deprecated.$s-12 deprecated.$s-16; } .sidebar-nav-settings { @@ -44,7 +44,7 @@ --settings-background-color: transparent; display: flex; align-items: center; - padding: $s-8 $s-8 $s-8 $s-24; + padding: deprecated.$s-8 deprecated.$s-8 deprecated.$s-8 deprecated.$s-24; color: var(--settings-foreground-color); background-color: var(--settings-background-color); cursor: pointer; @@ -63,20 +63,20 @@ .feedback-icon { @extend .button-icon-small; stroke: var(--settings-foreground-color); - margin-right: $s-8; + margin-right: deprecated.$s-8; } .element-title { - @include textEllipsis; - @include bodyMediumTypography; + @include deprecated.textEllipsis; + @include deprecated.bodyMediumTypography; } .back-to-dashboard { - @include buttonStyle; + @include deprecated.buttonStyle; display: flex; align-items: center; - padding: $s-12 $s-16; - font-size: $fs-14; + padding: deprecated.$s-12 deprecated.$s-16; + font-size: deprecated.$fs-14; } .back-text { @@ -87,5 +87,5 @@ @extend .button-icon; stroke: var(--icon-foreground); transform: rotate(180deg); - margin-right: $s-12; + margin-right: deprecated.$s-12; } diff --git a/frontend/src/app/main/ui/settings/subscription.scss b/frontend/src/app/main/ui/settings/subscription.scss index b74acbef43..b3632069b7 100644 --- a/frontend/src/app/main/ui/settings/subscription.scss +++ b/frontend/src/app/main/ui/settings/subscription.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; -@use "../ds/typography.scss" as t; -@use "../ds/_borders.scss" as *; -@use "../ds/spacing.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; +@use "ds/typography.scss" as t; +@use "ds/_borders.scss" as *; +@use "ds/spacing.scss" as *; .dashboard-section { display: flex; @@ -20,10 +20,10 @@ display: flex; justify-content: center; flex-direction: column; - max-width: $s-500; + max-width: deprecated.$s-500; margin-block-end: var(--sp-xxxl); - width: $s-580; - margin: $s-92 auto $s-120 auto; + width: deprecated.$s-580; + margin: deprecated.$s-92 auto deprecated.$s-120 auto; justify-content: center; } @@ -98,7 +98,7 @@ border-radius: 6px; border: 1.75px solid var(--color-foreground-primary); stroke-width: 2.25px; - padding: $s-1; + padding: deprecated.$s-1; svg { block-size: var(--sp-m); @@ -135,12 +135,12 @@ } .other-subscriptions { - margin-block-start: $s-52; + margin-block-start: deprecated.$s-52; } .cta-button { @include t.use-typography("body-medium"); - @include buttonStyle; + @include deprecated.buttonStyle; align-items: center; color: var(--color-accent-tertiary); display: flex; @@ -173,11 +173,11 @@ display: grid; grid-template-rows: auto 1fr auto; max-height: initial; - min-width: $s-548; + min-width: deprecated.$s-548; } .modal-dialog.subscription-success { - min-width: $s-648; + min-width: deprecated.$s-648; } .close-btn { @@ -211,7 +211,7 @@ .modal-text-medium strong, .text-strikethrough strong, .modal-text-cap strong { - font-weight: $fw700; + font-weight: deprecated.$fw700; } .modal-content, @@ -223,11 +223,11 @@ .modal-success-content { display: flex; - gap: $s-40; + gap: deprecated.$s-40; } .modal-footer { - margin-block-start: $s-40; + margin-block-start: deprecated.$s-40; } .action-buttons { @@ -249,7 +249,7 @@ .modal-start { display: flex; justify-content: center; - max-width: $s-220; + max-width: deprecated.$s-220; svg { width: 100%; @@ -276,19 +276,19 @@ list-style-position: inside; list-style-type: none; margin-inline-start: var(--sp-xl); - max-height: $s-216; + max-height: deprecated.$s-216; overflow-y: auto; } .input-field { --input-icon-padding: var(--sp-s); - width: $s-80; + width: deprecated.$s-80; } .error-message { @include t.use-typography("body-small"); color: var(--color-foreground-error); - margin-block-start: $s-8; + margin-block-start: deprecated.$s-8; } .editors-wrapper { @@ -307,7 +307,7 @@ @include t.use-typography("body-small"); background-color: var(--color-background-tertiary); border-radius: var(--sp-s); - margin-block-start: $s-40; + margin-block-start: deprecated.$s-40; padding-block: var(--sp-s); padding-inline: var(--sp-m); } diff --git a/frontend/src/app/main/ui/static.scss b/frontend/src/app/main/ui/static.scss index aff796cee3..77bbfbff5b 100644 --- a/frontend/src/app/main/ui/static.scss +++ b/frontend/src/app/main/ui/static.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .exception-layout { width: 100%; @@ -15,13 +15,13 @@ .deco-before, .deco-after { position: absolute; - left: calc(50% - $s-40); + left: calc(50% - deprecated.$s-40); svg { position: absolute; fill: var(--color-foreground-secondary); height: 1537px; - width: $s-80; + width: deprecated.$s-80; } } @@ -46,7 +46,7 @@ .deco-after2 { display: flex; justify-content: center; - gap: $s-8; + gap: deprecated.$s-8; width: 100%; height: 34vh; position: absolute; @@ -57,7 +57,7 @@ svg { fill: var(--color-foreground-secondary); height: 1537px; - width: $s-80; + width: deprecated.$s-80; } span { @@ -66,7 +66,7 @@ justify-content: flex-end; height: 100%; width: 25%; - padding-bottom: $s-28; + padding-bottom: deprecated.$s-28; &:first-child { text-align: right; @@ -76,7 +76,7 @@ .exception-header { color: var(--color-foreground-secondary); - padding: $s-24 $s-32; + padding: deprecated.$s-24 deprecated.$s-32; position: fixed; background: none; border: none; @@ -87,8 +87,8 @@ .penpot-logo { fill: var(--color-foreground-primary); - width: $s-48; - height: $s-48; + width: deprecated.$s-48; + height: deprecated.$s-48; } .back-arrow { @@ -99,18 +99,18 @@ display: flex; justify-content: center; align-items: center; - gap: $s-8; - margin-left: $s-12; - font-size: $fs-14; + gap: deprecated.$s-8; + margin-left: deprecated.$s-12; + font-size: deprecated.$fs-14; } .login-header { @extend .button-primary; - padding: $s-8 $s-16; - font-size: $fs-11; + padding: deprecated.$s-8 deprecated.$s-16; + font-size: deprecated.$fs-11; position: fixed; right: 0; - margin: $s-40 $s-32; + margin: deprecated.$s-40 deprecated.$s-32; } .exception-content { @@ -123,22 +123,22 @@ align-items: center; display: flex; flex-direction: column; - gap: $s-16; + gap: deprecated.$s-16; height: 34vh; justify-content: center; margin-top: 33vh; text-align: center; - width: $s-640; + width: deprecated.$s-640; } } .main-message { - @include bigTitleTipography; + @include deprecated.bigTitleTipography; color: var(--color-foreground-primary); } .desc-message { - @include bigTitleTipography; + @include deprecated.bigTitleTipography; color: var(--color-foreground-secondary); } @@ -148,8 +148,8 @@ button { @extend .button-primary; text-transform: uppercase; - padding: $s-8 $s-16; - font-size: $fs-11; + padding: deprecated.$s-8 deprecated.$s-16; + font-size: deprecated.$fs-11; } } @@ -169,12 +169,12 @@ .workspace-left, .workspace-right { - padding: $s-12; - width: $s-276; + padding: deprecated.$s-12; + width: deprecated.$s-276; height: 100%; background-color: var(--color-background-primary); display: flex; - gap: $s-4; + gap: deprecated.$s-4; svg { width: 2rem; @@ -183,12 +183,12 @@ } .project-name { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--title-foreground-color); } .file-name { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; text-transform: none; color: var(--title-foreground-color-hover); } @@ -200,7 +200,7 @@ height: 100%; .dashboard-sidebar { - width: $s-300; + width: deprecated.$s-300; height: 100%; } } @@ -226,11 +226,11 @@ .dialog-login { width: 556px; background-color: var(--color-background-primary); - border-radius: $s-8; + border-radius: deprecated.$s-8; display: flex; flex-direction: column; align-content: stretch; - padding: $s-36; + padding: deprecated.$s-36; color: var(--modal-text-foreground-color); .modal-close { @@ -243,8 +243,8 @@ svg { cursor: pointer; - width: $s-24; - height: $s-24; + width: deprecated.$s-24; + height: deprecated.$s-24; fill: var(--modal-text-foreground-color); stroke: var(--modal-text-foreground-color); } @@ -252,59 +252,59 @@ } .dialog-title { - font-size: $fs-20; + font-size: deprecated.$fs-20; } .sign-info { display: flex; justify-content: flex-end; - margin-top: $s-32; + margin-top: deprecated.$s-32; button { @extend .button-primary; text-transform: uppercase; - padding: $s-8 $s-16; - font-size: $fs-11; + padding: deprecated.$s-8 deprecated.$s-16; + font-size: deprecated.$fs-11; } .cancel-button { @extend .button-secondary; text-transform: uppercase; - padding: $s-8 $s-16; - font-size: $fs-11; - margin-right: $s-16; + padding: deprecated.$s-8 deprecated.$s-16; + font-size: deprecated.$fs-11; + margin-right: deprecated.$s-16; } } } .dialog { - gap: $s-12; + gap: deprecated.$s-12; } .login { gap: 0; - padding: 0 $s-36 $s-72 $s-36; + padding: 0 deprecated.$s-36 deprecated.$s-72 deprecated.$s-36; .logo { - margin-bottom: $s-40; + margin-bottom: deprecated.$s-40; svg { fill: var(--color-foreground-primary); - width: $s-120; - height: $s-40; + width: deprecated.$s-120; + height: deprecated.$s-40; } } .logo-title { - font-size: $fs-20; + font-size: deprecated.$fs-20; color: var(--title-foreground-color-hover); - margin-bottom: $s-4; + margin-bottom: deprecated.$s-4; } .logo-subtitle { - font-size: $fs-14; + font-size: deprecated.$fs-14; color: var(--title-foreground-color-hover); - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .change-section { @@ -317,16 +317,16 @@ } hr { - margin: $s-20 0; - border-top: solid $s-1 var(--modal-separator-backogrund-color); + margin: deprecated.$s-20 0; + border-top: solid deprecated.$s-1 var(--modal-separator-backogrund-color); } .separator { - margin: $s-20 0; + margin: deprecated.$s-20 0; } form div { - margin-bottom: $s-8; + margin-bottom: deprecated.$s-8; } } } diff --git a/frontend/src/app/main/ui/viewer.scss b/frontend/src/app/main/ui/viewer.scss index 2ece31cd85..6b46b2d5f4 100644 --- a/frontend/src/app/main/ui/viewer.scss +++ b/frontend/src/app/main/ui/viewer.scss @@ -4,12 +4,12 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .viewer-layout { height: 100vh; display: grid; - grid-template-rows: $s-48 auto; + grid-template-rows: deprecated.$s-48 auto; grid-template-columns: 1fr; user-select: none; } @@ -18,13 +18,13 @@ overflow: hidden; grid-row: 2 / span 1; display: grid; - grid-template-rows: $s-252 auto; + grid-template-rows: deprecated.$s-252 auto; grid-template-columns: 1fr; background-color: var(--viewer-background-color); } .empty-state { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--empty-message-foreground-color); display: grid; place-items: center; @@ -38,7 +38,7 @@ .inspect-layout { display: grid; - grid-template-rows: $s-48 auto; + grid-template-rows: deprecated.$s-48 auto; grid-template-columns: 1fr; height: 100vh; margin-top: 0; @@ -46,10 +46,10 @@ } .thumbnails-close { - @include buttonStyle; + @include deprecated.buttonStyle; grid-row: 1 / span 2; grid-column: 1 / span 1; - z-index: $z-index-10; + z-index: deprecated.$z-index-10; background-color: var(--overlay-color); } @@ -64,7 +64,7 @@ display: flex; align-items: center; flex-wrap: nowrap; - height: calc(100vh - $s-48); + height: calc(100vh - deprecated.$s-48); flex-flow: wrap; overflow: auto; } @@ -79,13 +79,13 @@ .viewer-go-prev, .viewer-go-next { @extend .button-secondary; - @include flexCenter; + @include deprecated.flexCenter; position: absolute; - right: $s-8; - height: $s-64; - width: $s-32; - top: calc(50vh - $s-32); - z-index: $z-index-2; + right: deprecated.$s-8; + height: deprecated.$s-64; + width: deprecated.$s-32; + top: calc(50vh - deprecated.$s-32); + z-index: deprecated.$z-index-2; background-color: var(--viewer-controls-background-color); transition: transform 400ms ease 300ms; svg { @@ -95,11 +95,11 @@ } .viewer-go-next.comment-sidebar { - right: $s-280; + right: deprecated.$s-280; } .viewer-go-prev { - left: $s-8; + left: deprecated.$s-8; right: unset; svg { transform: rotate(180deg); @@ -113,19 +113,19 @@ align-items: flex-start; justify-content: space-between; width: 100%; - height: $s-40; - padding-right: 0 $s-8 $s-40 $s-8; + height: deprecated.$s-40; + padding-right: 0 deprecated.$s-8 deprecated.$s-40 deprecated.$s-8; transition: transform 400ms ease 300ms; - z-index: $z-index-2; + z-index: deprecated.$z-index-2; pointer-events: none; } .reset-button { @extend .button-secondary; - @include flexCenter; - height: $s-32; - width: $s-28; - margin-left: $s-8; + @include deprecated.flexCenter; + height: deprecated.$s-32; + width: deprecated.$s-28; + margin-left: deprecated.$s-8; background-color: var(--viewer-controls-background-color); pointer-events: all; svg { @@ -135,11 +135,11 @@ } .counter { - @include flexCenter; - @include bodySmallTypography; - border-radius: $br-8; - width: $s-64; - height: $s-32; + @include deprecated.flexCenter; + @include deprecated.bodySmallTypography; + border-radius: deprecated.$br-8; + width: deprecated.$s-64; + height: deprecated.$s-32; color: var(--viewer-thumbnails-control-foreground-color); background-color: var(--viewer-controls-background-color); } @@ -193,7 +193,7 @@ /** FULLSCREEN */ [data-fullscreen="true"] .viewer-bottom { - transform: translateY($s-40); + transform: translateY(deprecated.$s-40); } [data-force-visible="true"] .viewer-bottom { @@ -201,15 +201,15 @@ } [data-fullscreen="true"] .viewer-go-next { - transform: translateX($s-40); + transform: translateX(deprecated.$s-40); } [data-fullscreen="true"] .viewer-go-prev { - transform: translateX(-$s-40); + transform: translateX(-#{deprecated.$s-40}); } [data-fullscreen="true"] .viewer-content { - transform: translateY(-$s-48); + transform: translateY(-#{deprecated.$s-48}); height: 100vh; } diff --git a/frontend/src/app/main/ui/viewer/comments.scss b/frontend/src/app/main/ui/viewer/comments.scss index 7472dc8d2e..f567027f33 100644 --- a/frontend/src/app/main/ui/viewer/comments.scss +++ b/frontend/src/app/main/ui/viewer/comments.scss @@ -4,32 +4,32 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; // COMMENT DROPDOWN ON HEADER .view-options { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; position: relative; - gap: $s-4; - height: $s-32; - padding: $s-8; - border-radius: $br-8; + gap: deprecated.$s-4; + height: deprecated.$s-32; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--input-background-color); cursor: pointer; } .dropdown { @extend .menu-dropdown; - right: $s-2; - top: calc($s-2 + $s-48); - width: $s-272; - padding: $s-6; + right: deprecated.$s-2; + top: calc(deprecated.$s-2 + deprecated.$s-48); + width: deprecated.$s-272; + padding: deprecated.$s-6; } .dropdown-title { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; flex-grow: 1; color: var(--input-foreground-color-active); } @@ -41,9 +41,9 @@ .icon, .icon-dropdown { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - width: $s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -57,9 +57,9 @@ .dropdown-element { @extend .dropdown-element-base; .icon { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - width: $s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -80,7 +80,7 @@ } .separator { - height: $s-8; + height: deprecated.$s-8; } // FLOATING COMMENT @@ -90,7 +90,7 @@ left: 0px; width: 100%; height: 100%; - z-index: $z-index-1; + z-index: deprecated.$z-index-1; } .threads { @@ -103,10 +103,10 @@ .comments-sidebar { position: absolute; right: 0; - top: $s-44; - width: $s-276; - height: calc(100vh - $s-48); - z-index: $z-index-10; + top: deprecated.$s-44; + width: deprecated.$s-276; + height: calc(100vh - deprecated.$s-48); + z-index: deprecated.$z-index-10; background-color: var(--panel-background-color); } diff --git a/frontend/src/app/main/ui/viewer/header.scss b/frontend/src/app/main/ui/viewer/header.scss index 1a338aac0b..f9814d3a44 100644 --- a/frontend/src/app/main/ui/viewer/header.scss +++ b/frontend/src/app/main/ui/viewer/header.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .viewer-header { position: absolute; @@ -12,12 +12,12 @@ grid-column: 1 / span 1; grid-row: 1 / span 1; display: grid; - grid-template-columns: 1fr $s-92 1fr; + grid-template-columns: 1fr deprecated.$s-92 1fr; justify-content: space-between; align-items: center; - height: $s-48; + height: deprecated.$s-48; width: 100vw; - padding: $s-8 $s-12; + padding: deprecated.$s-8 deprecated.$s-12; transition: transform 400ms ease 300ms; background-color: var(--panel-background-color); } @@ -29,7 +29,7 @@ justify-content: flex-start; flex-basis: min-content; width: 100%; - gap: $s-12; + gap: deprecated.$s-12; } .home-link { @@ -39,43 +39,43 @@ } .logo-icon { - width: $s-28; - height: $s-28; + width: deprecated.$s-28; + height: deprecated.$s-28; fill: var(--icon-foreground-hover); } .sitemap-zone { - @include flexColumn; + @include deprecated.flexColumn; position: relative; width: 100%; } .project-name { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--title-foreground-color); } .sitemap-text { - @include flexRow; + @include deprecated.flexRow; } .breadcrumb { - @include bodySmallTypography; - @include flexRow; + @include deprecated.bodySmallTypography; + @include deprecated.flexRow; color: var(--title-foreground-color); cursor: pointer; } .breadcrumb-text { - @include textEllipsis; + @include deprecated.textEllipsis; max-width: 12vw; // This is a fallback max-width: 12cqw; // This is a unit refered to container } .icon { - @include flexCenter; - height: $s-16; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; transform: rotate(90deg); @@ -90,17 +90,17 @@ .dropdown-sitemap { @extend .menu-dropdown; left: 0; - top: calc($s-2 + $s-48); - width: $s-272; - padding: $s-6; + top: calc(deprecated.$s-2 + deprecated.$s-48); + width: deprecated.$s-272; + padding: deprecated.$s-6; } .dropdown-element { @extend .dropdown-element-base; .icon-check { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - width: $s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -112,8 +112,8 @@ } .current-frame { - @include bodySmallTypography; - @include flexRow; + @include deprecated.bodySmallTypography; + @include deprecated.flexRow; flex-grow: 1; color: var(--title-foreground-color-hover); cursor: pointer; @@ -123,22 +123,22 @@ } .frame-name { - @include textEllipsis; + @include deprecated.textEllipsis; max-width: 17vw; // This is a fallback max-width: 17cqw; // This is a unit refered to container } // SECTION BUTTONS .mode-zone { - @include flexRow; + @include deprecated.flexRow; height: 100%; } .mode-zone-btn { @extend .button-tertiary; - @include flexCenter; - height: $s-32; - width: $s-28; + @include deprecated.flexCenter; + height: deprecated.$s-32; + width: deprecated.$s-28; padding: 0; svg { @extend .button-icon; @@ -151,11 +151,11 @@ // OPTION AREA .options-zone { - @include flexRow; + @include deprecated.flexRow; position: relative; justify-content: flex-end; - gap: $s-8; - z-index: $z-index-10; + gap: deprecated.$s-8; + z-index: deprecated.$z-index-10; } .view-options { @@ -167,9 +167,9 @@ .fullscreen-btn { @extend .button-tertiary; - @include flexCenter; - height: $s-32; - width: $s-28; + @include deprecated.flexCenter; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -178,16 +178,16 @@ .share-btn { @extend .button-primary; - height: $s-32; - min-width: $s-72; - margin-left: $s-4; + height: deprecated.$s-32; + min-width: deprecated.$s-72; + margin-left: deprecated.$s-4; } .edit-btn { @extend .button-tertiary; - @include flexCenter; - height: $s-32; - width: $s-28; + @include deprecated.flexCenter; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -196,22 +196,22 @@ .go-log-btn { @extend .button-tertiary; - @include bodySmallTypography; - height: $s-32; - padding: 0 $s-8; - border-radius: $br-8; + @include deprecated.bodySmallTypography; + height: deprecated.$s-32; + padding: 0 deprecated.$s-8; + border-radius: deprecated.$br-8; color: var(--button-tertiary-foreground-color-rest); } // ZOOM WIDGET .zoom-widget { - @include buttonStyle; - @include flexCenter; - height: $s-28; - min-width: $s-64; - border-radius: $br-8; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; + height: deprecated.$s-28; + min-width: deprecated.$s-64; + border-radius: deprecated.$br-8; .label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--button-tertiary-foreground-color-rest); } @@ -229,15 +229,15 @@ .dropdown { @extend .menu-dropdown; - right: $s-2; - top: calc($s-2 + $s-48); - width: $s-272; + right: deprecated.$s-2; + top: calc(deprecated.$s-2 + deprecated.$s-48); + width: deprecated.$s-272; } .basic-zoom-bar { display: flex; justify-content: space-between; - padding: $s-6; + padding: deprecated.$s-6; cursor: auto; } @@ -247,13 +247,13 @@ .zoom-btn { @extend .button-tertiary; - height: $s-28; - width: $s-28; - border-radius: $br-8; + height: deprecated.$s-28; + width: deprecated.$s-28; + border-radius: deprecated.$br-8; .zoom-icon { - @include flexCenter; - width: $s-24; - height: $s-32; + @include deprecated.flexCenter; + width: deprecated.$s-24; + height: deprecated.$s-32; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -267,19 +267,19 @@ } .zoom-text { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - min-width: $s-64; + min-width: deprecated.$s-64; padding: 0; - margin: 0 $s-2; + margin: 0 deprecated.$s-2; color: var(--modal-title-foreground-color); } .reset-btn { @extend .button-tertiary; color: var(--button-tertiary-foreground-color-hover); - height: $s-28; - border-radius: $br-8; + height: deprecated.$s-28; + border-radius: deprecated.$br-8; } .zoom-option { @@ -305,13 +305,13 @@ content: " "; position: absolute; width: 100%; - height: $s-48; + height: deprecated.$s-48; left: 0; - top: $s-48; + top: deprecated.$s-48; } [data-fullscreen="true"] .viewer-header { - transform: translateY(-$s-48); + transform: translateY(-#{deprecated.$s-48}); } [data-force-visible="true"] .viewer-header, diff --git a/frontend/src/app/main/ui/viewer/inspect.scss b/frontend/src/app/main/ui/viewer/inspect.scss index 340003ce92..2752ffe4b3 100644 --- a/frontend/src/app/main/ui/viewer/inspect.scss +++ b/frontend/src/app/main/ui/viewer/inspect.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; -$width-settings-bar: $s-276; -$width-settings-bar-max: $s-500; +$width-settings-bar: deprecated.$s-276; +$width-settings-bar-max: deprecated.$s-500; .inspect-svg-wrapper { - @include flexCenter; + @include deprecated.flexCenter; position: relative; flex-direction: column; flex: 1; @@ -35,7 +35,7 @@ $width-settings-bar-max: $s-500; width: $width-settings-bar; background-color: var(--panel-background-color); - border-top: $s-1 solid var(--search-bar-input-border-color); + border-top: deprecated.$s-1 solid var(--search-bar-input-border-color); } .not-expand { @@ -49,8 +49,8 @@ $width-settings-bar-max: $s-500; .resize-area { position: absolute; left: 0; - width: $s-8; + width: deprecated.$s-8; height: 100%; - z-index: $z-index-10; + z-index: deprecated.$z-index-10; cursor: ew-resize; } diff --git a/frontend/src/app/main/ui/viewer/interactions.scss b/frontend/src/app/main/ui/viewer/interactions.scss index 3cd9751b47..8e7d03cab1 100644 --- a/frontend/src/app/main/ui/viewer/interactions.scss +++ b/frontend/src/app/main/ui/viewer/interactions.scss @@ -4,22 +4,22 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .view-options { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; position: relative; - gap: $s-4; - height: $s-32; - border-radius: $br-8; + gap: deprecated.$s-4; + height: deprecated.$s-32; + border-radius: deprecated.$br-8; background-color: var(--input-background-color); - padding: $s-8; + padding: deprecated.$s-8; cursor: pointer; } .dropdown-title { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; flex-grow: 1; color: var(--input-foreground-color-active); } @@ -31,21 +31,21 @@ .dropdown { @extend .menu-dropdown; - right: $s-2; - top: calc($s-2 + $s-48); - width: $s-272; - padding: $s-6; - max-height: calc(100vh - 3 * ($s-2 + $s-48)); + right: deprecated.$s-2; + top: calc(deprecated.$s-2 + deprecated.$s-48); + width: deprecated.$s-272; + padding: deprecated.$s-6; + max-height: calc(100vh - 3 * (deprecated.$s-2 + deprecated.$s-48)); overflow: auto; } .dropdown-element { @extend .dropdown-element-base; - min-height: $s-32; + min-height: deprecated.$s-32; .icon { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - width: $s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -67,9 +67,9 @@ .icon, .icon-dropdown { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - width: $s-16; + width: deprecated.$s-16; svg { @extend .button-icon-small; stroke: var(--icon-foreground); diff --git a/frontend/src/app/main/ui/viewer/login.scss b/frontend/src/app/main/ui/viewer/login.scss index 614bfa701d..f107742588 100644 --- a/frontend/src/app/main/ui/viewer/login.scss +++ b/frontend/src/app/main/ui/viewer/login.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,15 +12,15 @@ .modal-container { @extend .modal-container-base; - width: $s-368; + width: deprecated.$s-368; } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } @@ -29,10 +29,10 @@ } .modal-content { - @include flexColumn; - @include bodySmallTypography; - gap: $s-24; - max-height: $s-400; + @include deprecated.flexColumn; + @include deprecated.bodySmallTypography; + gap: deprecated.$s-24; + max-height: deprecated.$s-400; overflow: hidden auto; form { @@ -56,19 +56,19 @@ .link-entry { display: flex; flex-direction: column; - gap: $s-12; + gap: deprecated.$s-12; span { text-align: center; - font-size: $fs-14; + font-size: deprecated.$fs-14; color: var(--modal-text-foreground-color); - margin-top: $s-12; + margin-top: deprecated.$s-12; } a { @extend .button-secondary; - height: $s-40; + height: deprecated.$s-40; text-transform: uppercase; - font-size: $fs-11; + font-size: deprecated.$fs-11; } } diff --git a/frontend/src/app/main/ui/viewer/share_link.scss b/frontend/src/app/main/ui/viewer/share_link.scss index a883d1355e..2c8bcc60b1 100644 --- a/frontend/src/app/main/ui/viewer/share_link.scss +++ b/frontend/src/app/main/ui/viewer/share_link.scss @@ -4,15 +4,15 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .share-modal { display: block; position: absolute; - top: $s-52; - right: $s-12; - left: calc(100vw - $s-512); - z-index: $z-index-modal; + top: deprecated.$s-52; + right: deprecated.$s-12; + left: calc(100vw - deprecated.$s-512); + z-index: deprecated.$z-index-modal; } .share-link-dialog { @@ -21,11 +21,11 @@ } .share-link-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .share-link-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } @@ -34,18 +34,18 @@ } .modal-content { - @include bodySmallTypography; - @include flexColumn; - gap: $s-24; + @include deprecated.bodySmallTypography; + @include deprecated.flexColumn; + gap: deprecated.$s-24; } .share-link-section { - @include flexColumn; - gap: $s-8; + @include deprecated.flexColumn; + gap: deprecated.$s-8; } .hint-wrapper { - @include flexRow; + @include deprecated.flexRow; } .hint { @@ -54,32 +54,32 @@ } .custon-input-wrapper { - @include flexRow; - border-radius: $br-8; - height: $s-32; + @include deprecated.flexRow; + border-radius: deprecated.$br-8; + height: deprecated.$s-32; width: 100%; background-color: var(--input-background-color); } .input-text { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--input-foreground-color-active); - padding-left: $s-8; + padding-left: deprecated.$s-8; margin: 0; flex-grow: 1; &:focus { outline: none; - border: $s-1 solid var(--input-border-color-active); + border: deprecated.$s-1 solid var(--input-border-color-active); } } .copy-button { @extend .button-secondary; - @include flexRow; - gap: $s-8; - height: $s-32; - width: $s-28; + @include deprecated.flexRow; + gap: deprecated.$s-8; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; stroke: var(--icon-foreground-hover); @@ -87,13 +87,13 @@ } .description { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--modal-text-foreground-color); - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .actions { - @include flexRow; + @include deprecated.flexRow; justify-content: flex-end; } @@ -110,23 +110,23 @@ } .permissions-section { - @include flexColumn; - gap: $s-8; + @include deprecated.flexColumn; + gap: deprecated.$s-8; } .manage-permissions { - @include buttonStyle; - @include uppercaseTitleTipography; + @include deprecated.buttonStyle; + @include deprecated.uppercaseTitleTipography; color: var(--menu-foreground-color-rest); - height: $s-32; + height: deprecated.$s-32; display: flex; align-items: center; padding: 0; } .icon { - @include flexCenter; - margin-right: $s-6; + @include deprecated.flexCenter; + margin-right: deprecated.$s-6; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -144,7 +144,7 @@ } .view-mode { - max-height: $s-216; + max-height: deprecated.$s-216; overflow: hidden auto; scrollbar-gutter: stable; } @@ -154,8 +154,8 @@ display: flex; align-items: center; justify-content: flex-start; - width: $s-136; - height: $s-32; + width: deprecated.$s-136; + height: deprecated.$s-32; } .items { @@ -163,10 +163,10 @@ color: var(--input-foreground-color-active); } .select-all-row { - @include flexRow; + @include deprecated.flexRow; justify-content: space-between; - height: $s-32; - border-bottom: $s-1 solid var(--input-border-color-disabled); + height: deprecated.$s-32; + border-bottom: deprecated.$s-1 solid var(--input-border-color-disabled); } .select-all-label { color: var(--input-foreground-color-active); @@ -174,7 +174,7 @@ .pages-selection { margin: 0; li { - border-bottom: $s-1 solid var(--input-border-color-disabled); + border-bottom: deprecated.$s-1 solid var(--input-border-color-disabled); } li:last-child { border-bottom: none; @@ -182,17 +182,17 @@ } .count-pages, .current-tag { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--input-foreground-color); } .checkbox-wrapper { @extend .input-checkbox; - height: $s-32; + height: deprecated.$s-32; padding: 0; span.checked { background-color: var(--input-checkbox-background-color-active); - border: $s-1 solid var(--input-checkbox-background-color-active); + border: deprecated.$s-1 solid var(--input-checkbox-background-color-active); svg { @extend .button-icon-small; stroke: var(--input-checkbox-foreground-color-active); diff --git a/frontend/src/app/main/ui/viewer/thumbnails.scss b/frontend/src/app/main/ui/viewer/thumbnails.scss index c4de6c4153..c0735ddce1 100644 --- a/frontend/src/app/main/ui/viewer/thumbnails.scss +++ b/frontend/src/app/main/ui/viewer/thumbnails.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .viewer-thumbnails { background-color: var(--viewer-background-color); @@ -13,7 +13,7 @@ overflow: hidden; display: flex; flex-direction: column; - z-index: $z-index-10; + z-index: deprecated.$z-index-10; } .expanded { @@ -28,25 +28,25 @@ display: flex; justify-content: space-between; align-items: center; - height: $s-32; - margin: $s-24 $s-24 0 $s-24; + height: deprecated.$s-32; + margin: deprecated.$s-24 deprecated.$s-24 0 deprecated.$s-24; } .counter { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--viewer-thumbnails-control-foreground-color); } .actions { - @include flexRow; - width: $s-60; + @include deprecated.flexRow; + width: deprecated.$s-60; } .expand-btn, .close-btn { @extend .button-tertiary; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; } @@ -58,7 +58,7 @@ .thumbnails-content { display: grid; - grid-template-columns: $s-40 auto $s-40; + grid-template-columns: deprecated.$s-40 auto deprecated.$s-40; grid-template-rows: auto; } @@ -73,13 +73,13 @@ .right-scroll-handler, .left-scroll-handler { @extend .button-tertiary; - @include flexCenter; + @include deprecated.flexCenter; grid-column: 3 / span 1; grid-row: 1 / span 1; - width: $s-32; - height: $s-60; + width: deprecated.$s-32; + height: deprecated.$s-60; margin: auto 0; - z-index: $z-index-10; + z-index: deprecated.$z-index-10; opacity: 0; &:hover { opacity: 1; @@ -112,18 +112,18 @@ } .thumbnail-item { - @include buttonStyle; + @include deprecated.buttonStyle; display: flex; flex-direction: column; - padding: $s-16; + padding: deprecated.$s-16; } .thumbnail-preview { - @include flexCenter; - width: $s-132; - min-height: $s-132; - height: $s-132; - padding: $s-4; + @include deprecated.flexCenter; + width: deprecated.$s-132; + min-height: deprecated.$s-132; + height: deprecated.$s-132; + padding: deprecated.$s-4; svg { width: 100%; @@ -132,21 +132,21 @@ &.selected { background-color: var(--viewer-thumbnail-background-color-selected); - border-radius: $br-8; + border-radius: deprecated.$br-8; } &:hover { - border: $s-1 solid var(--viewer-thumbnail-border-color); - border-radius: $br-8; + border: deprecated.$s-1 solid var(--viewer-thumbnail-border-color); + border-radius: deprecated.$br-8; } } .thumbnail-info { - @include bodySmallTypography; - @include textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; text-align: center; color: var(--viewer-thumbnails-control-foreground-color); - padding: $s-8 0; + padding: deprecated.$s-8 0; width: 100%; - max-width: $s-132; + max-width: deprecated.$s-132; } diff --git a/frontend/src/app/main/ui/workspace.scss b/frontend/src/app/main/ui/workspace.scss index a1c7cec47b..d6c21429dd 100644 --- a/frontend/src/app/main/ui/workspace.scss +++ b/frontend/src/app/main/ui/workspace.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .workspace { @extend .new-scrollbar; @@ -33,18 +33,18 @@ .history-debug-overlay { bottom: 0; - max-height: $s-500; - width: $s-500; + max-height: deprecated.$s-500; + width: deprecated.$s-500; overflow-y: auto; position: absolute; - z-index: $z-index-modal; + z-index: deprecated.$z-index-modal; } .workspace-viewport { overflow: hidden; transition: none; display: grid; - grid-template-rows: $s-20 1fr; - grid-template-columns: $s-20 1fr; + grid-template-rows: deprecated.$s-20 1fr; + grid-template-columns: deprecated.$s-20 1fr; flex: 1; } diff --git a/frontend/src/app/main/ui/workspace/color_palette.scss b/frontend/src/app/main/ui/workspace/color_palette.scss index 39cd4d0fe2..7a4cb7c09b 100644 --- a/frontend/src/app/main/ui/workspace/color_palette.scss +++ b/frontend/src/app/main/ui/workspace/color_palette.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .color-palette { height: 100%; @@ -13,13 +13,13 @@ .left-arrow, .right-arrow { - @include buttonStyle; - @include flexCenter; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; position: relative; height: 100%; - width: $s-24; + width: deprecated.$s-24; padding: 0; - z-index: $z-index-5; + z-index: deprecated.$z-index-5; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -27,11 +27,11 @@ &::after { content: ""; position: absolute; - z-index: $z-index-1; + z-index: deprecated.$z-index-1; bottom: 0; - left: calc(-1 * $s-80); + left: calc(-1 * deprecated.$s-80); height: 100%; - width: $s-80; + width: deprecated.$s-80; background-image: linear-gradient( to left, var(--palette-button-shadow-initial) 0%, @@ -55,7 +55,7 @@ } .left-arrow { &::after { - left: $s-24; + left: deprecated.$s-24; background-image: linear-gradient( to right, var(--palette-button-shadow-initial) 0%, @@ -82,7 +82,7 @@ display: grid; grid-auto-flow: column; grid-auto-columns: var(--color-cell-width); - gap: $s-8; + gap: deprecated.$s-8; } .color-cell { @@ -98,12 +98,12 @@ height: 100%; &.no-text { - @include flexCenter; - width: $s-32; + @include deprecated.flexCenter; + width: deprecated.$s-32; } } .color-palette-empty { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--palette-text-color); } diff --git a/frontend/src/app/main/ui/workspace/color_palette_ctx_menu.scss b/frontend/src/app/main/ui/workspace/color_palette_ctx_menu.scss index 920d6031ba..a3703f8588 100644 --- a/frontend/src/app/main/ui/workspace/color_palette_ctx_menu.scss +++ b/frontend/src/app/main/ui/workspace/color_palette_ctx_menu.scss @@ -4,17 +4,17 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .palette-menu { position: absolute; left: auto; bottom: var(--height); - max-width: $s-480; - padding: $s-4; - margin: 0 0 $s-4 0; - z-index: $z-index-4; - border-radius: $br-10; + max-width: deprecated.$s-480; + padding: deprecated.$s-4; + margin: 0 0 deprecated.$s-4 0; + z-index: deprecated.$z-index-4; + border-radius: deprecated.$br-10; background-color: var(--context-menu-background-color); .palette-library, @@ -24,36 +24,36 @@ display: flex; align-items: flex-start; width: 100%; - padding: $s-8; - border-radius: $br-8; - margin-bottom: $s-4; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; + margin-bottom: deprecated.$s-4; &:last-child { margin-bottom: 0; } .option-wrapper { width: 100%; .library-name { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--context-menu-foreground-color); display: grid; - grid-template-columns: 1fr $s-24; + grid-template-columns: 1fr deprecated.$s-24; .lib-name-wrapper { display: flex; - max-width: $s-400; + max-width: deprecated.$s-400; .lib-name { - @include textEllipsis; - max-width: $s-380; + @include deprecated.textEllipsis; + max-width: deprecated.$s-380; } .lib-num { - margin-left: $s-4; + margin-left: deprecated.$s-4; } } .icon-wrapper { - margin-left: $s-4; - @include flexCenter; + margin-left: deprecated.$s-4; + @include deprecated.flexCenter; svg { @extend .button-icon-small; - @include flexCenter; + @include deprecated.flexCenter; stroke: var(--icon-foreground); } } @@ -61,8 +61,8 @@ .color-sample { display: flex; flex-direction: row; - gap: $s-8; - margin-top: $s-4; + gap: deprecated.$s-8; + margin-top: deprecated.$s-4; } } @@ -71,9 +71,9 @@ .option-wrapper .library-name { color: var(--context-menu-foreground-color-selected); .icon-wrapper { - @include flexCenter; + @include deprecated.flexCenter; svg { - @include flexCenter; + @include deprecated.flexCenter; @extend .button-icon-small; stroke: var(--context-menu-foreground-color-selected); } diff --git a/frontend/src/app/main/ui/workspace/colorpicker.cljs b/frontend/src/app/main/ui/workspace/colorpicker.cljs index dec18b21de..c0842670ad 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker.cljs +++ b/frontend/src/app/main/ui/workspace/colorpicker.cljs @@ -13,6 +13,7 @@ [app.common.geom.point :as gpt] [app.common.types.color :as cc] [app.common.types.fills :as types.fills] + [app.common.types.tokens-lib :as ctob] [app.config :as cfg] [app.main.data.event :as-alias ev] [app.main.data.modal :as modal] @@ -26,12 +27,14 @@ [app.main.store :as st] [app.main.ui.components.file-uploader :refer [file-uploader]] [app.main.ui.components.numeric-input :refer [numeric-input*]] + [app.main.ui.components.radio-buttons :refer [radio-buttons radio-button]] [app.main.ui.components.select :refer [select]] [app.main.ui.ds.foundations.assets.icon :as i] [app.main.ui.ds.layout.tab-switcher :refer [tab-switcher*]] [app.main.ui.hooks :as hooks] [app.main.ui.icons :as deprecated-icon] [app.main.ui.workspace.colorpicker.color-inputs :refer [color-inputs]] + [app.main.ui.workspace.colorpicker.color-tokens :refer [token-section*]] [app.main.ui.workspace.colorpicker.gradients :refer [gradients*]] [app.main.ui.workspace.colorpicker.harmony :refer [harmony-selector]] [app.main.ui.workspace.colorpicker.hsva :refer [hsva-selector]] @@ -44,7 +47,8 @@ [cuerdas.core :as str] [okulary.core :as l] [potok.v2.core :as ptk] - [rumext.v2 :as mf])) + [rumext.v2 :as mf] + [rumext.v2.util :as mfu])) ;; --- Refs @@ -90,12 +94,20 @@ (dom/set-css-property! node "--saturation-grad-to" (format-hsl hsl-to))))) (mf/defc colorpicker - {::mf/props :obj} - [{:keys [data disable-gradient disable-opacity disable-image on-change on-accept]}] + [{:keys [data disable-gradient disable-opacity disable-image on-change on-accept origin combined-tokens color-origin on-token-change tab]}] (let [state (mf/deref refs/colorpicker) node-ref (mf/use-ref) should-update? (mf/use-var true) + token-color (contains? cfg/flags :token-color) + color-style* (mf/use-state (d/nilv tab :direct-color)) + color-style (deref color-style*) + toggle-token-color + (mf/use-fn + (mf/deps color-style) + (fn [] + (let [new-style (if (= :direct-color color-style) :token-color :direct-color)] + (reset! color-style* new-style)))) ;; TODO: I think we need to put all this picking state under ;; the same object for avoid creating adhoc refs for each @@ -337,10 +349,6 @@ render-wasm? (features/use-feature "render-wasm/v1") - cap-stops? - (or ^boolean render-wasm? - ^boolean (contains? cfg/flags :frontend-binary-fills)) - tabs (mf/with-memo [] [{:aria-label (tr "workspace.libraries.colors.rgba") @@ -351,7 +359,9 @@ :id "harmony"} {:aria-label "HSVA" :icon i/hsva - :id "hsva"}])] + :id "hsva"}]) + + show-tokens? (contains? #{:fill :stroke-color :color-selection} color-origin)] ;; Initialize colorpicker state (mf/with-effect [] @@ -382,8 +392,10 @@ :ref node-ref :style {:touch-action "none"}} [:div {:class (stl/css :top-actions)} + [:div {:class (stl/css :top-actions-right)} - (when (= :gradient selected-mode) + (when (and (= color-style :direct-color) + (= :gradient selected-mode)) [:div {:class (stl/css :opacity-input-wrapper)} [:span {:class (stl/css :icon-text)} "%"] [:> numeric-input* @@ -394,118 +406,143 @@ :min 0 :max 100}]]) - (when (or (not disable-gradient) (not disable-image)) + (when (and (= color-style :direct-color) + (or (not disable-gradient) (not disable-image))) [:div {:class (stl/css :select)} [:& select {:default-value selected-mode :options options - :on-change handle-change-mode}]])] + :on-change handle-change-mode}]]) - (when (not= selected-mode :image) + (when (and (= origin :sidebar) show-tokens? token-color) + [:& radio-buttons {:selected color-style + :on-change toggle-token-color + :name "color-style"} + [:& radio-button {:icon deprecated-icon/swatches + :value :direct-color + :title (tr "labels.color") + :id "opt-color"}] + [:& radio-button {:icon deprecated-icon/tokens + :value :token-color + :title (tr "workspace.colorpicker.color-tokens") + :id "opt-token-color"}]])] + + (when (and (not= selected-mode :image) + (= color-style :direct-color)) [:button {:class (stl/css-case :picker-btn true :selected picking-color?) :on-click handle-click-picker} - deprecated-icon/picker])] + deprecated-icon/picker]) - (when (= selected-mode :gradient) - [:> gradients* - {:type (:type state) - :stops (if cap-stops? (vec (take types.fills/MAX-GRADIENT-STOPS (:stops state))) (:stops state)) - :editing-stop (:editing-stop state) - :on-stop-edit-start handle-stop-edit-start - :on-stop-edit-finish handle-stop-edit-finish - :on-select-stop handle-change-gradient-selected-stop - :on-change-type handle-change-gradient-type - :on-change-stop handle-gradient-change-stop - :on-add-stop-auto handle-gradient-add-stop-auto - :on-add-stop-preview handle-gradient-add-stop-preview - :on-remove-stop handle-gradient-remove-stop - :on-rotate-stops handle-rotate-stops - :on-reverse-stops handle-reverse-stops - :on-reorder-stops handle-reorder-stops}]) - - (if (= selected-mode :image) - (let [uri (cfg/resolve-file-media (:image current-color)) - keep-aspect-ratio? (-> current-color :image :keep-aspect-ratio)] - [:div {:class (stl/css :select-image)} - [:div {:class (stl/css :content)} - (when (:image current-color) - [:img {:src uri}])] - - (when (some? (:image current-color)) - [:div {:class (stl/css :checkbox-option)} - [:label {:for "keep-aspect-ratio" - :class (stl/css-case :global/checked keep-aspect-ratio?)} - [:span {:class (stl/css-case :global/checked keep-aspect-ratio?)} - (when keep-aspect-ratio? - deprecated-icon/status-tick)] - (tr "media.keep-aspect-ratio") - [:input {:type "checkbox" - :id "keep-aspect-ratio" - :checked keep-aspect-ratio? - :on-change handle-change-keep-aspect-ratio}]]]) - [:button - {:class (stl/css :choose-image) - :title (tr "media.choose-image") - :aria-label (tr "media.choose-image") - :on-click on-fill-image-click} - (tr "media.choose-image") - [:& file-uploader - {:input-id "fill-image-upload" - :accept "image/jpeg,image/png" - :multi false - :ref fill-image-ref - :on-selected on-fill-image-selected}]]]) + (when (= color-style :token-color) + [:div {:class (stl/css :token-color-title)} + (tr "workspace.colorpicker.color-tokens")])] + (if (= color-style :direct-color) [:* - [:div {:class (stl/css :colorpicker-tabs)} - [:> tab-switcher* {:tabs tabs - :selected active-color-tab - :on-change on-change-tab} - (if picking-color? - [:div {:class (stl/css :picker-detail-wrapper)} - [:div {:class (stl/css :center-circle)}] - [:canvas#picker-detail {:class (stl/css :picker-detail) :width 256 :height 140}]] + (when (= selected-mode :gradient) + [:> gradients* + {:type (:type state) + :stops (if render-wasm? (vec (take types.fills/MAX-GRADIENT-STOPS (:stops state))) (:stops state)) + :editing-stop (:editing-stop state) + :on-stop-edit-start handle-stop-edit-start + :on-stop-edit-finish handle-stop-edit-finish + :on-select-stop handle-change-gradient-selected-stop + :on-change-type handle-change-gradient-type + :on-change-stop handle-gradient-change-stop + :on-add-stop-auto handle-gradient-add-stop-auto + :on-add-stop-preview handle-gradient-add-stop-preview + :on-remove-stop handle-gradient-remove-stop + :on-rotate-stops handle-rotate-stops + :on-reverse-stops handle-reverse-stops + :on-reorder-stops handle-reorder-stops}]) + + (if (= selected-mode :image) + (let [uri (cfg/resolve-file-media (:image current-color)) + keep-aspect-ratio? (-> current-color :image :keep-aspect-ratio)] + [:div {:class (stl/css :select-image)} + [:div {:class (stl/css :content)} + (when (:image current-color) + [:img {:src uri}])] + + (when (some? (:image current-color)) + [:div {:class (stl/css :checkbox-option)} + [:label {:for "keep-aspect-ratio" + :class (stl/css-case :global/checked keep-aspect-ratio?)} + [:span {:class (stl/css-case :global/checked keep-aspect-ratio?)} + (when keep-aspect-ratio? + deprecated-icon/status-tick)] + (tr "media.keep-aspect-ratio") + [:input {:type "checkbox" + :id "keep-aspect-ratio" + :checked keep-aspect-ratio? + :on-change handle-change-keep-aspect-ratio}]]]) + [:button + {:class (stl/css :choose-image) + :title (tr "media.choose-image") + :aria-label (tr "media.choose-image") + :on-click on-fill-image-click} + (tr "media.choose-image") + [:& file-uploader + {:input-id "fill-image-upload" + :accept "image/jpeg,image/png" + :multi false + :ref fill-image-ref + :on-selected on-fill-image-selected}]]]) + + [:* + [:div {:class (stl/css :colorpicker-tabs)} + [:> tab-switcher* {:tabs tabs + :selected active-color-tab + :on-change on-change-tab} + (if picking-color? + [:div {:class (stl/css :picker-detail-wrapper)} + [:div {:class (stl/css :center-circle)}] + [:canvas#picker-detail {:class (stl/css :picker-detail) :width 256 :height 140}]] - (case active-color-tab - "ramp" - [:> ramp-selector* - {:color current-color - :disable-opacity disable-opacity - :on-change handle-change-color - :on-start-drag on-start-drag - :on-finish-drag on-finish-drag}] + (case active-color-tab + "ramp" + [:> ramp-selector* + {:color current-color + :disable-opacity disable-opacity + :on-change handle-change-color + :on-start-drag on-start-drag + :on-finish-drag on-finish-drag}] - "harmony" - [:& harmony-selector - {:color current-color - :disable-opacity disable-opacity - :on-change handle-change-color - :on-start-drag on-start-drag}] + "harmony" + [:& harmony-selector + {:color current-color + :disable-opacity disable-opacity + :on-change handle-change-color + :on-start-drag on-start-drag}] - "hsva" - [:& hsva-selector - {:color current-color - :disable-opacity disable-opacity - :on-change handle-change-color - :on-start-drag on-start-drag - :on-finish-drag on-finish-drag}]))]] + "hsva" + [:& hsva-selector + {:color current-color + :disable-opacity disable-opacity + :on-change handle-change-color + :on-start-drag on-start-drag + :on-finish-drag on-finish-drag}]))]] - [:& color-inputs - {:type type - :disable-opacity disable-opacity - :color current-color - :on-change handle-change-color}] + [:& color-inputs + {:type type + :disable-opacity disable-opacity + :color current-color + :on-change handle-change-color}] - [:& libraries - {:state state - :current-color current-color - :disable-gradient disable-gradient - :disable-opacity disable-opacity - :disable-image disable-image - :on-select-color on-select-library-color - :on-add-library-color on-add-library-color}]])] + [:& libraries + {:state state + :current-color current-color + :disable-gradient disable-gradient + :disable-opacity disable-opacity + :disable-image disable-image + :on-select-color on-select-library-color + :on-add-library-color on-add-library-color}]])] + + [:> token-section* {:combined-tokens combined-tokens + :on-token-change on-token-change + :color-origin color-origin}])] (when (fn? on-accept) [:div {:class (stl/css :actions)} [:button {:class (stl/css-case @@ -561,6 +598,121 @@ :top top-offset :maxHeight max-height-top})))) +(defn- group-sets + "Groups sets by their parent path (everything before the last '/') if present. + The set name is always the last part of the path. + + Input: + [{:set \"brand/subgroup/one\" :tokens [{:name \"background\"}]} + {:set \"brand/subgroup/two\" :tokens [{:name \"foreground\"}]} + {:set \"primitives\" :tokens [{:name \"blue-100\"}]}] + + Output: + [{:group \"brand/subgroup\" + :sets [\"one\" \"two\"] + :tokens [\"background\" \"foreground\"]} + {:group nil + :sets [\"primitives\"] + :tokens [\"blue-100\"]}]" + + [sets] + (->> sets + (group-by (fn [{:keys [set]}] + (when (str/includes? set "/") + (str/join "/" (butlast (str/split set #"/")))))) + (map (fn [[group grouped-sets]] + (if group + {:group group + :sets (map (fn [{:keys [id set]}] + {:id id + :name (last (str/split set #"/"))}) + grouped-sets) + :tokens (->> grouped-sets + (mapcat :tokens) + (map :name) + distinct)} + (map (fn [{:keys [id set tokens]}] + {:group nil + :sets [{:id id :name set}] + :tokens (map :name tokens)}) + grouped-sets)))) + flatten)) + +(defn- combine-groups-with-resolved + "Replaces token names in grouped sets with their full resolved token objects. + + Input: + - groups: [{:group \"brand\" + :sets [\"light\" \"dark\"] + :tokens [\"background\" \"foreground\"]} ...] + - resolved-tokens: [{:name \"background\" :type \"color\" :value \"{red-100}\" ...} ...] + + Output: + [{:group \"brand\" + :sets [\"light\" \"dark\"] + :tokens [{:name \"background\" :type \"color\" :value \"{red-100}\" ...} + {:name \"foreground\" :type \"color\" :value \"{green-100}\" ...}]}]" + + [groups resolved-tokens] + (let [token-map (into {} (map (juxt :name identity) resolved-tokens))] + (map (fn [{:keys [group sets tokens]}] + {:group group + :sets sets + :tokens (->> tokens + (map #(get token-map %)) + (remove #(or (nil? %) + (:errors %) + (nil? (:resolved-value %)))) + vec)}) + groups))) + +(defn- filter-non-empty-sets + "Removes sets that have no tokens. + + Input: + [{:set \"brand/light\" :tokens []} + {:set \"brand/dark\" :tokens [{:name \"background\"}]}] + + Output: + [{:set \"brand/dark\" :tokens [{:name \"background\"}]}]" + [sets] + (filter (fn [{:keys [tokens]}] + (some #(= (:type %) :color) tokens)) + sets)) + +(defn- add-tokens-to-sets + "Extracts set name and its tokens from raw set objects. + + Input: + A vector of set objects (raw domain type), each compatible with: + {:id ... :name \"brand/light\" :tokens {...}} + + Output: + A vector of simplified maps: + [{:set \"brand/light\" :tokens [{:name \"background\" ...} ...]}]" + [sets] + (map (fn [s] + {:set (ctob/get-name s) + :id (ctob/get-id s) + :tokens (vals (ctob/get-tokens- s))}) ;; TODO: this function should be moved to common.logic and refactored + sets)) + +(defn- filter-active-sets + "Filters sets to only include those whose :set value is in active-set-names. + + Input: + - sets: [{:set \"brand/light\" :tokens [...]}, + {:set \"brand/dark\" :tokens [...]}, + {:set \"primitivos\" :tokens [...]}, + ...] + - active-set-names: #{\"brand/light\" \"primitivos\"} + + Output: + [{:set \"brand/light\" :tokens [...]} + {:set \"primitivos\" :tokens [...]}]" + [sets active-set-names] + (filter #(contains? active-set-names (:set %)) sets)) + (mf/defc colorpicker-modal {::mf/register modal/components ::mf/register-as :colorpicker @@ -569,14 +721,22 @@ disable-gradient disable-opacity disable-image + active-tokens on-change + origin + color-origin + on-token-change on-close + tab on-accept]}] (let [vport (mf/deref viewport) dirty? (mf/use-var false) last-change (mf/use-var nil) position (d/nilv position :left) style (calculate-position vport position x y (some? (:gradient data))) + active-tokens (if (object? active-tokens) + (mfu/bean active-tokens) + active-tokens) on-change' (mf/use-fn @@ -587,7 +747,31 @@ (reset! last-change new-data) (if (fn? on-change) (on-change new-data) - (st/emit! (dc/update-colorpicker new-data))))))] + (st/emit! (dc/update-colorpicker new-data)))))) + + tokens-lib + (mf/deref refs/tokens-lib) + + active-sets-names + (mf/with-memo [tokens-lib] + (some-> tokens-lib + (ctob/get-active-themes-set-names))) + + active-tokens (if (delay? active-tokens) + @active-tokens + active-tokens) + + color-tokens (:color active-tokens) + + grouped-tokens-by-set + (mf/with-memo [tokens-lib active-sets-names color-tokens] + (some-> tokens-lib + (ctob/get-sets) + (add-tokens-to-sets) + (filter-active-sets active-sets-names) + (filter-non-empty-sets) + (group-sets) + (combine-groups-with-resolved color-tokens)))] (mf/with-effect [] (st/emit! (st/emit! (dsc/push-shortcuts ::colorpicker sc/shortcuts))) @@ -601,8 +785,13 @@ :style style} [:& colorpicker {:data data + :combined-tokens grouped-tokens-by-set :disable-gradient disable-gradient :disable-opacity disable-opacity :disable-image disable-image + :on-token-change on-token-change :on-change on-change' + :origin origin + :tab tab + :color-origin color-origin :on-accept on-accept}]])) diff --git a/frontend/src/app/main/ui/workspace/colorpicker.scss b/frontend/src/app/main/ui/workspace/colorpicker.scss index 033b06e4f5..1d7e303d41 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker.scss +++ b/frontend/src/app/main/ui/workspace/colorpicker.scss @@ -4,12 +4,16 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; -@import "../ds/_sizes.scss"; +@use "ds/typography.scss" as t; +@use "ds/spacing.scss"; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_utils.scss" as *; +@use "refactor/basic-rules.scss" as *; .colorpicker-tooltip { @extend .modal-background; - left: calc(10 * $s-140); + left: calc(10 * px2rem(140)); width: auto; padding: var(--sp-m); width: $sz-284; @@ -23,41 +27,41 @@ overflow: hidden; } -.colorpicker-tabs { - padding: 0 var(--sp-m); -} - .top-actions { display: flex; align-items: flex-start; flex-direction: row-reverse; justify-content: space-between; - height: $s-40; - padding: 0 var(--sp-m); + height: $sz-40; } .top-actions-right { display: flex; - gap: $s-8; + gap: var(--sp-s); } .opacity-input-wrapper { @extend .input-element; - @include bodySmallTypography; - width: $s-68; + @include t.use-typography("body-small"); + width: px2rem(68); } +// TODO: change to DS button component .picker-btn { - @include buttonStyle; - @include flexCenter; + display: flex; + justify-content: center; + align-items: center; + border: none; + background: none; + cursor: pointer; border-radius: $br-8; background-color: transparent; - border: $s-1 solid transparent; - height: $s-20; - width: $s-20; + border: $b-1 solid transparent; + height: var(--sp-xl); + width: var(--sp-xl); border-radius: $br-4; padding: 0; - margin-top: $s-4; + margin-top: var(--sp-xs); svg { @extend .button-icon; stroke: var(--button-tertiary-foreground-color-rest); @@ -76,7 +80,7 @@ } &:active { outline: none; - border: $s-1 solid transparent; + border: $b-1 solid transparent; svg { stroke: var(--button-tertiary-foreground-color-active); } @@ -91,17 +95,17 @@ .gradient-buttons { display: flex; align-items: center; - gap: $s-8; + gap: var(--sp-s); } .gradient-btn { @extend .button-tertiary; - height: $s-20; - width: $s-20; + height: var(--sp-xl); + width: var(--sp-xl); border-radius: $br-4; - border: $s-2 solid transparent; + border: $b-2 solid transparent; &:hover { - border: $s-2 solid var(--colorpicker-details-color-selected); + border: $b-2 solid var(--colorpicker-details-color-selected); } } @@ -109,7 +113,7 @@ background: linear-gradient(180deg, var(--color-foreground-secondary), transparent); &.selected { background: linear-gradient(to bottom, rgba(126, 255, 245, 1) 0%, rgba(126, 255, 245, 0.2) 100%); - border: $s-2 solid var(--colorpicker-details-color-selected); + border: $b-2 solid var(--colorpicker-details-color-selected); } } @@ -117,38 +121,40 @@ background: radial-gradient(transparent, var(--color-foreground-secondary)); &.selected { background: radial-gradient(rgba(126, 255, 245, 1) 0%, rgba(126, 255, 245, 0.2) 100%); - border: $s-2 solid var(--colorpicker-details-color-selected); + border: $b-2 solid var(--colorpicker-details-color-selected); } } .actions { display: flex; - gap: $s-4; + gap: var(--sp-xs); } .accept-color { - @include uppercaseTitleTipography; + @include t.use-typography("headline-small"); @extend .button-primary; width: 100%; - height: $s-32; - margin-top: $s-8; + height: var(--sp-xxxl); + margin-top: var(--sp-s); } .picker-detail-wrapper { - @include flexCenter; + display: flex; + justify-content: center; + align-items: center; position: relative; - margin: $s-12 0 $s-8 0; + margin: var(--sp-m) 0 var(--sp-s) 0; } .center-circle { - width: $s-24; - height: $s-24; - border: $s-2 solid var(--colorpicker-details-color); + width: var(--sp-xxl); + height: var(--sp-xxl); + border: $b-2 solid var(--colorpicker-details-color); border-radius: $br-circle; position: absolute; left: 50%; top: 50%; - transform: translate(calc(-1 * $s-12), calc(-1 * $s-12)); + transform: translate(calc(-1 * var(--sp-m)), calc(-1 * var(--sp-m))); } .picker-detail { @@ -157,11 +163,11 @@ } .select { - width: $s-116; + width: px2rem(116); } .select-image { - margin-top: $s-4; + margin-top: var(--sp-xs); } .content { @@ -170,10 +176,10 @@ justify-content: center; background-image: url("/images/colorpicker-no-image.png"); background-position: center; - background-size: auto $s-140; - height: $s-140; - margin-bottom: $s-6; - margin-right: $s-1; + background-size: auto px2rem(140); + height: px2rem(140); + margin-bottom: $sz-6; + margin-right: $sz-1; img { height: fit-content; width: fit-content; @@ -185,13 +191,21 @@ .choose-image { @extend .button-secondary; - @include uppercaseTitleTipography; + @include t.use-typography("headline-small"); width: 100%; - margin-top: $s-12; - height: $s-32; + margin-top: var(--sp-m); + height: var(--sp-xxxl); } .checkbox-option { @extend .input-checkbox; - margin: $s-16 0 0 0; + margin: var(--sp-l) 0 0 0; +} + +.token-color-title { + @include t.use-typography("title-small"); + color: var(--color-foreground-secondary); + display: flex; + align-items: center; + height: var(--sp-xxxl); } diff --git a/frontend/src/app/main/ui/workspace/colorpicker/color_inputs.scss b/frontend/src/app/main/ui/workspace/colorpicker/color_inputs.scss index 349da89a7d..6d653f34e3 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/color_inputs.scss +++ b/frontend/src/app/main/ui/workspace/colorpicker/color_inputs.scss @@ -4,37 +4,36 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .color-values { - @include flexColumn; - margin-top: $s-8; - padding: 0 var(--sp-m); + @include deprecated.flexColumn; + margin-top: deprecated.$s-8; &.disable-opacity { grid-template-columns: 3.5rem repeat(3, 1fr); } .colors-row { - @include flexRow; + @include deprecated.flexRow; .input-wrapper { @extend .input-element; - @include bodySmallTypography; - width: $s-84; + @include deprecated.bodySmallTypography; + width: deprecated.$s-84; display: flex; align-items: baseline; } } .hex-alpha-wrapper { - @include flexRow; + @include deprecated.flexRow; .input-wrapper { @extend .input-element; - @include bodySmallTypography; - width: $s-84; + @include deprecated.bodySmallTypography; + width: deprecated.$s-84; &.hex { - width: $s-172; + width: deprecated.$s-172; display: flex; align-items: baseline; - gap: $s-8; + gap: deprecated.$s-8; } } } diff --git a/frontend/src/app/main/ui/workspace/colorpicker/color_tokens.cljs b/frontend/src/app/main/ui/workspace/colorpicker/color_tokens.cljs new file mode 100644 index 0000000000..e9ae216a31 --- /dev/null +++ b/frontend/src/app/main/ui/workspace/colorpicker/color_tokens.cljs @@ -0,0 +1,314 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.workspace.colorpicker.color-tokens + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data :as d] + [app.common.data.macros :as dm] + [app.main.constants :refer [max-input-length]] + [app.main.data.common :as dcm] + [app.main.data.event :as-alias ev] + [app.main.data.modal :as modal] + [app.main.data.workspace.tokens.application :as dwta] + [app.main.data.workspace.tokens.library-edit :as dwtl] + [app.main.refs :as refs] + [app.main.store :as st] + [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] + [app.main.ui.ds.controls.input :refer [input*]] + [app.main.ui.ds.foundations.assets.icon :as i] + [app.main.ui.ds.tooltip :refer [tooltip*]] + [app.main.ui.ds.utilities.swatch :refer [swatch*]] + [app.util.dom :as dom] + [app.util.i18n :as i18n :refer [tr]] + [cuerdas.core :as str] + [potok.v2.core :as ptk] + [rumext.v2 :as mf])) + +(mf/defc token-empty-state* + {::mf/private true} + [] + [:div {:class (stl/css :color-token-empty-state)} + (tr "color-token.empty-state")]) + +(mf/defc list-item* + {::mf/private true} + [{:keys [token on-token-pill-click selected] :rest props}] + (let [on-click + (mf/use-fn + (mf/deps token on-token-pill-click) + (fn [event] + (on-token-pill-click event token))) + id-tooltip (mf/use-id) + resolved (:resolved-value token) + color-value (dwta/value->color resolved)] + [:> tooltip* {:id id-tooltip + :style {:width "100%"} + :content (:name token)} + [:button {:class (stl/css-case :color-token-item true + :color-token-selected selected) + :aria-labelledby id-tooltip + :on-click on-click} + [:> swatch* {:background color-value + :tooltip-content (tr "workspace.tokens.resolved-value" resolved) + :size "small"}] + [:div {:class (stl/css :token-name)} + (:name token)] + (when selected + [:> i/icon* {:icon-id i/tick + :size "s" + :class (stl/css :token-selected-icon)}])]])) + +(mf/defc grid-item* + {::mf/private true} + [{:keys [token on-token-pill-click selected] :rest props}] + (let [on-click + (mf/use-fn + (mf/deps token on-token-pill-click) + (fn [event] + (on-token-pill-click event token))) + resolved (:resolved-value token) + token-name (:name token) + color-value (dwta/value->color resolved)] + [:div {:class (stl/css-case :color-token-item-grid true + :color-token-selected-grid selected)} + [:> swatch* {:background color-value + :tooltip-content + (mf/html + [:* + [:div + [:span (dm/str (tr "workspace.tokens.token-name") ": ")] [:span {:class (stl/css :token-name)} token-name]] + [:div (tr "workspace.tokens.resolved-value" resolved)]]) + :on-click on-click + :size "medium"}]])) + +(defn group->paths + "Given a map with :group string (slash-separated), returns a set of vectors + representing the cumulative group hierarchy. + + Example: + {:group \"test/gracia\"} + => #{[\"test\"] [\"test\" \"gracia\"]}" + [m] + (let [parts (when-let [g (:group m)] + (str/split g #"/"))] + (if (seq parts) + (->> (range 1 (inc (count parts))) + (map (fn [i] (vec (take i parts)))) + set) + #{}))) + +(mf/defc set-section* + {::mf/private true} + [{:keys [collapsed toggle-sets-open group-or-set name color-origin on-token-change] :rest props}] + + (let [list-style* (mf/use-state :list) + list-style (deref list-style*) + toggle-list-style + (mf/use-fn + (mf/deps list-style) + (fn [] + (let [new-style (if (= :list list-style) :grid :list)] + (reset! list-style* new-style)))) + + toggle-set + (mf/use-fn + (mf/deps name toggle-sets-open) + (fn [] + (toggle-sets-open name))) + + objects (mf/deref refs/workspace-page-objects) + selected (mf/deref refs/selected-shapes) + + selected-shapes + (mf/with-memo [selected objects] + (into [] (keep (d/getf objects)) selected)) + + first-shape (first selected-shapes) + applied-tokens (:applied-tokens first-shape) + has-color-tokens? (get applied-tokens :fill) + has-stroke-tokens? (get applied-tokens :stroke-color) + + on-token-pill-click + (mf/use-fn + (mf/deps selected-shapes) + (fn [event token] + (dom/stop-propagation event) + (when (seq selected-shapes) + (on-token-change event token)))) + + create-token-on-set + (mf/use-fn + (mf/deps group-or-set) + (fn [_] + (let [;; We want to create a token on the first set + ;; if there are many in this group + path-set (group->paths group-or-set) + id (:id (first (:sets group-or-set)))] + (st/emit! (dcm/go-to-workspace :layout :tokens) + (when path-set + (ptk/data-event :expand-token-sets {:paths path-set})) + (dwtl/set-selected-token-set-id id) + (dwtl/set-token-type-section-open :color true) + (let [{:keys [modal title]} (get dwta/token-properties :color) + window-size (dom/get-window-size) + left-sidebar (dom/get-element "left-sidebar-aside") + x-size (dom/get-data left-sidebar "size") + modal-height 392 + x (- (int x-size) 30) + y (- (/ (:height window-size) 2) (/ modal-height 2))] + (modal/show (:key modal) + {:x x + :y y + :position :right + :fields (:fields modal) + :title title + :action "create" + :token-type :color})))))) + + icon-id (if collapsed i/arrow-right i/arrow-down)] + + [:article {:class (stl/css :color-token-set)} + [:header {:class (stl/css :set-title-bar)} + [:button {:class (stl/css :set-title-btn) + :aria-controls (str "set-panel-" (d/name name)) + :aria-expanded (not collapsed) + :aria-label (tr "inspect.tabs.styles.panel.toggle-style" name) + :on-click toggle-set} + [:> i/icon* {:icon-id icon-id + :size "s" + :class (stl/css :set-title-icon)}] + [:span {:class (stl/css :set-title)} name]] + [:div {:class (stl/css-case :set-title-actions true + :set-title-action-hidden collapsed)} + [:> icon-button* {:on-click toggle-list-style + :variant "action" + :aria-label (if (= :list list-style) + (tr "workspace.assets.grid-view") + (tr "workspace.assets.list-view")) + :icon (if (= :list list-style) + i/flex-grid + i/view-as-list)}] + [:> icon-button* {:on-click create-token-on-set + :variant "action" + :aria-label (tr "workspace.tokens.add-token" "color") + :icon i/add}]]] + + (when (not collapsed) + [:div {:id (str "set-panel-" (d/name name)) + :class (stl/css-case :color-token-list true + :list-view (= list-style :list) + :grid-view (= list-style :grid))} + + (for [token (:tokens group-or-set)] + (let [selected? (if (= color-origin :fill) + (= has-color-tokens? (:name token)) + (= has-stroke-tokens? (:name token)))] + (if (= :grid list-style) + [:> grid-item* {:key (str "token-grid-" (:id token)) + :on-token-pill-click on-token-pill-click + :selected selected? + :token token}] + [:> list-item* {:key (str "token-list-" (:id token)) + :on-token-pill-click on-token-pill-click + :selected selected? + :token token}])))])])) + +(defn- label-group-or-set [{:keys [group sets]}] + (if group + (str group " (" (str/join ", " (map :name sets)) ")") + (:name (first sets)))) + +(defn- filter-combined-tokens + "Filters the combined-tokens structure by token name. + Removes sets or groups if they end up with no tokens. + + Input: + [{:group \"brand\", :sets [\"light\" \"dark\"], :tokens [{:name \"background\"} {:name \"foreground\"}]} + {:group nil, :sets [\"primitivos\"], :tokens [{:name \"blue-100\"} {:name \"red-100\"}]}] + + (filter-combined-tokens ... \"blue\") + Output: + [{:group nil, :sets [\"primitivos\"], :tokens [{:name \"blue-100\"}]}] + => keeps only tokens matching \"blue\", and removes sets/groups if no tokens match." + + [combined-tokens term] + (let [term (str/lower (str/trim term))] + (if (str/blank? term) + combined-tokens + (->> combined-tokens + (map (fn [{:keys [tokens] :as entry}] + (let [filtered (filter #(str/includes? + (str/lower (:name %)) + term) + tokens)] + (when (seq filtered) + (assoc entry :tokens filtered))))) + (remove nil?))))) + +(defn- sort-combined-tokens + "Sorts tokens alphabetically by :name inside each group/set. + Input: + [{:group \"brand\", :sets [\"light\" \"dark\"], :tokens [{:name \"foreground\"} {:name \"background\"}]}] + + Output: + [{:group \"brand\", :sets [\"light\" \"dark\"], :tokens [{:name \"background\"} {:name \"foreground\"}]}]" + [combined-tokens] + (map (fn [entry] + (update entry :tokens #(sort-by :name %))) + combined-tokens)) + +(mf/defc token-section* + {} + [{:keys [combined-tokens color-origin on-token-change] :rest props}] + (let [sets (set (mapv label-group-or-set combined-tokens)) + filter-term* (mf/use-state "") + filter-term (deref filter-term*) + open-sets* (mf/use-state sets) + open-sets (deref open-sets*) + + toggle-sets-open + (mf/use-fn + (mf/deps open-sets) + (fn [name] + (if (contains? open-sets name) + (swap! open-sets* disj name) + (swap! open-sets* conj name)))) + + on-filter-tokens + (mf/use-fn + (mf/deps filter-term) + (fn [event] + (let [value (-> event (dom/get-target) + (dom/get-value))] + (reset! filter-term* value) + (reset! open-sets* sets)))) + filtered-combined (filter-combined-tokens combined-tokens filter-term) + sorted-tokens (sort-combined-tokens filtered-combined)] + (if (seq combined-tokens) + [:div {:class (stl/css :color-tokens-section)} + [:> input* {:placeholder "Search by token name" + :icon i/search + :max-length max-input-length + :variant "comfortable" + :class (stl/css :search-input) + :default-value filter-term + :on-change on-filter-tokens}] + (if (seq sorted-tokens) + [:div {:class (stl/css :color-tokens-inputs)} + (for [combined-sets sorted-tokens] + (let [name (label-group-or-set combined-sets)] + [:> set-section* + {:collapsed (not (contains? open-sets name)) + :key (str "set-" name) + :toggle-sets-open toggle-sets-open + :color-origin color-origin + :on-token-change on-token-change + :name name + :group-or-set combined-sets}]))] + [:> token-empty-state*])] + [:> token-empty-state*]))) + diff --git a/frontend/src/app/main/ui/workspace/colorpicker/color_tokens.scss b/frontend/src/app/main/ui/workspace/colorpicker/color_tokens.scss new file mode 100644 index 0000000000..97a0d4de36 --- /dev/null +++ b/frontend/src/app/main/ui/workspace/colorpicker/color_tokens.scss @@ -0,0 +1,143 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "ds/typography.scss" as t; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; + +.color-token-list { + display: flex; + flex-direction: column; + gap: var(--sp-xs); +} + +.color-token-item { + --color-token-background: var(--color-background-primary); + background-color: var(--color-token-background); + color: var(--color-foreground-primary); + text-align: left; + display: grid; + grid-template-columns: auto 1fr auto; + align-items: center; + gap: var(--sp-xs); + inline-size: 100%; + border-radius: $br-8; + padding: var(--sp-xs); + block-size: $sz-28; + border: none; + cursor: pointer; + &:hover { + --color-token-background: var(--color-background-tertiary); + } +} + +.color-token-empty-state { + @include t.use-typography("body-small"); + padding: var(--sp-s) var(--sp-xxl); + text-align: center; + color: var(--color-foreground-secondary); +} + +.color-token-selected { + background-color: var(--color-background-tertiary); +} + +.color-token-selected-grid { + border: $b-1 solid var(--color-accent-primary); + border-radius: $br-4; + inline-size: fit-content; +} + +.token-selected-icon { + color: var(--color-accent-primary); +} + +.token-name { + @include t.use-typography("body-small"); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.color-tokens-section { + max-block-size: $sz-430; + display: flex; + flex-direction: column; + gap: var(--sp-s); +} + +.grid-view { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(var(--sp-xxl), 1fr)); + justify-items: start; + gap: var(--sp-s); +} + +.list-view { + display: flex; + flex-direction: column; + gap: var(--sp-xs); +} + +.search-input { + padding: $sz-1; +} + +.color-tokens-inputs { + overflow: auto; +} + +// Title bar +.set-title-bar { + --title-color: var(--color-foreground-secondary); + --arrow-color: var(--color-foreground-secondary); + @include t.use-typography("title-small"); + text-transform: none; + display: flex; + overflow: hidden; + min-block-size: var(--sp-xxxl); + padding-block-start: var(--sp-xs); +} + +.set-title-btn { + border: none; + background: none; + display: grid; + grid-template-columns: auto 1fr; + gap: var(--sp-xs); + flex-grow: 1; + padding: 0; + overflow: hidden; + + &:hover { + --arrow-color: var(--color-foreground-primary); + --title-color: var(--color-foreground-primary); + } +} + +.set-title-icon { + color: var(--arrow-color); + block-size: $sz-28; + padding-block-start: var(--sp-xxs); +} + +.set-title { + color: var(--title-color); + text-align: left; + padding-block-end: var(--sp-xs); +} + +.set-title-actions { + display: flex; +} + +.set-title-action-hidden { + display: none; +} + +.token-name { + color: var(--color-foreground-primary); +} diff --git a/frontend/src/app/main/ui/workspace/colorpicker/gradients.cljs b/frontend/src/app/main/ui/workspace/colorpicker/gradients.cljs index 1db83d6c01..ac2279de9f 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/gradients.cljs +++ b/frontend/src/app/main/ui/workspace/colorpicker/gradients.cljs @@ -12,7 +12,6 @@ [app.common.math :as mth] [app.common.types.color :as cc] [app.common.types.fills :as types.fills] - [app.config :as cfg] [app.main.features :as features] [app.main.ui.components.numeric-input :refer [numeric-input*]] [app.main.ui.components.reorder-handler :refer [reorder-handler*]] @@ -52,6 +51,10 @@ (str/join ", ") (str/ffmt "linear-gradient(90deg, %1)"))) +(defn- stop->hex-color + [stop] + (select-keys stop [:color :opacity])) + (mf/defc stop-input-row* {::mf/private true} [{:keys [stop @@ -156,8 +159,9 @@ [:> color-row* {:disable-gradient true :disable-picker true - :color stop + :color (stop->hex-color stop) :index index + :origin :gradient :on-change handle-change-stop-color :on-remove handle-remove-stop :on-focus handle-focus-stop-color @@ -288,8 +292,12 @@ (fn [] (when on-reverse-stops (on-reverse-stops)))) - cap-stops? (or (features/use-feature "render-wasm/v1") (contains? cfg/flags :frontend-binary-fills)) - add-stop-disabled? (when cap-stops? (>= (count stops) types.fills/MAX-GRADIENT-STOPS))] + + cap-stops? + (features/use-feature "render-wasm/v1") + + add-stop-disabled? + (when cap-stops? (>= (count stops) types.fills/MAX-GRADIENT-STOPS))] [:div {:class (stl/css :gradient-panel)} [:div {:class (stl/css :gradient-preview)} @@ -351,7 +359,7 @@ :icon i/add}]]] [:div {:class (stl/css :gradient-stops-list)} - [:& h/sortable-container {} + [:> h/sortable-container* {} (for [[index stop] (d/enumerate stops)] [:> stop-input-row* {:key index diff --git a/frontend/src/app/main/ui/workspace/colorpicker/gradients.scss b/frontend/src/app/main/ui/workspace/colorpicker/gradients.scss index 8bd5b81c45..d9e5b75633 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/gradients.scss +++ b/frontend/src/app/main/ui/workspace/colorpicker/gradients.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .gradient-panel { - margin-top: $s-12; + margin-top: deprecated.$s-12; display: grid; - gap: $s-4; - grid-template-rows: $s-56 $s-32 1fr; + gap: deprecated.$s-4; + grid-template-rows: deprecated.$s-56 deprecated.$s-32 1fr; } .gradient-preview { @@ -24,18 +24,18 @@ .gradient-background { width: 100%; - height: $s-20; - border-radius: $br-4; + height: deprecated.$s-20; + border-radius: deprecated.$br-4; position: relative; cursor: pointer; } .gradient-preview-stop-wrapper { position: absolute; - width: calc(100% - $s-24 - $s-4); + width: calc(100% - deprecated.$s-24 - deprecated.$s-4); height: 100%; - left: $s-2; - top: calc(-1 * $s-4); + left: deprecated.$s-2; + top: calc(-1 * deprecated.$s-4); pointer-events: none; } @@ -43,31 +43,31 @@ background-color: var(--color-foreground-primary); background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAADFJREFUOE9jZGBgEAFifOANPknGUQMYhkkYEEgG+NMJKAwIAbwJbdQABnBCIgRoG4gAIF8IsXB/Rs4AAAAASUVORK5CYII="); background-position: left center; - background-size: $s-8; - border-radius: $br-6; - border: $s-2 solid var(--color-foreground-primary); - box-shadow: 0px 0px $s-4 0px var(--menu-shadow-color); - height: calc($s-24 - $s-2); + background-size: deprecated.$s-8; + border-radius: deprecated.$br-6; + border: deprecated.$s-2 solid var(--color-foreground-primary); + box-shadow: 0px 0px deprecated.$s-4 0px var(--menu-shadow-color); + height: calc(deprecated.$s-24 - deprecated.$s-2); left: var(--position); overflow: hidden; pointer-events: initial; position: absolute; - width: calc($s-24 - $s-2); + width: calc(deprecated.$s-24 - deprecated.$s-2); &.is-selected, &:hover { - outline: $s-2 solid var(--color-accent-primary); + outline: deprecated.$s-2 solid var(--color-accent-primary); } } .gradient-preview-stop-decoration { background: var(--color-foreground-primary); border-radius: 100%; - bottom: $s-32; - box-shadow: 0px 0px $s-4 0px var(--menu-shadow-color); - height: $s-4; - left: calc(var(--position) + $s-8); + bottom: deprecated.$s-32; + box-shadow: 0px 0px deprecated.$s-4 0px var(--menu-shadow-color); + height: deprecated.$s-4; + left: calc(var(--position) + deprecated.$s-8); position: absolute; - width: $s-4; + width: deprecated.$s-4; } .gradient-preview-stop-color { @@ -97,7 +97,7 @@ } .gradient-options-select { - width: $s-140; + width: deprecated.$s-140; } .rotate-icon { @@ -107,8 +107,8 @@ .gradient-stops-list { display: flex; flex-direction: column; - gap: $s-4; - max-height: $s-180; + gap: deprecated.$s-4; + max-height: deprecated.$s-180; overflow-y: auto; overflow-x: hidden; padding: 0 0 var(--sp-s) var(--sp-m); @@ -116,10 +116,10 @@ .gradient-stops-entry { display: flex; - gap: $s-4; - padding: $s-2; - border-radius: $br-12; - border: $s-1 solid transparent; + gap: deprecated.$s-4; + padding: deprecated.$s-2; + border-radius: deprecated.$br-12; + border: deprecated.$s-1 solid transparent; position: relative; @@ -142,13 +142,13 @@ .offset-input-wrapper { @extend .input-element; - @include bodySmallTypography; - width: $s-92; + @include deprecated.bodySmallTypography; + width: deprecated.$s-92; } .gradient-separator { border-color: var(--color-background-quaternary); - border-width: $s-3; + border-width: deprecated.$s-3; margin-left: calc(var(--sp-m) / 2); position: relative; width: calc(100% - var(--sp-m)); @@ -157,10 +157,10 @@ .gradient-preview-stop-preview { background: var(--color-foreground-primary); border-radius: 50%; - height: $s-4; - left: calc(var(--preview-position, 0%) - $s-2); + height: deprecated.$s-4; + left: calc(var(--preview-position, 0%) - deprecated.$s-2); pointer-events: none; position: absolute; - top: calc(50% - $s-2); - width: $s-4; + top: calc(50% - deprecated.$s-2); + width: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/workspace/colorpicker/harmony.scss b/frontend/src/app/main/ui/workspace/colorpicker/harmony.scss index 04bc1d46ac..e2438dc416 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/harmony.scss +++ b/frontend/src/app/main/ui/workspace/colorpicker/harmony.scss @@ -4,41 +4,41 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .harmony-selector { display: flex; align-items: center; - gap: $s-8; - margin-top: $s-12; - margin-bottom: $s-8; + gap: deprecated.$s-8; + margin-top: deprecated.$s-12; + margin-bottom: deprecated.$s-8; } .hue-wheel-wrapper { - @include flexCenter; + @include deprecated.flexCenter; position: relative; } .hue-wheel { - width: $s-196; - height: $s-196; + width: deprecated.$s-196; + height: deprecated.$s-196; } .handler { @extend .colorpicker-handler; - height: $s-16; - width: $s-16; - border: $s-2 solid var(--colorpicker-handlers-color); + height: deprecated.$s-16; + width: deprecated.$s-16; + border: deprecated.$s-2 solid var(--colorpicker-handlers-color); } .handler.complement { background-color: var(--colorpicker-handlers-color); - border: $s-2 solid var(--colorpicker-handlers-color); + border: deprecated.$s-2 solid var(--colorpicker-handlers-color); } .handlers-wrapper { - @include flexRow; - height: $s-200; - width: $s-52; + @include deprecated.flexRow; + height: deprecated.$s-200; + width: deprecated.$s-52; flex-grow: 1; } diff --git a/frontend/src/app/main/ui/workspace/colorpicker/hsva.scss b/frontend/src/app/main/ui/workspace/colorpicker/hsva.scss index 4b02ceec61..08def7607f 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/hsva.scss +++ b/frontend/src/app/main/ui/workspace/colorpicker/hsva.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .hsva-selector { - @include flexColumn; - padding: $s-4; - grid-row-gap: $s-8; - margin-bottom: $s-8; + @include deprecated.flexColumn; + padding: deprecated.$s-4; + grid-row-gap: deprecated.$s-8; + margin-bottom: deprecated.$s-8; } .hsva-row { @@ -19,13 +19,13 @@ } .hsva-selector-label { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; display: flex; align-items: center; justify-content: flex-start; - width: $s-32; + width: deprecated.$s-32; } .hsva-bar { - width: $s-228; + width: deprecated.$s-228; } diff --git a/frontend/src/app/main/ui/workspace/colorpicker/libraries.scss b/frontend/src/app/main/ui/workspace/colorpicker/libraries.scss index 9b510d97fe..0fc9028c86 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/libraries.scss +++ b/frontend/src/app/main/ui/workspace/colorpicker/libraries.scss @@ -4,30 +4,29 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .libraries { - margin-top: $s-8; + margin-top: deprecated.$s-8; width: 100%; - padding: 0 var(--sp-m); } .selected-colors { display: grid; grid-template-columns: repeat(8, 1fr); - gap: $s-4; + gap: deprecated.$s-4; justify-content: space-between; overflow: auto; - margin-top: $s-8; - max-height: $s-168; + margin-top: deprecated.$s-8; + max-height: deprecated.$s-168; } .add-color-btn, .palette-btn { @extend .button-secondary; - height: $s-24; - width: $s-24; - border-radius: $br-circle; + height: deprecated.$s-24; + width: deprecated.$s-24; + border-radius: deprecated.$br-circle; padding: 0; svg { @extend .button-icon; diff --git a/frontend/src/app/main/ui/workspace/colorpicker/ramp.scss b/frontend/src/app/main/ui/workspace/colorpicker/ramp.scss index 60c94207b9..00e5825af6 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/ramp.scss +++ b/frontend/src/app/main/ui/workspace/colorpicker/ramp.scss @@ -4,15 +4,15 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .value-saturation-selector { background-color: rgba(var(--hue-rgb)); position: relative; - height: $s-140; + height: deprecated.$s-140; width: 100%; - margin-top: $s-12; - margin-bottom: $s-12; + margin-top: deprecated.$s-12; + margin-bottom: deprecated.$s-12; cursor: pointer; &::before { @@ -34,15 +34,15 @@ .handler { @extend .colorpicker-handler; - height: $s-16; - width: $s-16; - border: $s-2 solid var(--colorpicker-handlers-color); + height: deprecated.$s-16; + width: deprecated.$s-16; + border: deprecated.$s-2 solid var(--colorpicker-handlers-color); } .shade-selector { display: flex; - gap: $s-4; - height: $s-52; + gap: deprecated.$s-4; + height: deprecated.$s-52; cursor: pointer; } diff --git a/frontend/src/app/main/ui/workspace/colorpicker/slider_selector.scss b/frontend/src/app/main/ui/workspace/colorpicker/slider_selector.scss index e2eee80300..460939c0a8 100644 --- a/frontend/src/app/main/ui/workspace/colorpicker/slider_selector.scss +++ b/frontend/src/app/main/ui/workspace/colorpicker/slider_selector.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .slider-selector { --gradient-direction: 90deg; @@ -16,10 +16,10 @@ } position: relative; align-self: center; - height: $s-24; + height: deprecated.$s-24; inline-size: 100%; - border: $s-2 solid var(--colorpicker-details-color); - border-radius: $br-6; + border: deprecated.$s-2 solid var(--colorpicker-details-color); + border-radius: deprecated.$br-6; background: linear-gradient( var(--gradient-direction), rgba(var(--color), 0) 0%, @@ -28,8 +28,8 @@ cursor: pointer; &.vertical { - width: $s-24; - height: $s-200; + width: deprecated.$s-24; + height: deprecated.$s-200; } &.hue { @@ -60,7 +60,7 @@ &::after { content: ""; position: absolute; - border-radius: $br-6; + border-radius: deprecated.$br-6; width: 100%; height: 100%; background: linear-gradient( @@ -78,24 +78,24 @@ .handler { position: absolute; left: 50%; - width: calc($s-8 + $s-2); - height: calc($s-24 + $s-1); - border-radius: $br-4; - z-index: $z-index-1; + width: calc(deprecated.$s-8 + deprecated.$s-2); + height: calc(deprecated.$s-24 + deprecated.$s-1); + border-radius: deprecated.$br-4; + z-index: deprecated.$z-index-1; transform: translate(-4px, -3px); background-color: var(--colorpicker-handlers-color); } &.vertical .handler { - height: calc($s-8 + $s-2); - width: calc($s-24 + $s-1); + height: calc(deprecated.$s-8 + deprecated.$s-2); + width: calc(deprecated.$s-24 + deprecated.$s-1); transform: translate(-12px, 5px); } } .opacity-wrapper { background-color: var(--colorpicker-background-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .slider-selector.hue { diff --git a/frontend/src/app/main/ui/workspace/comments.scss b/frontend/src/app/main/ui/workspace/comments.scss index af3fa9d43c..cad6693505 100644 --- a/frontend/src/app/main/ui/workspace/comments.scss +++ b/frontend/src/app/main/ui/workspace/comments.scss @@ -4,30 +4,30 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .comments-section { position: relative; background-color: var(--panel-background-color); display: grid; - grid-template-rows: $s-40 $s-48 1fr; + grid-template-rows: deprecated.$s-40 deprecated.$s-48 1fr; } .from-viewer { - padding: 0 $s-8; + padding: 0 deprecated.$s-8; } .comments-section-title { - @include flexCenter; - @include uppercaseTitleTipography; + @include deprecated.flexCenter; + @include deprecated.uppercaseTitleTipography; position: relative; - height: $s-32; - min-height: $s-32; - margin: $s-8 $s-8 0 $s-8; - border-radius: $br-8; + height: deprecated.$s-32; + min-height: deprecated.$s-32; + margin: deprecated.$s-8 deprecated.$s-8 0 deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--panel-title-background-color); span { - @include flexCenter; + @include deprecated.flexCenter; flex-grow: 1; color: var(--title-foreground-color-hover); } @@ -35,20 +35,20 @@ .viewer-title { margin: 0; - margin-block-start: $s-8; + margin-block-start: deprecated.$s-8; } .mode-dropdown-wrapper { - @include buttonStyle; + @include deprecated.buttonStyle; @extend .asset-element; background-color: var(--color-background-tertiary); display: flex; width: 100%; - max-width: $s-256; - height: $s-32; - padding: $s-8; - border-radius: $br-8; - margin: $s-16 auto 0 auto; + max-width: deprecated.$s-256; + height: deprecated.$s-32; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; + margin: deprecated.$s-16 auto 0 auto; cursor: pointer; position: relative; } @@ -61,9 +61,9 @@ } .arrow-icon { - @include flexCenter; - height: $s-24; - width: $s-24; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-24; svg { @extend .button-icon-small; transform: rotate(90deg); @@ -73,30 +73,30 @@ .comment-mode-dropdown { @extend .dropdown-wrapper; - top: $s-92; - left: $s-12; - max-width: $s-256; + top: deprecated.$s-92; + left: deprecated.$s-12; + max-width: deprecated.$s-256; width: 100%; } .viewer-dropdown { - left: $s-8; + left: deprecated.$s-8; } .dropdown-item { @extend .dropdown-element-base; justify-content: space-between; .icon { - @include flexCenter; - height: $s-24; - width: $s-24; + @include deprecated.flexCenter; + height: deprecated.$s-24; + width: deprecated.$s-24; svg { @extend .button-icon-small; stroke: transparent; } } .label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } &:hover { .icon svg { @@ -114,7 +114,7 @@ } .separator { - height: $s-12; + height: deprecated.$s-12; } .comments-section-content { @@ -128,29 +128,29 @@ } .thread-group-placeholder { - @include flexColumn; + @include deprecated.flexColumn; align-items: center; justify-content: flex-start; - margin-top: $s-36; + margin-top: deprecated.$s-36; } .placeholder-icon { - @include flexCenter; - height: $s-48; - width: $s-48; - border-radius: $br-circle; + @include deprecated.flexCenter; + height: deprecated.$s-48; + width: deprecated.$s-48; + border-radius: deprecated.$br-circle; background-color: var(--empty-message-background-color); svg { @extend .button-icon; - height: $s-28; - width: $s-28; + height: deprecated.$s-28; + width: deprecated.$s-28; stroke: var(--empty-message-foreground-color); } } .placeholder-label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; text-align: center; - width: $s-184; + width: deprecated.$s-184; color: var(--empty-message-foreground-color); } diff --git a/frontend/src/app/main/ui/workspace/context_menu.scss b/frontend/src/app/main/ui/workspace/context_menu.scss index 66e58c8908..8d347c2190 100644 --- a/frontend/src/app/main/ui/workspace/context_menu.scss +++ b/frontend/src/app/main/ui/workspace/context_menu.scss @@ -4,23 +4,23 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .workspace-context-menu { position: absolute; - top: $s-40; - left: $s-736; - z-index: $z-index-4; + top: deprecated.$s-40; + left: deprecated.$s-736; + z-index: deprecated.$z-index-4; } .context-list, .workspace-context-submenu { - @include menuShadow; + @include deprecated.menuShadow; display: grid; - width: $s-240; - padding: $s-4; - border-radius: $br-8; - border: $s-2 solid var(--panel-border-color); + width: deprecated.$s-240; + padding: deprecated.$s-4; + border-radius: deprecated.$br-8; + border: deprecated.$s-2 solid var(--panel-border-color); background-color: var(--menu-background-color); max-height: 100vh; overflow-y: auto; @@ -31,33 +31,33 @@ } .separator { - height: $s-12; + height: deprecated.$s-12; } .context-menu-item { display: flex; align-items: center; justify-content: space-between; - height: $s-28; + height: deprecated.$s-28; width: 100%; - padding: $s-6; - border-radius: $br-8; + padding: deprecated.$s-6; + border-radius: deprecated.$br-8; cursor: pointer; .title { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--menu-foreground-color); } .shortcut { - @include flexCenter; - gap: $s-2; + @include deprecated.flexCenter; + gap: deprecated.$s-2; color: var(--menu-shortcut-foreground-color); .shortcut-key { - @include bodySmallTypography; - @include flexCenter; - height: $s-20; - padding: $s-2 $s-6; - border-radius: $br-6; + @include deprecated.bodySmallTypography; + @include deprecated.flexCenter; + height: deprecated.$s-20; + padding: deprecated.$s-2 deprecated.$s-6; + border-radius: deprecated.$br-6; background-color: var(--menu-shortcut-background-color); } } @@ -86,15 +86,15 @@ display: flex; justify-content: flex-start; align-items: center; - height: $s-28; - padding: $s-6; - border-radius: $br-8; + height: deprecated.$s-28; + padding: deprecated.$s-6; + border-radius: deprecated.$br-8; &:hover { background-color: var(--menu-background-color-hover); } span.title { - margin-left: $s-6; + margin-left: deprecated.$s-6; } .selected-icon { @@ -105,7 +105,7 @@ } .shape-icon { - margin-left: $s-2; + margin-left: deprecated.$s-2; svg { @extend .button-icon-small; stroke: var(--menu-foreground-color); diff --git a/frontend/src/app/main/ui/workspace/coordinates.scss b/frontend/src/app/main/ui/workspace/coordinates.scss index 9b8b782bfe..b338144d06 100644 --- a/frontend/src/app/main/ui/workspace/coordinates.scss +++ b/frontend/src/app/main/ui/workspace/coordinates.scss @@ -4,17 +4,17 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; $width-settings-bar: 256px; .container { background-color: var(--color-background-primary); - border-radius: $br-4; + border-radius: deprecated.$br-4; bottom: 0px; - padding: $s-2 $s-8; + padding: deprecated.$s-2 deprecated.$s-8; position: fixed; - right: calc(#{$width-settings-bar} + #{$s-24}); + right: calc(#{$width-settings-bar} + #{deprecated.$s-24}); text-align: center; white-space: nowrap; transition: bottom 0.5s; @@ -24,10 +24,10 @@ $width-settings-bar: 256px; } .container-color-palette-open { - bottom: $s-64; + bottom: deprecated.$s-64; } .coordinate { color: var(--color-foreground-primary); - font-size: $fs-12; + font-size: deprecated.$fs-12; } diff --git a/frontend/src/app/main/ui/workspace/left_header.scss b/frontend/src/app/main/ui/workspace/left_header.scss index c858941ab3..a096c8144a 100644 --- a/frontend/src/app/main/ui/workspace/left_header.scss +++ b/frontend/src/app/main/ui/workspace/left_header.scss @@ -4,24 +4,24 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .workspace-header-left { display: flex; align-items: center; - padding: $s-12 $s-12 $s-8 $s-12; - min-height: $s-52; + padding: deprecated.$s-12 deprecated.$s-12 deprecated.$s-8 deprecated.$s-12; + min-height: deprecated.$s-52; } .main-icon { - @include flexCenter; - width: $s-32; - height: $s-32; - min-height: $s-32; - margin-right: $s-4; + @include deprecated.flexCenter; + width: deprecated.$s-32; + height: deprecated.$s-32; + min-height: deprecated.$s-32; + margin-right: deprecated.$s-4; svg { - min-height: $s-32; - width: $s-32; + min-height: deprecated.$s-32; + width: deprecated.$s-32; fill: var(--icon-foreground-hover); } } @@ -29,24 +29,24 @@ .project-tree { position: relative; flex-grow: 1; - height: $s-32; - min-height: $s-32; - max-width: calc(100% - $s-64); + height: deprecated.$s-32; + min-height: deprecated.$s-32; + max-width: calc(100% - deprecated.$s-64); } .project-name, .file-name { - @include uppercaseTitleTipography; - @include textEllipsis; - height: $s-16; + @include deprecated.uppercaseTitleTipography; + @include deprecated.textEllipsis; + height: deprecated.$s-16; width: 100%; - padding-bottom: $s-2; + padding-bottom: deprecated.$s-2; color: var(--title-foreground-color); cursor: pointer; } .file-name { - @include smallTitleTipography; + @include deprecated.smallTitleTipography; text-transform: none; color: var(--title-foreground-color-hover); align-items: center; @@ -55,20 +55,20 @@ } .file-name-label { - @include textEllipsis; + @include deprecated.textEllipsis; } .file-name-input { - @include flexCenter; + @include deprecated.flexCenter; width: 100%; margin: 0; border: 0; padding: 0; - border-radius: $br-4; + border-radius: deprecated.$br-4; background-color: var(--input-background-color); - font-size: $fs-14; + font-size: deprecated.$fs-14; color: var(--input-foreground-color); - z-index: $z-index-20; + z-index: deprecated.$z-index-20; white-space: break-spaces; &:focus { outline: none; @@ -76,23 +76,23 @@ } .shared-badge { - @include flexCenter; - width: $s-16; - height: $s-32; - margin-right: $s-4; + @include deprecated.flexCenter; + width: deprecated.$s-16; + height: deprecated.$s-32; + margin-right: deprecated.$s-4; svg { stroke: var(--button-secondary-foreground-color-rest); fill: none; - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; } } .status-notification { - width: $s-6; - height: $s-6; + width: deprecated.$s-6; + height: deprecated.$s-6; border-radius: 50%; - margin-right: $s-4; + margin-right: deprecated.$s-4; flex-shrink: 0; background-color: var(--status-widget-background-color-pending); diff --git a/frontend/src/app/main/ui/workspace/libraries.cljs b/frontend/src/app/main/ui/workspace/libraries.cljs index eeea99f93f..5d4524822d 100644 --- a/frontend/src/app/main/ui/workspace/libraries.cljs +++ b/frontend/src/app/main/ui/workspace/libraries.cljs @@ -30,13 +30,14 @@ [app.main.ui.components.search-bar :refer [search-bar*]] [app.main.ui.components.title-bar :refer [title-bar*]] [app.main.ui.context :as ctx] + [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.foundations.assets.icon :as i] [app.main.ui.ds.layout.tab-switcher :refer [tab-switcher*]] [app.main.ui.hooks :as h] [app.main.ui.icons :as deprecated-icon] [app.util.color :as uc] [app.util.dom :as dom] - [app.util.i18n :as i18n :refer [tr]] + [app.util.i18n :refer [c tr]] [app.util.strings :refer [matches-search]] [beicon.v2.core :as rx] [cuerdas.core :as str] @@ -48,9 +49,6 @@ (def ^:private add-icon (deprecated-icon/icon-xref :add (stl/css :add-icon))) -(def ^:private detach-icon - (deprecated-icon/icon-xref :detach (stl/css :detach-icon))) - (def ^:private library-icon (deprecated-icon/icon-xref :library (stl/css :library-icon))) @@ -100,16 +98,16 @@ (str/join " · " (cond-> [] (or all-zero? (pos? components-count)) - (conj (tr "workspace.libraries.components" components-count)) + (conj (tr "workspace.libraries.components" (c components-count))) (or all-zero? (pos? graphics-count)) - (conj (tr "workspace.libraries.graphics" graphics-count)) + (conj (tr "workspace.libraries.graphics" (c graphics-count))) (or all-zero? (pos? colors-count)) - (conj (tr "workspace.libraries.colors" colors-count)) + (conj (tr "workspace.libraries.colors" (c colors-count))) (or all-zero? (pos? typography-count)) - (conj (tr "workspace.libraries.typography" typography-count)))) + (conj (tr "workspace.libraries.typography" (c typography-count))))) "\u00A0"))) (mf/defc library-description* @@ -124,19 +122,19 @@ [:* (when (pos? components-count) [:li {:class (stl/css :element-count)} - (tr "workspace.libraries.components" components-count)]) + (tr "workspace.libraries.components" (c components-count))]) (when (pos? graphics-count) [:li {:class (stl/css :element-count)} - (tr "workspace.libraries.graphics" graphics-count)]) + (tr "workspace.libraries.graphics" (c graphics-count))]) (when (pos? colors-count) [:li {:class (stl/css :element-count)} - (tr "workspace.libraries.colors" colors-count)]) + (tr "workspace.libraries.colors" (c colors-count))]) (when (pos? typography-count) [:li {:class (stl/css :element-count)} - (tr "workspace.libraries.typography" typography-count)])])) + (tr "workspace.libraries.typography" (c typography-count))])])) (mf/defc sample-library-entry* {::mf/props :obj @@ -199,7 +197,20 @@ empty-library? (empty-library? summary) selected (h/use-shared-state mdc/colorpalette-selected-broadcast-key :recent) + dependencies (mf/with-memo [shared-libraries] + (into {} (map (juxt :id :library-file-ids) (vals shared-libraries)))) + library-names (mf/with-memo [shared-libraries] + (into {} (map (fn [{:keys [id name]}] + [id name]) + (vals shared-libraries)))) + + find-connected-to + (mf/use-fn + (mf/deps dependencies) + (fn [library-id] + (->> dependencies + (keep (fn [[k v]] (when (contains? v library-id) k)))))) shared-libraries (mf/with-memo [shared-libraries linked-libraries file-id search-term] @@ -208,18 +219,29 @@ (remove #(= (:id %) file-id)) (remove #(contains? linked-libraries (:id %))) (filter #(matches-search (:name %) search-term)) + (map #(assoc % :connected-to (find-connected-to (:id %)))) + (map #(assoc % :connected-to-names (->> (:connected-to %) + (keep library-names)))) (sort-by (comp str/lower :name))))) linked-libraries - (mf/with-memo [linked-libraries] + (mf/with-memo [linked-libraries find-connected-to library-names] (->> (vals linked-libraries) + (map #(assoc % :connected-to (find-connected-to (:id %)))) + (map #(assoc % :connected-to-names (->> (:connected-to %) + (keep library-names)))) (sort-by (comp str/lower :name)))) + linked-libraries-ids (mf/with-memo [linked-libraries] + (into #{} (map :id) linked-libraries)) + + importing* (mf/use-state nil) sample-libraries [{:id "penpot-design-system", :name "Design system example"} {:id "wireframing-kit", :name "Wireframe library"} {:id "whiteboarding-kit", :name "Whiteboarding Kit"}] + change-search-term (mf/use-fn (fn [event] @@ -311,22 +333,30 @@ :value (tr "common.publish") :on-click publish}])] - (for [{:keys [id name data] :as library} linked-libraries] - [:div {:class (stl/css :section-list-item) - :key (dm/str id) - :data-testid "library-item"} - [:div {:class (stl/css :item-content)} - [:div {:class (stl/css :item-name)} name] - [:ul {:class (stl/css :item-contents)} - (let [summary (get-library-summary data)] - [:> library-description* {:summary summary}])]] + (for [{:keys [id name data connected-to connected-to-names] :as library} linked-libraries] + (let [disabled? (some #(contains? linked-libraries-ids %) connected-to)] + [:div {:class (stl/css :section-list-item) + :key (dm/str id) + :data-testid "library-item"} + [:div {:class (stl/css :item-content)} + [:div {:class (stl/css :item-name)} name] + [:ul {:class (stl/css :item-contents)} + (let [summary (get-library-summary data)] + [:* + [:> library-description* {:summary summary}] + (when (seq connected-to) + [:div {:class (stl/css :connected-to-wrapper)} + [:span "(" (tr "workspace.libraries.connected-to") " "] + [:span {:class (stl/css :connected-to-values)} (str/join ", " connected-to-names)] + [:span ")"]])])]] - [:button {:class (stl/css :item-button) - :type "button" - :title (tr "workspace.libraries.unlink-library-btn") - :data-library-id (dm/str id) - :on-click unlink-library} - detach-icon]])]] + [:> icon-button* {:type "button" + :aria-label (tr "workspace.libraries.unlink-library-btn") + :icon i/detach + :data-library-id (dm/str id) + :variant "secondary" + :disabled disabled? + :on-click unlink-library}]]))]] [:div {:class (stl/css :shared-section)} [:> title-bar* {:collapsable false @@ -580,8 +610,7 @@ linked-libraries (mf/with-memo [linked-libraries file-id] (d/removem (fn [[_ lib]] - (or (:is-indirect lib) - (= (:id lib) file-id))) + (= (:id lib) file-id)) linked-libraries)) shared-libraries diff --git a/frontend/src/app/main/ui/workspace/libraries.scss b/frontend/src/app/main/ui/workspace/libraries.scss index 979b2b107d..2cd2a047b2 100644 --- a/frontend/src/app/main/ui/workspace/libraries.scss +++ b/frontend/src/app/main/ui/workspace/libraries.scss @@ -4,36 +4,65 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_utils.scss" as *; +@use "ds/z-index.scss" as *; +@use "ds/typography.scss" as t; +@use "ds/mixins.scss" as *; // Library modal .modal-overlay { - @extend .modal-overlay-base; + display: flex; + justify-content: center; + align-items: center; + position: fixed; + left: 0; + top: 0; + height: 100%; + width: 100%; + z-index: var(--z-index-set); + background-color: var(--overlay-color); } .modal-dialog { - @extend .modal-container-base; + position: relative; + padding: var(--sp-xxxl); + border-radius: $br-8; + background-color: var(--modal-background-color); + border: $b-2 solid var(--modal-border-color); display: grid; grid-template-rows: auto 1fr; - height: $s-520; - max-height: $s-520; - width: $s-712; - max-width: $s-712; + min-width: $sz-364; + min-height: $sz-192; + height: $sz-520; + max-height: $sz-520; + width: $sz-712; + max-width: $sz-712; } +// TODO: Remove this extended creating modal component .close-btn { @extend .modal-close-btn-base; } .close-icon { - @extend .button-icon; + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; stroke: var(--icon-foreground); } .modal-title { - @include headlineMediumTypography; - margin-block-end: $s-16; - color: var(--modal-title-foreground-color); + @include t.use-typography("headline-medium"); + margin-block-end: var(--sp-l); + color: var(--color-foreground-primary); } // Tabs content @@ -41,9 +70,9 @@ .updates-content { display: grid; grid-template-columns: 1fr 1fr; - gap: $s-32; - max-height: $s-400; - padding-block-start: $s-16; + gap: var(--sp-xxxl); + max-height: $sz-400; + padding-block-start: var(--sp-l); } .lib-section, @@ -51,30 +80,40 @@ .shared-section { display: grid; grid-template-rows: auto 1fr; - gap: $s-8; + gap: var(--sp-s); + + .section-list { + .section-list-item:first-child { + border: none; + } + } } .shared-section { grid-template-rows: auto auto 1fr; + row-gap: var(--sp-l); } .title-spacing-lib { - margin: 0 0 0 calc(-1 * $s-8); + margin: 0 0 0 calc(-1 * var(--sp-s)); } .section-list, .section-list-shared { display: grid; grid-auto-rows: min-content; - gap: $s-8; - max-height: $s-320; + gap: var(--sp-s); + max-height: px2rem(320); overflow-y: auto; } .section-list-item { display: grid; grid-template-columns: 1fr auto; - gap: $s-8; + gap: var(--sp-s); + border: $b-1 solid var(--color-background-quaternary); + padding: var(--sp-s) var(--sp-s) var(--sp-m) var(--sp-m); + border-radius: $br-8; } .item-content { @@ -83,82 +122,107 @@ .item-publish, .item-unpublish { + // TODO: remove this extended by using DS button component @extend .button-primary; - @include uppercaseTitleTipography; - height: $s-32; - min-width: $s-92; - padding: $s-8 $s-24; + @include t.use-typography("headline-small"); + height: $sz-32; + min-width: px2rem(92); + padding: var(--sp-s) var(--sp-xxl); margin: 0; border-radius: $br-8; } .item-unpublish { + // TODO: remove this extended by using DS button component @extend .button-secondary; } .item-button, .item-button-shared { + // TODO: remove this extended by using DS button component @extend .button-secondary; - height: $s-32; - width: $s-32; - margin-inline-start: $s-2; - margin-inline-end: $s-8; - padding: $s-8; + height: $sz-32; + width: $sz-32; + margin-inline-start: var(--sp-xxs); + padding: var(--sp-s); } .detach-icon, .add-icon { - @extend .button-icon; + display: flex; + justify-content: center; + align-items: center; + height: $sz-16; + width: $sz-16; + color: transparent; + fill: none; + stroke-width: $b-1; stroke: var(--icon-foreground); } .section-list-shared { - max-height: $s-272; + max-height: px2rem(272); } .section-title { - @include headlineSmallTypography; - margin-block-end: $s-12; + @include t.use-typography("headline-small"); + margin-block-end: var(--sp-m); color: var(--title-foreground-color); } .search-icon { - @include flexCenter; - width: $s-20; - padding: 0 0 0 $s-8; + display: flex; + justify-content: center; + align-items: center; + width: px2rem(20); + padding: 0 0 0 var(--sp-s); svg { - @extend .button-icon-small; + display: flex; + justify-content: center; + align-items: center; + color: transparent; + fill: none; + height: px2rem(12); + width: px2rem(12); + stroke-width: 1.33px; stroke: var(--icon-foreground); } } // empty state .section-list-empty { - @include bodyMediumTypography; + @include t.use-typography("body-medium"); display: grid; grid-template-rows: auto 1fr; justify-items: center; - gap: $s-8; + gap: var(--sp-s); text-align: center; height: fit-content; - margin-block: $s-16; + margin-block: var(--sp-l); color: var(--modal-title-foreground-color); } .empty-state-icon { - @include flexCenter; - width: $s-48; - height: $s-48; + display: flex; + justify-content: center; + align-items: center; + width: $sz-48; + height: $sz-48; border-radius: $br-circle; background-color: var(--pill-background-color); } .library-icon { - @extend .button-icon; + display: flex; + justify-content: center; + align-items: center; + color: transparent; + fill: none; + stroke-width: $b-1; stroke: var(--icon-foreground); - height: $s-32; - width: $s-32; + height: $sz-32; + width: $sz-32; } // Update library tab @@ -166,8 +230,8 @@ @extend .link; direction: rtl; grid-column: span 3; - margin-block-start: $s-8; - margin-inline-start: $s-8; + margin-block-start: var(--sp-s); + margin-inline-start: var(--sp-s); margin: 0; } @@ -178,59 +242,59 @@ .libraries-updates { display: grid; grid-column: span 3; - grid-template-columns: repeat(auto-fill, minmax($s-160, 1fr)); - gap: $s-24; - margin-block-start: $s-16; + grid-template-columns: repeat(auto-fill, minmax(px2rem(160), 1fr)); + gap: deprecated.$s-24; + margin-block-start: var(--sp-l); } .libraries-updates-column { display: grid; - gap: $s-4; + gap: var(--sp-xs); } .libraries-updates-item { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; display: grid; grid-template-columns: auto 1fr; align-items: start; - gap: $s-8; + gap: var(--sp-s); color: var(--library-content-foreground-color); } .component-svg { background-color: var(--color-canvas); border-radius: $br-4; - border: $s-2 solid transparent; - height: $s-24; - width: $s-24; - min-height: $s-24; - min-width: $s-24; + border: $b-2 solid transparent; + height: $sz-24; + width: $sz-24; + min-height: $sz-24; + min-width: $sz-24; } .name-block { color: var(--library-content-foreground-color); - width: $s-168; + width: px2rem(168); } .ellipsis { - padding-inline-start: calc($s-24 + #{$s-8}); + padding-inline-start: calc(var(--sp-xxl) + var(--sp-s)); } .item-name { - @include bodyLargeTypography; + @include t.use-typography("body-large"); @include textEllipsis; margin: 0; - max-width: $s-244; + max-width: px2rem(216); color: var(--library-name-foreground-color); } .item-update { @extend .button-primary; - @include headlineSmallTypography; - height: $s-32; - min-width: $s-92; - padding: $s-8 $s-24; - margin-inline-end: $s-2; + @include t.use-typography("headline-small"); + height: $sz-32; + min-width: px2rem(92); + padding: var(--sp-s) var(--sp-xxl); + margin-inline-end: var(--sp-xxs); border-radius: $br-8; &:disabled { @@ -239,7 +303,7 @@ } .item-contents { - @include bodyMediumTypography; + @include t.use-typography("body-small"); color: var(--library-content-foreground-color); display: flex; flex-wrap: wrap; @@ -251,33 +315,41 @@ &:not(:last-child)::after { content: "·"; - margin-inline: $s-4; + margin-inline: var(--sp-xs); } } +.connected-to-wrapper { + display: block; +} + +.connected-to-values { + color: var(--color-foreground-primary); +} + // Modal Component v2 update .modal-v2-info { - width: $s-664; + width: px2rem(664); height: fit-content; max-height: fit-content; } .modal-v2-title { - @include headlineMediumTypography; + @include t.use-typography("headline-medium"); color: var(--modal-title-foreground-color); } .info-content { display: grid; grid-template-rows: repeat(4, 1fr); - margin-top: $s-32; - gap: $s-24; + margin-top: var(--sp-xxxl); + gap: var(--sp-xxl); } .info-block { display: grid; grid-template-columns: auto 1fr; - column-gap: $s-20; + column-gap: var(--sp-xl); grid-template: "icon title" "icon content"; @@ -285,9 +357,9 @@ .info-icon { grid-area: icon; - width: $s-52; - height: $s-52; - margin-top: $s-8; + width: px2rem(52); + height: px2rem(52); + margin-top: var(--sp-s); border-radius: $br-circle; background: var(--color-background-quaternary); display: flex; @@ -295,20 +367,20 @@ align-items: center; svg { - width: $s-32; - height: $s-32; + width: $sz-32; + height: $sz-32; fill: var(--icon-foreground-active); } } .info-block-title { - @include bodyLargeTypography; + @include t.use-typography("body-large"); grid-area: title; color: var(--modal-title-foreground-color); } .info-block-content { - @include bodyMediumTypography; + @include t.use-typography("body-medium"); grid-area: content; color: var(--library-content-foreground-color); } @@ -316,36 +388,37 @@ .info-bottom { display: flex; justify-content: flex-end; - margin-block-start: $s-24; - margin-inline-end: $s-8; + margin-block-start: var(--sp-xxl); + margin-inline-end: var(--sp-s); } .primary-button { @extend .button-primary; - @include headlineSmallTypography; - padding: $s-0 $s-16; + @include t.use-typography("headline-small"); + padding: 0 var(--sp-l); } .sample-libraries-info { + @include t.use-typography("body-small"); display: flex; flex-direction: column; - font-size: $fs-12; - margin: $s-32; + margin: var(--sp-xxxl); color: var(--color-foreground-secondary); } .sample-libraries-link { + @include t.use-typography("body-small"); color: var(--color-accent-primary); - font-weight: $fw400; + &:hover { text-decoration: underline; } } .sample-libraries-container { + @include t.use-typography("body-small"); display: flex; flex-direction: column; - font-size: $fs-12; width: 100%; align-items: start; color: var(--color-foreground-secondary); @@ -356,30 +429,32 @@ justify-content: space-between; align-items: center; width: 100%; - margin-top: $s-8; + margin-top: var(--sp-s); } .sample-library-item-name { - font-size: $fs-14; + @include t.use-typography("body-medium"); color: var(--color-foreground-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - max-width: $s-232; + max-width: px2rem(232); } +// TODO: Remove this extended using a DS component .sample-library-add { @extend .button-secondary; } +// TODO: Remove this extended using a DS component .sample-library-adding { @extend .button-disabled; } .sample-library-button { - @include uppercaseTitleTipography; - height: $s-32; - width: $s-80; + @include t.use-typography("headline-small"); + height: $sz-32; + width: px2rem(80); margin: 0; border-radius: $br-8; white-space: nowrap; diff --git a/frontend/src/app/main/ui/workspace/main_menu.cljs b/frontend/src/app/main/ui/workspace/main_menu.cljs index e8adccd671..e71929e508 100644 --- a/frontend/src/app/main/ui/workspace/main_menu.cljs +++ b/frontend/src/app/main/ui/workspace/main_menu.cljs @@ -53,22 +53,46 @@ ::mf/wrap [mf/memo]} [{:keys [layout on-close]}] (let [nav-to-helpc-center - (mf/use-fn #(dom/open-new-window "https://help.penpot.app")) + (mf/use-fn + (fn [] + (st/emit! (ptk/event ::ev/event {::ev/name "explore-help-center-click" + ::ev/origin "workspace-menu:in-app"})) + (dom/open-new-window "https://help.penpot.app"))) nav-to-community - (mf/use-fn #(dom/open-new-window "https://community.penpot.app")) + (mf/use-fn + (fn [] + (st/emit! (ptk/event ::ev/event {::ev/name "explore-community-click" + ::ev/origin "workspace-menu:in-app"})) + (dom/open-new-window "https://community.penpot.app"))) nav-to-youtube - (mf/use-fn #(dom/open-new-window "https://www.youtube.com/c/Penpot")) + (mf/use-fn + (fn [] + (st/emit! (ptk/event ::ev/event {::ev/name "explore-tutorials-click" + ::ev/origin "workspace-menu:in-app"})) + (dom/open-new-window "https://www.youtube.com/c/Penpot"))) nav-to-templates - (mf/use-fn #(dom/open-new-window "https://penpot.app/libraries-templates")) + (mf/use-fn + (fn [] + (st/emit! (ptk/event ::ev/event {::ev/name "explore-libraries-click" + ::ev/origin "workspace"})) + (dom/open-new-window "https://penpot.app/libraries-templates"))) nav-to-github - (mf/use-fn #(dom/open-new-window "https://github.com/penpot/penpot")) + (mf/use-fn + (fn [] + (st/emit! (ptk/event ::ev/event {::ev/name "explore-github-repository-click" + ::ev/origin "workspace-menu:in-app"})) + (dom/open-new-window "https://github.com/penpot/penpot"))) nav-to-terms - (mf/use-fn #(dom/open-new-window "https://penpot.app/terms")) + (mf/use-fn + (fn [] + (st/emit! (ptk/event ::ev/event {::ev/name "explore-terms-service-click" + ::ev/origin "workspace-menu:in-app"})) + (dom/open-new-window "https://penpot.app/terms"))) nav-to-feedback (mf/use-fn #(st/emit! (dcm/go-to-feedback))) @@ -92,6 +116,7 @@ (fn [event] (let [version (:main cf/version)] (st/emit! (ptk/event ::ev/event {::ev/name "show-release-notes" :version version})) + (println version) (if (and (kbd/alt? event) (kbd/mod? event)) (st/emit! (modal/show {:type :onboarding})) (st/emit! (modal/show {:type :release-notes :version version}))))))] diff --git a/frontend/src/app/main/ui/workspace/main_menu.scss b/frontend/src/app/main/ui/workspace/main_menu.scss index c90fb8672d..d47def9ad2 100644 --- a/frontend/src/app/main/ui/workspace/main_menu.scss +++ b/frontend/src/app/main/ui/workspace/main_menu.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .menu { @extend .menu-dropdown; - top: $s-48; - left: calc(var(--width, $s-256) - $s-16); - width: $s-192; + top: deprecated.$s-48; + left: calc(var(--width, deprecated.$s-256) - deprecated.$s-16); + width: deprecated.$s-192; margin: 0; } @@ -19,7 +19,7 @@ cursor: pointer; .open-arrow { - @include flexCenter; + @include deprecated.flexCenter; svg { @extend .button-icon; @@ -43,12 +43,12 @@ } .separator { - border-top: $s-1 solid var(--color-background-quaternary); - height: $s-4; - left: calc(-1 * $s-4); - margin-top: $s-8; + border-top: deprecated.$s-1 solid var(--color-background-quaternary); + height: deprecated.$s-4; + left: calc(-1 * deprecated.$s-4); + margin-top: deprecated.$s-8; position: relative; - width: calc(100% + $s-8); + width: calc(100% + deprecated.$s-8); } .shortcut { @@ -61,9 +61,9 @@ .sub-menu { @extend .menu-dropdown; - left: calc(var(--width, $s-256) + $s-180); - width: $s-192; - min-width: calc($s-272 - $s-2); + left: calc(var(--width, deprecated.$s-256) + deprecated.$s-180); + width: deprecated.$s-192; + min-width: calc(deprecated.$s-272 - deprecated.$s-2); width: 110%; .submenu-item { @@ -89,34 +89,34 @@ } &.file { - top: $s-48; + top: deprecated.$s-48; } &.edit { - top: $s-76; + top: deprecated.$s-76; } &.view { - top: $s-116; + top: deprecated.$s-116; } &.preferences { - top: $s-148; + top: deprecated.$s-148; } &.plugins { - top: $s-180; - max-height: calc(100vh - $s-180); + top: deprecated.$s-180; + max-height: calc(100vh - deprecated.$s-180); overflow-x: hidden; overflow-y: auto; } &.help-info { - top: $s-232; + top: deprecated.$s-232; } &.help-info-old { - top: $s-192; + top: deprecated.$s-192; } } diff --git a/frontend/src/app/main/ui/workspace/nudge.scss b/frontend/src/app/main/ui/workspace/nudge.scss index 6331cec646..9ed244bedd 100644 --- a/frontend/src/app/main/ui/workspace/nudge.scss +++ b/frontend/src/app/main/ui/workspace/nudge.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -12,15 +12,15 @@ .modal-container { @extend .modal-container-base; - min-width: $s-408; + min-width: deprecated.$s-408; } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include headlineMediumTypography; + @include deprecated.headlineMediumTypography; color: var(--modal-title-foreground-color); } .modal-close-btn { @@ -28,22 +28,22 @@ } .modal-content { - @include flexColumn; - gap: $s-24; - @include bodyLargeTypography; - margin-bottom: $s-24; + @include deprecated.flexColumn; + gap: deprecated.$s-24; + @include deprecated.bodyLargeTypography; + margin-bottom: deprecated.$s-24; } .input-wrapper { @extend .input-with-label; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; label { text-transform: none; } } .modal-msg { - @include bodyLargeTypography; + @include deprecated.bodyLargeTypography; color: var(--modal-text-foreground-color); line-height: 1.5; } diff --git a/frontend/src/app/main/ui/workspace/palette.scss b/frontend/src/app/main/ui/workspace/palette.scss index c4896a1c19..7dc42ffc37 100644 --- a/frontend/src/app/main/ui/workspace/palette.scss +++ b/frontend/src/app/main/ui/workspace/palette.scss @@ -4,18 +4,18 @@ // // Copyright (c) KALEIDOS INC -@use "../ds/spacing.scss" as *; -@use "../ds/z-index.scss" as *; -@use "../ds/_sizes.scss" as *; +@use "ds/spacing.scss" as *; +@use "ds/z-index.scss" as *; +@use "ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .palette-wrapper { position: absolute; width: 100vw; left: 0; bottom: 0; - padding-bottom: $s-4; + padding-bottom: deprecated.$s-4; /** Aligns AI Chat button **/ display: flex; @@ -25,7 +25,7 @@ } .palettes { - z-index: $z-index-2; + z-index: deprecated.$z-index-2; position: relative; right: 0; grid-area: color-palette; @@ -33,15 +33,15 @@ grid-template-areas: "resize resize resize" "buttons actions palette"; - grid-template-rows: $s-8 1fr; - grid-template-columns: $s-32 auto 1fr; - max-height: $s-80; + grid-template-rows: deprecated.$s-8 1fr; + grid-template-columns: deprecated.$s-32 auto 1fr; + max-height: deprecated.$s-80; height: var(--height); width: fit-content; - padding: $s-0 $s-0 $s-8 $s-8; - border-radius: $br-8; + padding: deprecated.$s-0 deprecated.$s-0 deprecated.$s-8 deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--palette-background-color); - border: $s-2 solid var(--panel-border-color); + border: deprecated.$s-2 solid var(--panel-border-color); transition: right 0.3s, opacity 0.2s, @@ -52,36 +52,36 @@ .resize-area { grid-area: resize; - height: $s-8; - z-index: $z-index-4; - width: calc(100% - $s-8); - border-radius: $br-circle; + height: deprecated.$s-8; + z-index: deprecated.$z-index-4; + width: calc(100% - deprecated.$s-8); + border-radius: deprecated.$br-circle; cursor: ns-resize; background-color: var(--palette-background-color); } .palette-btn-list { grid-area: buttons; background-color: var(--palette-background-color); - height: calc(var(--height) - $s-16); - width: $s-32; - margin: $s-0; + height: calc(var(--height) - deprecated.$s-16); + width: deprecated.$s-32; + margin: deprecated.$s-0; list-style: none; - z-index: $z-index-2; - gap: $s-2; + z-index: deprecated.$z-index-2; + gap: deprecated.$s-2; &.mid-palette, &.small-palette { display: flex; } .palette-item { - @include flexCenter; - border-radius: $br-8; - opacity: $op-10; + @include deprecated.flexCenter; + border-radius: deprecated.$br-8; + opacity: deprecated.$op-10; transition: opacity 1s ease; .palette-btn { @extend .button-tertiary; - height: $s-32; - width: $s-32; - border-radius: $br-8; + height: deprecated.$s-32; + width: deprecated.$s-32; + border-radius: deprecated.$br-8; background-clip: padding-box; padding: 0; svg { @@ -98,13 +98,13 @@ .palette-actions { @extend .button-tertiary; grid-area: actions; - height: calc(var(--height) - $s-16); - width: $s-32; + height: calc(var(--height) - deprecated.$s-16); + width: deprecated.$s-32; padding: 0; - margin-left: $s-4; - border-radius: $br-8; + margin-left: deprecated.$s-4; + border-radius: deprecated.$br-8; background-color: var(--palette-background-color); - z-index: $z-index-2; + z-index: deprecated.$z-index-2; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -118,41 +118,41 @@ } .handler { - @include buttonStyle; - @include flexCenter; - width: $s-12; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; + width: deprecated.$s-12; height: 100%; .handler-btn { - width: $s-4; + width: deprecated.$s-4; height: 100%; - max-height: $s-40; - margin: $s-8 $s-4; + max-height: deprecated.$s-40; + margin: deprecated.$s-8 deprecated.$s-4; padding: 0; - border-radius: $s-4; + border-radius: deprecated.$s-4; background-color: var(--palette-handler-background-color); } } .mid-palette, .small-palette { - grid-template-columns: $s-64 auto 1fr; + grid-template-columns: deprecated.$s-64 auto 1fr; } .hidden-bts { - right: $s-2; - z-index: $z-index-1; + right: deprecated.$s-2; + z-index: deprecated.$z-index-1; width: 22px; - grid-template-columns: $s-8 auto 1fr; + grid-template-columns: deprecated.$s-8 auto 1fr; padding: 0; border-inline-start: 0; border-start-start-radius: 0; border-end-start-radius: 0; .palette-btn-list { - opacity: $op-0; + opacity: deprecated.$op-0; visibility: hidden; width: 0; .palette-item { - opacity: $op-0; + opacity: deprecated.$op-0; visibility: hidden; z-index: 0; } @@ -171,7 +171,7 @@ z-index: 0; } .handler { - padding-bottom: $s-8; + padding-bottom: deprecated.$s-8; } } @@ -182,7 +182,7 @@ @extend .button-secondary; inline-size: $sz-40; block-size: $sz-40; - border-radius: $br-circle; + border-radius: deprecated.$br-circle; border: none; &.selected { @extend .button-icon-selected; diff --git a/frontend/src/app/main/ui/workspace/plugins.scss b/frontend/src/app/main/ui/workspace/plugins.scss index 82d0bb6cd1..87af034d70 100644 --- a/frontend/src/app/main/ui/workspace/plugins.scss +++ b/frontend/src/app/main/ui/workspace/plugins.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -17,18 +17,18 @@ max-height: initial; &.plugin-permissions { - width: $s-412; - max-width: $s-412; + width: deprecated.$s-412; + max-width: deprecated.$s-412; } &.plugin-management { - width: $s-472; - max-width: $s-472; + width: deprecated.$s-472; + max-width: deprecated.$s-472; } &.plugin-try-out { - width: $s-452; - max-width: $s-452; + width: deprecated.$s-452; + max-width: deprecated.$s-452; } hr { @@ -50,11 +50,11 @@ } .modal-title { - @include headlineMediumTypography; - margin-block-end: $s-32; + @include deprecated.headlineMediumTypography; + margin-block-end: deprecated.$s-32; color: var(--modal-title-foreground-color); display: flex; - gap: $s-12; + gap: deprecated.$s-12; } .modal-content { @@ -62,29 +62,29 @@ flex-direction: column; .plugin-permissions & { - gap: $s-20; + gap: deprecated.$s-20; } .plugin-management & { - height: $s-380; - max-height: $s-380; + height: deprecated.$s-380; + max-height: deprecated.$s-380; } } .modal-message { - font-size: $fs-14; + font-size: deprecated.$fs-14; color: var(--color-foreground-secondary); } .modal-paragraph { - font-size: $fs-14; + font-size: deprecated.$fs-14; color: var(--color-foreground-primary); } .primary-button { @extend .button-primary; - @include headlineSmallTypography; - padding: $s-0 $s-16; + @include deprecated.headlineSmallTypography; + padding: deprecated.$s-0 deprecated.$s-16; } .button-expand { @@ -94,14 +94,14 @@ .cancel-button { @extend .button-secondary; - @include headlineSmallTypography; - padding: $s-0 $s-16; + @include deprecated.headlineSmallTypography; + padding: deprecated.$s-0 deprecated.$s-16; } .search-icon { - @include flexCenter; - width: $s-20; - padding: 0 0 0 $s-8; + @include deprecated.flexCenter; + width: deprecated.$s-20; + padding: 0 0 0 deprecated.$s-8; svg { @extend .button-icon-small; @@ -111,58 +111,58 @@ .top-bar { display: flex; - gap: $s-8; + gap: deprecated.$s-8; } .open-button { display: flex; justify-content: center; align-items: center; - width: $s-68; - min-width: $s-68; - height: $s-32; + width: deprecated.$s-68; + min-width: deprecated.$s-68; + height: deprecated.$s-32; text-transform: uppercase; } .plugins-list { - padding-top: $s-20; + padding-top: deprecated.$s-20; overflow-x: hidden; overflow-y: auto; flex: 1; display: flex; flex-direction: column; - gap: $s-12; + gap: deprecated.$s-12; } .plugins-list-element { display: flex; - gap: $s-12; + gap: deprecated.$s-12; } .plugin-icon { - min-width: $s-32; - min-height: $s-32; - width: $s-32; - height: $s-32; + min-width: deprecated.$s-32; + min-height: deprecated.$s-32; + width: deprecated.$s-32; + height: deprecated.$s-32; background: var(--button-secondary-background-color-rest); - padding: $s-2; - border-radius: $s-4; + padding: deprecated.$s-2; + border-radius: deprecated.$s-4; } .plugin-description { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; width: 100%; } .plugin-title { - @include bodyMediumTypography; + @include deprecated.bodyMediumTypography; color: var(--color-foreground-primary); } .plugin-summary { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--color-foreground-secondary); } @@ -170,15 +170,15 @@ display: flex; flex-direction: column; align-items: center; - gap: $s-20; + gap: deprecated.$s-20; height: 100%; justify-content: center; - padding: $s-36 0; + padding: deprecated.$s-36 0; } .plugins-empty-logo { - width: $s-44; - height: $s-44; + width: deprecated.$s-44; + height: deprecated.$s-44; border-radius: 50%; display: flex; justify-content: center; @@ -186,25 +186,25 @@ background: var(--color-background-tertiary); svg { - width: $s-16; - height: $s-16; + width: deprecated.$s-16; + height: deprecated.$s-16; stroke: var(--color-foreground-secondary); fill: none; } } .plugins-empty-text { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--color-foreground-primary); } div.input-error { - border: $s-1 solid var(--input-border-color-error); + border: deprecated.$s-1 solid var(--input-border-color-error); } .info { - @include bodySmallTypography; - margin-top: $s-4; + @include deprecated.bodySmallTypography; + margin-top: deprecated.$s-4; &.error { color: var(--input-border-color-error); @@ -217,15 +217,15 @@ div.input-error { .plugins-link { color: var(--color-accent-primary); - font-size: $fs-12; + font-size: deprecated.$fs-12; display: inline-flex; align-items: center; - gap: $s-4; + gap: deprecated.$s-4; svg { - margin-top: calc(-1 * $s-2); - width: $s-12; - height: $s-12; + margin-top: calc(-1 * deprecated.$s-2); + width: deprecated.$s-12; + height: deprecated.$s-12; stroke: var(--color-accent-primary); fill: none; } @@ -237,46 +237,46 @@ div.input-error { .permissions-list { display: flex; flex-direction: column; - gap: $s-24; + gap: deprecated.$s-24; } .permissions-list-entry { display: grid; grid-template-columns: 24px 1fr; - gap: $s-16; + gap: deprecated.$s-16; align-items: center; svg { - width: $s-24; - height: $s-24; + width: deprecated.$s-24; + height: deprecated.$s-24; stroke: var(--color-accent-primary); fill: none; } } .permissions-list-text { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; margin: 0; color: var(--color-foreground-secondary); } .permissions-disclaimer { - @include bodySmallTypography; - padding: $s-16; + @include deprecated.bodySmallTypography; + padding: deprecated.$s-16; background: var(--color-background-quaternary); color: var(--color-foreground-primary); - border-radius: $br-4; + border-radius: deprecated.$br-4; } .action-buttons { display: flex; - gap: $s-12; + gap: deprecated.$s-12; } .discover { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--color-foreground-secondary); - margin-top: $s-24; + margin-top: deprecated.$s-24; a { color: var(--color-accent-primary); diff --git a/frontend/src/app/main/ui/workspace/presence.scss b/frontend/src/app/main/ui/workspace/presence.scss index 22c76e3b02..7c54aafba7 100644 --- a/frontend/src/app/main/ui/workspace/presence.scss +++ b/frontend/src/app/main/ui/workspace/presence.scss @@ -4,18 +4,18 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .active-users, .active-users-opened { - @include buttonStyle; + @include deprecated.buttonStyle; display: flex; flex-direction: row-reverse; justify-content: flex-end; align-items: center; margin: 0; - padding: 0 $s-4; - border-radius: $br-8; + padding: 0 deprecated.$s-4; + border-radius: deprecated.$br-8; .active-users-list { display: flex; flex-direction: row-reverse; @@ -26,8 +26,8 @@ @extend .user-icon; background-color: var(--user-count-background-color); color: var(--user-count-foreground-color); - z-index: $z-index-2; - border: $s-2 solid var(--user-count-foreground-color); + z-index: deprecated.$z-index-2; + border: deprecated.$s-2 solid var(--user-count-foreground-color); } .session-icon { @extend .user-icon; @@ -37,14 +37,14 @@ .active-users-opened { position: absolute; - right: calc(-1 * $s-2); - top: calc(-1 * $s-2); - padding: $s-8; - margin: calc(-1 * $s-2) calc(-1 * $s-4) 0 0; + right: calc(-1 * deprecated.$s-2); + top: calc(-1 * deprecated.$s-2); + padding: deprecated.$s-8; + margin: calc(-1 * deprecated.$s-2) calc(-1 * deprecated.$s-4) 0 0; background-color: var(--menu-background-color); - z-index: $z-index-4; + z-index: deprecated.$z-index-4; .active-users-list { - gap: $s-4; + gap: deprecated.$s-4; .users-num, .session-icon { margin-left: 0; diff --git a/frontend/src/app/main/ui/workspace/right_header.scss b/frontend/src/app/main/ui/workspace/right_header.scss index 6f1969d9b3..e6d7ea2092 100644 --- a/frontend/src/app/main/ui/workspace/right_header.scss +++ b/frontend/src/app/main/ui/workspace/right_header.scss @@ -4,23 +4,23 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .workspace-header-right { display: flex; justify-content: space-between; align-items: center; - min-width: $s-256; - padding: $s-8; - gap: $s-8; + min-width: deprecated.$s-256; + padding: deprecated.$s-8; + gap: deprecated.$s-8; background-color: var(--panel-background-color); } .users-section { position: relative; - min-width: $s-32; - max-width: $s-72; - padding: $s-4 $s-6; + min-width: deprecated.$s-32; + max-width: deprecated.$s-72; + padding: deprecated.$s-4 deprecated.$s-6; } .separator { @@ -28,19 +28,19 @@ } .zoom-widget { - @include buttonStyle; + @include deprecated.buttonStyle; display: flex; align-items: center; justify-content: center; - height: $s-28; - max-width: $s-48; - width: $s-48; - border-radius: $br-8; + height: deprecated.$s-28; + max-width: deprecated.$s-48; + width: deprecated.$s-48; + border-radius: deprecated.$br-8; .label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; height: 100%; - padding: $s-8 0; + padding: deprecated.$s-8 0; color: var(--button-tertiary-foreground-color-rest); } @@ -59,15 +59,15 @@ .dropdown { @extend .menu-dropdown; - right: $s-2; - top: calc($s-2 + $s-48); - width: $s-272; + right: deprecated.$s-2; + top: calc(deprecated.$s-2 + deprecated.$s-48); + width: deprecated.$s-272; } .basic-zoom-bar { display: flex; justify-content: space-between; - padding: $s-6; + padding: deprecated.$s-6; cursor: auto; } @@ -76,19 +76,19 @@ } .zoom-text { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - min-width: $s-48; + min-width: deprecated.$s-48; padding: 0; - margin: 0 $s-2; + margin: 0 deprecated.$s-2; color: var(--modal-title-foreground-color); } .reset-btn { @extend .button-tertiary; color: var(--button-tertiary-foreground-color-hover); - height: $s-28; - border-radius: $br-8; + height: deprecated.$s-28; + border-radius: deprecated.$br-8; } .zoom-option { @@ -115,17 +115,17 @@ .comments-btn { @extend .button-tertiary; - border-radius: $br-8; + border-radius: deprecated.$br-8; margin: 0; - height: $s-28; - width: $s-28; + height: deprecated.$s-28; + width: deprecated.$s-28; border: none; svg { @extend .button-icon; stroke: var(--icon-foreground); - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; } &:hover { @@ -144,17 +144,17 @@ .history-button { @extend .button-tertiary; - border-radius: $br-8; + border-radius: deprecated.$br-8; margin: 0; - height: $s-28; - width: $s-28; + height: deprecated.$s-28; + width: deprecated.$s-28; border: none; svg { @extend .button-icon; stroke: var(--icon-foreground); - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; } &:hover { @@ -172,17 +172,17 @@ } .persistence-status-widget { - @include flexCenter; - width: $s-28; - height: $s-28; + @include deprecated.flexCenter; + width: deprecated.$s-28; + height: deprecated.$s-28; } .status-icon { - @include flexCenter; - width: $s-24; - height: $s-24; + @include deprecated.flexCenter; + width: deprecated.$s-24; + height: deprecated.$s-24; margin: 0; - border-radius: $br-circle; + border-radius: deprecated.$br-circle; svg { @extend .button-icon; @@ -214,16 +214,16 @@ .share-btn, .viewer-btn { @extend .button-tertiary; - border-radius: $br-8; + border-radius: deprecated.$br-8; margin: 0; - width: $s-28; - height: $s-28; + width: deprecated.$s-28; + height: deprecated.$s-28; border: none; svg { @extend .button-icon; - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; stroke: var(--icon-foreground); } diff --git a/frontend/src/app/main/ui/workspace/shapes/text/viewport_texts_html.cljs b/frontend/src/app/main/ui/workspace/shapes/text/viewport_texts_html.cljs index 19a10a1757..fda9e4e911 100644 --- a/frontend/src/app/main/ui/workspace/shapes/text/viewport_texts_html.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/text/viewport_texts_html.cljs @@ -16,7 +16,6 @@ [app.common.types.modifiers :as ctm] [app.common.types.text :as txt] [app.common.uuid :as uuid] - [app.main.data.workspace.modifiers :as mdwm] [app.main.data.workspace.texts :as dwt] [app.main.fonts :as fonts] [app.main.refs :as refs] @@ -44,7 +43,6 @@ (gpt/point old-sr))] (-> shape (gsh/transform-shape (ctm/move modifiers deltav)) - (mdwm/update-grow-type shape) (dissoc :modifiers))) shape)) diff --git a/frontend/src/app/main/ui/workspace/sidebar.cljs b/frontend/src/app/main/ui/workspace/sidebar.cljs index a6b8e08078..3289e18bb9 100644 --- a/frontend/src/app/main/ui/workspace/sidebar.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar.cljs @@ -303,7 +303,6 @@ [:> (mf/provider muc/sidebar) {:value :right} [:> (mf/provider muc/active-tokens-by-type) {:value active-tokens-by-type} - [:aside {:class (stl/css-case :right-settings-bar true :not-expand (not can-be-expanded?) diff --git a/frontend/src/app/main/ui/workspace/sidebar.scss b/frontend/src/app/main/ui/workspace/sidebar.scss index aeca991142..cfb357eedd 100644 --- a/frontend/src/app/main/ui/workspace/sidebar.scss +++ b/frontend/src/app/main/ui/workspace/sidebar.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/_sizes.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; $width-settings-bar: $sz-318; $width-settings-bar-max: $sz-500; @@ -15,7 +15,7 @@ $width-settings-bar-max: $sz-500; grid-template-areas: "header header" "content resize"; - grid-template-rows: $s-52 1fr; + grid-template-rows: deprecated.$s-52 1fr; grid-template-columns: 1fr 0; position: relative; grid-area: left-sidebar; @@ -25,7 +25,7 @@ $width-settings-bar-max: $sz-500; background-color: var(--panel-background-color); height: 100vh; max-height: 100vh; - z-index: $z-index-1; + z-index: deprecated.$z-index-1; .resize-area { grid-area: resize; @@ -33,7 +33,7 @@ $width-settings-bar-max: $sz-500; } .layers-tab { - padding-top: $s-4; + padding-top: deprecated.$s-4; overflow-x: hidden; } @@ -43,21 +43,21 @@ $width-settings-bar-max: $sz-500; .settings-bar-content { grid-area: content; - right: calc(-1 * $s-8); + right: calc(-1 * deprecated.$s-8); } .resize-area { position: absolute; top: 0; left: unset; - z-index: $z-index-4; - width: $s-8; + z-index: deprecated.$z-index-4; + width: deprecated.$s-8; cursor: ew-resize; height: 100%; } .tab-spacing { - margin-inline: $s-12; + margin-inline: deprecated.$s-12; } .right-settings-bar { @@ -67,7 +67,7 @@ $width-settings-bar-max: $sz-500; height: 100vh; width: $width-settings-bar; background-color: var(--panel-background-color); - z-index: $z-index-1; + z-index: deprecated.$z-index-1; &.not-expand { max-width: $width-settings-bar; } @@ -80,7 +80,7 @@ $width-settings-bar-max: $sz-500; grid-template-columns: 100%; grid-template-rows: 100%; - height: calc(100vh - $s-52); + height: calc(100vh - deprecated.$s-52); overflow: hidden; } } @@ -90,13 +90,13 @@ $width-settings-bar-max: $sz-500; position: absolute; left: 0; width: 100%; - padding: $s-3 0 $s-1 0; - height: $s-6; + padding: deprecated.$s-3 0 deprecated.$s-1 0; + height: deprecated.$s-6; cursor: ns-resize; } .resize-handle-horiz { - border-bottom: $s-2 solid var(--resize-area-border-color); + border-bottom: deprecated.$s-2 solid var(--resize-area-border-color); cursor: ns-resize; } @@ -107,11 +107,11 @@ $width-settings-bar-max: $sz-500; .collapse-sidebar-button { --collapse-icon-color: var(--color-foreground-secondary); - @include flexCenter; - @include buttonStyle; + @include deprecated.flexCenter; + @include deprecated.buttonStyle; height: 100%; - width: $s-24; - border-radius: $br-5; + width: deprecated.$s-24; + border-radius: deprecated.$br-5; color: var(--collapse-icon-color); transform: rotate(180deg); &:hover { @@ -122,5 +122,5 @@ $width-settings-bar-max: $sz-500; .versions-tab { width: 100%; overflow: hidden; - height: calc(100vh - $s-88); + height: calc(100vh - deprecated.$s-88); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index 50c93cc8d5..2227de25b9 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -137,21 +137,30 @@ on-menu-close (mf/use-fn #(swap! filters* assoc :open-menu false)) + ;; Memoize options to prevent infinite re-render loops when dev-tools are open. + ;; + ;; Problem: When dev-tools are open, they constantly monitor the application state, + ;; triggering frequent updates to okulary refs. This causes the parent component to + ;; re-render constantly, recreating the options array on every render. + ;; + ;; The context-menu* component has a mf/with-effect that depends on [options]. + ;; When options are recreated (even with identical content), the effect runs, + ;; updating the internal state, which triggers another re-render, creating + ;; an infinite loop: render -> new options -> effect -> state update -> render... options - [{:name (tr "workspace.assets.box-filter-all") - :id "all" - :handler on-section-filter-change} - {:name (tr "workspace.assets.components") - :id "components" - :handler on-section-filter-change} - - {:name (tr "workspace.assets.colors") - :id "colors" - :handler on-section-filter-change} - - {:name (tr "workspace.assets.typography") - :id "typographies" - :handler on-section-filter-change}]] + (mf/with-memo [on-section-filter-change] + [{:name (tr "workspace.assets.box-filter-all") + :id "all" + :handler on-section-filter-change} + {:name (tr "workspace.assets.components") + :id "components" + :handler on-section-filter-change} + {:name (tr "workspace.assets.colors") + :id "colors" + :handler on-section-filter-change} + {:name (tr "workspace.assets.typography") + :id "typographies" + :handler on-section-filter-change}])] [:article {:class (stl/css :assets-bar)} [:div {:class (stl/css :assets-header)} @@ -178,18 +187,19 @@ :class (stl/css-case :section-button true :opened menu-open?)} deprecated-icon/filter-icon]] - (when menu-open? - [:> context-menu* - {:on-close on-menu-close - :selectable true - :selected section - :show true - :fixed true - :min-width true - :width size - :top 158 - :left 18 - :options options}]) + + [:> context-menu* + {:on-close on-menu-close + :selectable true + :selected section + :show menu-open? + :fixed true + :min-width true + :width size + :top 158 + :left 18 + :options options}] + [:> icon-button* {:variant "ghost" :aria-label (tr "workspace.assets.sort") :on-click toggle-ordering diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.scss b/frontend/src/app/main/ui/workspace/sidebar/assets.scss index 9223b299c9..f89069cca5 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.scss @@ -4,69 +4,69 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .assets-bar { display: grid; height: 100%; grid-auto-rows: max-content; // TODO: ugly hack :( Fix this! we shouldn't be hardcoding this height - height: calc(100vh - $s-92); + height: calc(100vh - deprecated.$s-92); scrollbar-gutter: stable; overflow-y: auto; - padding-top: $s-8; + padding-top: deprecated.$s-8; } .libraries-button { @extend .button-secondary; - @include uppercaseTitleTipography; - gap: $s-2; - height: $s-32; + @include deprecated.uppercaseTitleTipography; + gap: deprecated.$s-2; + height: deprecated.$s-32; width: 100%; - margin-bottom: $s-4; - border-radius: $s-8; + margin-bottom: deprecated.$s-4; + border-radius: deprecated.$s-8; &:hover { background-color: var(--button-secondary-background-color-hover); color: var(--button-secondary-foreground-color-hover); - border: $s-1 solid var(--button-secondary-border-color-hover); + border: deprecated.$s-1 solid var(--button-secondary-border-color-hover); } &:focus { background-color: var(--button-secondary-background-color-focus); color: var(--button-secondary-foreground-color-focus); - border: $s-1 solid var(--button-secondary-border-color-focus); + border: deprecated.$s-1 solid var(--button-secondary-border-color-focus); } } .add-library-button { @extend .button-primary; - @include uppercaseTitleTipography; - gap: $s-2; - height: $s-32; + @include deprecated.uppercaseTitleTipography; + gap: deprecated.$s-2; + height: deprecated.$s-32; width: 100%; - margin-bottom: $s-4; - border-radius: $s-8; + margin-bottom: deprecated.$s-4; + border-radius: deprecated.$s-8; } .section-button { - @include flexCenter; - @include buttonStyle; - height: $s-32; - width: $s-32; + @include deprecated.flexCenter; + @include deprecated.buttonStyle; + height: deprecated.$s-32; + width: deprecated.$s-32; margin: 0; - border: $s-1 solid var(--input-border-color-rest); - border-radius: $br-8 $br-2 $br-2 $br-8; + border: deprecated.$s-1 solid var(--input-border-color-rest); + border-radius: deprecated.$br-8 deprecated.$br-2 deprecated.$br-2 deprecated.$br-8; background-color: var(--input-background-color-rest); svg { - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; stroke: var(--icon-foreground); } &:focus { - border: $s-1 solid var(--input-border-color-focus); + border: deprecated.$s-1 solid var(--input-border-color-focus); outline: 0; background-color: var(--input-background-color-focus); color: var(--input-foreground-color-focus); @@ -77,7 +77,7 @@ } &:hover { - border: $s-1 solid var(--input-border-color-hover); + border: deprecated.$s-1 solid var(--input-border-color-hover); background-color: var(--input-background-color-hover); svg { @@ -86,7 +86,7 @@ } &:focus { - border: $s-1 solid var(--input-border-color-focus); + border: deprecated.$s-1 solid var(--input-border-color-focus); outline: 0; background-color: var(--input-background-color-focus); color: var(--input-foreground-color-focus); @@ -103,37 +103,37 @@ } .sections-container { - @include menuShadow; - @include flexColumn; + @include deprecated.menuShadow; + @include deprecated.flexColumn; position: absolute; - top: $s-84; - left: $s-12; - width: $s-192; - padding: $s-4; - border-radius: $br-8; + top: deprecated.$s-84; + left: deprecated.$s-12; + width: deprecated.$s-192; + padding: deprecated.$s-4; + border-radius: deprecated.$br-8; background-color: var(--menu-background-color); - z-index: $z-index-2; + z-index: deprecated.$z-index-2; } .section-item { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; justify-content: space-between; width: 100%; - padding: $s-6; - border-radius: $br-8; + padding: deprecated.$s-6; + border-radius: deprecated.$br-8; } .section-btn { - @include buttonStyle; + @include deprecated.buttonStyle; } .assets-header { - padding: 0 0 $s-24 $s-12; + padding: 0 0 deprecated.$s-24 deprecated.$s-12; } .search-wrapper { display: flex; - gap: $s-4; + gap: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/colors.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets/colors.cljs index 25cfffa002..8eb686483e 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/colors.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/colors.cljs @@ -9,7 +9,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] - [app.common.files.helpers :as cfh] + [app.common.path-names :as cpn] [app.main.constants :refer [max-input-length]] [app.main.data.event :as ev] [app.main.data.modal :as modal] @@ -75,7 +75,7 @@ (mf/use-fn (mf/deps color file-id) (fn [attrs] - (let [name (cfh/merge-path-item (:path color) (:name color)) + (let [name (cpn/merge-path-item (:path color) (:name color)) color (-> attrs (assoc :id (:id color)) (assoc :name name))] @@ -128,6 +128,7 @@ {:x (.-clientX ^js event) :y (.-clientY ^js event) :on-accept edit-color + :origin :assets :data color :position :right}))) @@ -168,9 +169,9 @@ on-color-drag-start (mf/use-fn - (mf/deps color file-id selected item-ref read-only?) + (mf/deps color file-id selected item-ref read-only? editing?) (fn [event] - (if read-only? + (if (or read-only? editing?) (dom/prevent-default event) (cmm/on-asset-drag-start event file-id color selected item-ref :colors identity)))) @@ -220,7 +221,7 @@ :on-key-down input-key-down :auto-focus true :max-length max-input-length - :default-value (cfh/merge-path-item (:path color) (:name color))}] + :default-value (cpn/merge-path-item (:path color) (:name color))}] [:div {:title (if (= (:name color) default-name) default-name @@ -235,7 +236,7 @@ [:span {:class (stl/css :default-name :default-name-with-color)} default-name]])]) (when local? - [:& cmm/assets-context-menu + [:> cmm/assets-context-menu* {:on-close on-close-menu :state @menu-state :options [(when-not (or multi-colors? multi-assets?) @@ -301,12 +302,12 @@ :on-drag-leave on-drag-leave :on-drag-over dom/prevent-default :on-drop on-drop} - [:& grp/asset-group-title {:file-id file-id - :section :colors - :path prefix - :group-open? group-open? - :on-rename on-rename-group - :on-ungroup on-ungroup}] + [:> grp/asset-group-title* {:file-id file-id + :section :colors + :path prefix + :is-group-open group-open? + :on-rename on-rename-group + :on-ungroup on-ungroup}] (when group-open? [:* (let [colors (get groups "" [])] @@ -344,7 +345,7 @@ (for [[path-item content] groups] (when-not (empty? path-item) [:& colors-group {:file-id file-id - :prefix (cfh/merge-path-item prefix path-item) + :prefix (cpn/merge-path-item prefix path-item) :key (dm/str "group-" path-item) :groups content :open-groups open-groups @@ -362,9 +363,10 @@ :colors colors :selected-full selected-full}]))])])) -(mf/defc colors-section - [{:keys [file-id local? colors open? force-open? open-status-ref selected reverse-sort? - on-asset-click on-assets-delete on-clear-selection] :as props}] +(mf/defc colors-section* + [{:keys [file-id colors open-status-ref selected + is-local is-open is-force-open is-reverse-sort + on-asset-click on-assets-delete on-clear-selection]}] (let [selected (:colors selected) selected-full (mf/with-memo [selected colors] @@ -380,8 +382,8 @@ (seq (:graphics selected)) (seq (:typographies selected))) - groups (mf/with-memo [colors reverse-sort?] - (grp/group-assets colors reverse-sort?)) + groups (mf/with-memo [colors is-reverse-sort] + (grp/group-assets colors is-reverse-sort)) read-only? (mf/use-ctx ctx/workspace-read-only?) @@ -407,6 +409,7 @@ {:x x-position :y y-position :on-accept add-color + :origin :assets :data {:color "#406280" :opacity 1} :position :right}))))) @@ -482,13 +485,13 @@ (mf/use-fn (mf/deps groups on-asset-click) (partial on-asset-click groups))] - [:& cmm/asset-section {:file-id file-id - :title (tr "workspace.assets.colors") - :section :colors - :assets-count (count colors) - :open? open?} - (when local? - [:& cmm/asset-section-block {:role :title-button} + [:> cmm/asset-section* {:file-id file-id + :title (tr "workspace.assets.colors") + :section :colors + :assets-count (count colors) + :is-open is-open} + (when is-local + [:> cmm/asset-section-block* {:role :title-button} (when-not read-only? [:> icon-button* {:variant "ghost" :aria-label (tr "workspace.assets.colors.add-color") @@ -496,13 +499,13 @@ :icon i/add}])]) - [:& cmm/asset-section-block {:role :content} + [:> cmm/asset-section-block* {:role :content} [:& colors-group {:file-id file-id :prefix "" :groups groups :open-groups open-groups - :force-open? force-open? - :local? local? + :force-open? is-force-open + :local? is-local :selected selected :multi-colors? multi-colors? :multi-assets? multi-assets? diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/colors.scss b/frontend/src/app/main/ui/workspace/sidebar/assets/colors.scss index 911df2b633..e2c86936cb 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/colors.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/colors.scss @@ -4,19 +4,19 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; // TODO: we should be using subgrid in the common "assets component" to avoid // using this SCSS variable here (we cannot use a CSS var in this CSS module because // the elements are not part of the same cascade). -$assets-button-width: $s-28; +$assets-button-width: deprecated.$s-28; .colors-group { - margin-top: $s-4; + margin-top: deprecated.$s-4; } .asset-list { - padding: 0 0 0 $s-4; + padding: 0 0 0 deprecated.$s-4; } .asset-list-item { @@ -24,24 +24,24 @@ $assets-button-width: $s-28; display: grid; grid-template-columns: auto 1fr #{$assets-button-width}; align-items: center; - height: $s-32; - padding: $s-8; + height: deprecated.$s-32; + padding: deprecated.$s-8; padding-inline-end: 0; - margin-bottom: $s-4; - border-radius: $br-8; + margin-bottom: deprecated.$s-4; + border-radius: deprecated.$br-8; background-color: var(--assets-item-background-color); cursor: pointer; &.selected { - border: $s-1 solid var(--assets-item-border-color); + border: deprecated.$s-1 solid var(--assets-item-border-color); } &.editing { - border: $s-1 solid var(--input-border-color-focus); + border: deprecated.$s-1 solid var(--input-border-color-focus); input.element-name { - @include textEllipsis; - @include bodySmallTypography; - @include removeInputStyle; + @include deprecated.textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.removeInputStyle; flex-grow: 1; margin: 0; color: var(--layer-row-foreground-color); @@ -53,41 +53,41 @@ $assets-button-width: $s-28; } .bullet-block { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; justify-content: flex-start; - margin-inline-end: $s-4; + margin-inline-end: deprecated.$s-4; } .name-block { - @include bodySmallTypography; - @include textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; margin: 0; color: var(--assets-item-name-foreground-color); } .default-name { - margin-inline-start: $s-4; + margin-inline-start: deprecated.$s-4; color: var(--assets-item-name-foreground-color-rest); } .default-name-with-color { - margin-left: $s-6; + margin-left: deprecated.$s-6; } .element-name { - @include textEllipsis; + @include deprecated.textEllipsis; color: var(--color-foreground-primary); } .grid-placeholder { - height: $s-2; - margin-bottom: $s-2; + height: deprecated.$s-2; + margin-bottom: deprecated.$s-2; background-color: var(--color-accent-primary); } .drop-space { - height: $s-12; + height: deprecated.$s-12; } .dragging { @@ -96,7 +96,7 @@ $assets-button-width: $s-28; left: 0; width: 100%; height: 100%; - border-radius: $s-8; + border-radius: deprecated.$s-8; background-color: var(--assets-item-background-color-drag); - border: $s-2 solid var(--assets-item-border-color-drag); + border: deprecated.$s-2 solid var(--assets-item-border-color-drag); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/common.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets/common.cljs index 6ae9a43479..130da0bb82 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/common.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/common.cljs @@ -10,6 +10,7 @@ (:require [app.common.data.macros :as dm] [app.common.files.helpers :as cfh] + [app.common.path-names :as cpn] [app.common.spec :as us] [app.common.thumbnails :as thc] [app.common.types.component :as ctk] @@ -62,7 +63,7 @@ (let [path (if (str/empty? path) (if reverse? "z" "a") path)] - (str/lower (cfh/merge-path-item path name)))) + (str/lower (cpn/merge-path-item path name)))) (if ^boolean reverse? > <)) :always @@ -71,30 +72,30 @@ (defn add-group [asset group-name] (-> (:path asset) - (cfh/merge-path-item group-name) - (cfh/merge-path-item (:name asset)))) + (cpn/merge-path-item group-name) + (cpn/merge-path-item (:name asset)))) (defn rename-group [asset path last-path] (-> (:path asset) (str/slice 0 (count path)) - (cfh/split-path) + (cpn/split-path) butlast (vec) (conj last-path) - (cfh/join-path) + (cpn/join-path) (str (str/slice (:path asset) (count path))) - (cfh/merge-path-item (:name asset)))) + (cpn/merge-path-item (:name asset)))) (defn ungroup [asset path] (-> (:path asset) (str/slice 0 (count path)) - (cfh/split-path) + (cpn/split-path) butlast - (cfh/join-path) + (cpn/join-path) (str (str/slice (:path asset) (count path))) - (cfh/merge-path-item (:name asset)))) + (cpn/merge-path-item (:name asset)))) (s/def ::asset-name ::us/not-empty-string) (s/def ::name-group-form @@ -116,8 +117,7 @@ [state] (assoc state :open? false)) -(mf/defc assets-context-menu - {::mf/wrap-props false} +(mf/defc assets-context-menu* [{:keys [options state on-close]}] [:> context-menu* {:show (:open? state) @@ -139,9 +139,8 @@ [section assets-count] (or (not (= section :tokens)) (and (< 0 assets-count) (= section :tokens)))) -(mf/defc asset-section - {::mf/wrap-props false} - [{:keys [children file-id title section assets-count icon open? on-click]}] +(mf/defc asset-section* + [{:keys [children file-id title section assets-count icon is-open on-click]}] (let [children (-> (array/normalize-to-array children) (array/without-nils)) @@ -153,10 +152,10 @@ on-collapsed (mf/use-fn - (mf/deps file-id section open? assets-count) + (mf/deps file-id section is-open assets-count) (fn [_] (when (< 0 assets-count) - (st/emit! (dw/set-assets-section-open file-id section (not open?)))))) + (st/emit! (dw/set-assets-section-open file-id section (not is-open)))))) title (mf/html @@ -174,23 +173,22 @@ [:div {:class (stl/css-case :asset-section true :opened (and (< 0 assets-count) - open?)) + is-open)) :on-click on-click} [:> title-bar* {:collapsable (< 0 assets-count) - :collapsed (not open?) + :collapsed (not is-open) :all-clickable true :on-collapsed on-collapsed :add-icon-gap (= 0 assets-count) :title title} buttons] (when ^boolean (and (< 0 assets-count) - open?) - [:div {:class (stl/css-case :title-spacing open?)} + is-open) + [:div {:class (stl/css-case :title-spacing is-open)} content])])) -(mf/defc asset-section-block - {::mf/wrap-props false} +(mf/defc asset-section-block* [{:keys [children]}] [:* children]) @@ -282,7 +280,7 @@ (st/emit! (rename (:id target-asset) - (cfh/merge-path-item prefix (:name target-asset)))))))) + (cpn/merge-path-item prefix (:name target-asset)))))))) (mf/defc component-item-thumbnail* "Component that renders the thumbnail image or the original SVG." @@ -393,7 +391,7 @@ ;; and the variant-container in which it will be restored still exists (fn [shape] (let [component (find-component shape true) - main (ctk/get-component-root component) + main (ctk/get-deleted-component-root component) objects (dm/get-in libraries [(:component-file shape) :data :pages-index diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/common.scss b/frontend/src/app/main/ui/workspace/sidebar/assets/common.scss index 0e21e53702..257bd24b3c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/common.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/common.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .title-name { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; display: flex; align-items: center; flex-grow: 1; @@ -15,7 +15,7 @@ } .title-tokens { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; text-transform: capitalize; } @@ -24,12 +24,12 @@ } .section-icon { - @include flexCenter; - padding-right: $s-2; + @include deprecated.flexCenter; + padding-right: deprecated.$s-2; svg { - @include flexCenter; - height: $s-16; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-16; + width: deprecated.$s-16; fill: none; stroke: currentColor; } @@ -38,37 +38,37 @@ .section-name { display: flex; align-items: center; - margin: 0 $s-2; + margin: 0 deprecated.$s-2; } .num-assets { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - padding-left: $s-8; + padding-left: deprecated.$s-8; } .title-spacing { - padding-block-start: $s-4; + padding-block-start: deprecated.$s-4; } .asset-section.opened { - margin-bottom: $s-12; + margin-bottom: deprecated.$s-12; } .drag-counter { - @include bodySmallTypography; - @include textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; position: absolute; bottom: 0; left: 0; width: 100%; - height: calc($s-24 - $s-2); + height: calc(deprecated.$s-24 - deprecated.$s-2); background-color: var(--assets-item-name-background-color); color: var(--assets-item-name-foreground-color); display: flex; justify-content: flex-start; align-items: center; - margin: $s-4; - padding-inline: $s-4; + margin: deprecated.$s-4; + padding-inline: deprecated.$s-4; z-index: 2; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/components.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets/components.cljs index 288dbe4f87..b7f8cc121d 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/components.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/components.cljs @@ -9,7 +9,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] - [app.common.files.helpers :as cfh] + [app.common.path-names :as cpn] [app.common.types.component :as ctc] [app.common.types.file :as ctf] [app.main.data.event :as ev] @@ -21,7 +21,7 @@ [app.main.data.workspace.variants :as dwv] [app.main.refs :as refs] [app.main.store :as st] - [app.main.ui.components.editable-label :refer [editable-label]] + [app.main.ui.components.editable-label :refer [editable-label*]] [app.main.ui.components.file-uploader :refer [file-uploader]] [app.main.ui.components.radio-buttons :refer [radio-button radio-buttons]] [app.main.ui.context :as ctx] @@ -51,9 +51,8 @@ container (ctf/get-component-page data component)] [root-shape container])) -(mf/defc components-item - {::mf/wrap-props false} - [{:keys [component renaming listing-thumbs? selected +(mf/defc components-item* + [{:keys [component renaming is-listing-thumbs selected file-id on-asset-click on-context-menu on-drag-start do-rename cancel-rename selected-full selected-paths is-local num-variants]}] @@ -66,6 +65,7 @@ component-id (:id component) visible? (h/use-visible item-ref :once? true) + renaming? (= renaming (:id component)) ;; NOTE: we don't use reactive deref for it because we don't ;; really need rerender on any change on the file change. If @@ -83,12 +83,13 @@ on-component-double-click (mf/use-fn - (mf/deps file-id component is-local) + (mf/deps file-id component is-local renaming?) (fn [event] (dom/stop-propagation event) - (if is-local - (st/emit! (dwl/go-to-local-component :id component-id)) - (st/emit! (dwl/go-to-component-file file-id component false))))) + (when-not renaming? + (if is-local + (st/emit! (dwl/go-to-local-component :id component-id)) + (st/emit! (dwl/go-to-component-file file-id component false)))))) on-drop (mf/use-fn @@ -114,24 +115,22 @@ on-component-drag-start (mf/use-fn - (mf/deps file-id component selected item-ref on-drag-start read-only? is-local) + (mf/deps file-id component selected item-ref on-drag-start read-only? renaming? is-local) (fn [event] - (if read-only? + (if (or read-only? renaming?) (dom/prevent-default event) (cmm/on-asset-drag-start event file-id component selected item-ref :components on-drag-start)))) on-context-menu (mf/use-fn (mf/deps on-context-menu component-id) - (partial on-context-menu component-id)) - - renaming? (= renaming (:id component))] + (partial on-context-menu component-id))] [:div {:ref item-ref - :class (stl/css-case :selected (contains? selected (:id component)) - :grid-cell listing-thumbs? - :enum-item (not listing-thumbs?) - :enum-item-with-mark (and (not listing-thumbs?) (ctc/is-variant? component))) + :class (stl/css-case :component-item true + :component-item-grid is-listing-thumbs + :component-item-list (not is-listing-thumbs) + :component-item-selected (contains? selected (:id component))) :id (dm/str "component-shape-id-" (:id component)) :draggable (and (not read-only?) (not renaming?)) :on-click on-component-click @@ -146,33 +145,36 @@ (some? container)) [:* [:* - [:& editable-label - {:class (stl/css-case :cell-name listing-thumbs? - :item-name (not listing-thumbs?) - :editing renaming?) - :value (cfh/merge-path-item (:path component) (:name component)) - :tooltip (cfh/merge-path-item (:path component) (:name component)) - :display-value (:name component) - :editing renaming? - :disable-dbl-click true - :on-change do-rename - :on-cancel cancel-rename}] + [:div {:class (stl/css-case :component-item-grid-name is-listing-thumbs + :component-item-list-name (not is-listing-thumbs) + :component-item-editing renaming?)} + [:> editable-label* + {:class-input (stl/css-case :component-item-grid-input is-listing-thumbs + :component-item-list-input (not is-listing-thumbs)) + :class-label (stl/css-case :component-item-grid-label is-listing-thumbs + :component-item-list-label (not is-listing-thumbs)) + :value (cpn/merge-path-item (:path component) (:name component)) + :tooltip (cpn/merge-path-item (:path component) (:name component)) + :display-value (:name component) + :is-editing renaming? + :on-change do-rename + :on-cancel cancel-rename}]] (when ^boolean dragging? - [:div {:class (stl/css :dragging)}])] + [:div {:class (stl/css :component-item-dragging)}])] [:> cmm/component-item-thumbnail* {:file-id file-id - :class (stl/css-case :thumbnail true - :asset-list-thumbnail (not listing-thumbs?)) + :class (stl/css-case :component-item-thumbnail true + :component-item-list-thumbnail (not is-listing-thumbs)) :root-shape root-shape :component component :container container :is-hidden (not visible?)}] + (when (ctc/is-variant? component) - [:span {:class (stl/css-case :variant-mark-cell listing-thumbs? - :variant-mark true - :component-icon true) + [:span {:class (stl/css-case :component-item-variant-mark true + :component-item-grid-variant-mark is-listing-thumbs) :title (tr "workspace.assets.components.num-variants" num-variants)} [:> icon* {:icon-id i/variant :size "s"}]])])])) @@ -188,15 +190,14 @@ 0 m)) -(mf/defc components-group - {::mf/wrap-props false} - [{:keys [file-id prefix groups open-groups force-open? renaming listing-thumbs? selected on-asset-click +(mf/defc components-group* + [{:keys [file-id prefix groups open-groups is-force-open renaming is-listing-thumbs selected on-asset-click on-drag-start do-rename cancel-rename on-rename-group on-group on-ungroup on-context-menu selected-full is-local count-variants on-group-combine-variants]}] (let [group-open? (if (false? (get open-groups prefix)) ;; if the user has closed it specifically, respect that false - (or ^boolean force-open? + (or ^boolean is-force-open ^boolean (get open-groups prefix (if (= prefix "") true false)))) dragging* (mf/use-state false) dragging? (deref dragging*) @@ -238,40 +239,41 @@ :on-drag-leave on-drag-leave :on-drag-over dom/prevent-default :on-drop on-drop} - [:& grp/asset-group-title + [:> grp/asset-group-title* {:file-id file-id :section :components :path prefix - :group-open? group-open? - :can-combine? can-combine? + :is-group-open group-open? + :is-can-combine can-combine? :on-rename on-rename-group :on-ungroup on-ungroup :on-group-combine-variants on-group-combine-variants}] (when group-open? [:* - [:div {:class (stl/css-case :asset-grid listing-thumbs? - :asset-enum (not listing-thumbs?)) + [:div {:class (stl/css-case :component-group-grid is-listing-thumbs + :component-group-list (not is-listing-thumbs)) :on-drag-enter on-drag-enter :on-drag-leave on-drag-leave :on-drag-over dom/prevent-default :on-drop on-drop} (when ^boolean dragging? - [:div {:class (stl/css :grid-placeholder)} "\u00A0"]) + [:div {:class (stl/css :component-group-placeholder)} "\u00A0"]) (when (and (empty? components) (some? groups) is-local) - [:div {:class (stl/css-case :drop-space true - :drop-space-small (not dragging?))}]) + [:div {:class (stl/css-case :component-group-drop-space true + :component-group-drop-space-small (not dragging?))}]) + ;; FIXME: This could be in the thousands. We need to think about paginate this (for [component components] - [:& components-item + [:> components-item* {:component component :key (dm/str "component-" (:id component)) :renaming renaming - :listing-thumbs? listing-thumbs? + :is-listing-thumbs is-listing-thumbs :file-id file-id :selected selected :selected-full selected-full @@ -287,32 +289,32 @@ (for [[path-item content] groups] (when-not (empty? path-item) - [:& components-group {:file-id file-id - :key path-item - :prefix (cfh/merge-path-item prefix path-item) - :groups content - :open-groups open-groups - :force-open? force-open? - :renaming renaming - :listing-thumbs? listing-thumbs? - :selected selected - :on-asset-click on-asset-click - :on-drag-start on-drag-start - :do-rename do-rename - :cancel-rename cancel-rename - :on-rename-group on-rename-group - :on-ungroup on-ungroup - :on-context-menu on-context-menu - :on-group-combine-variants on-group-combine-variants - :selected-full selected-full - :is-local is-local - :count-variants count-variants}]))])])) + [:> components-group* {:file-id file-id + :key path-item + :prefix (cpn/merge-path-item prefix path-item) + :groups content + :open-groups open-groups + :is-force-open is-force-open + :renaming renaming + :is-listing-thumbs is-listing-thumbs + :selected selected + :on-asset-click on-asset-click + :on-drag-start on-drag-start + :do-rename do-rename + :cancel-rename cancel-rename + :on-rename-group on-rename-group + :on-ungroup on-ungroup + :on-context-menu on-context-menu + :on-group-combine-variants on-group-combine-variants + :selected-full selected-full + :is-local is-local + :count-variants count-variants}]))])])) -(mf/defc components-section - {::mf/wrap-props false} - [{:keys [file-id is-local components listing-thumbs? open? force-open? - reverse-sort? selected on-asset-click on-assets-delete - on-clear-selection open-status-ref delete-component count-variants]}] +(mf/defc components-section* + [{:keys [file-id components selected open-status-ref + is-local is-listing-thumbs is-open is-force-open is-reverse-sort + on-asset-click on-assets-delete on-clear-selection + delete-component count-variants]}] (let [input-ref (mf/use-ref nil) @@ -356,8 +358,8 @@ (let [page (:main-instance-page (first selected-and-current-full))] (every? #(= page (:main-instance-page %)) selected-and-current-full))) - groups (mf/with-memo [components reverse-sort?] - (grp/group-assets components reverse-sort?)) + groups (mf/with-memo [components is-reverse-sort] + (grp/group-assets components is-reverse-sort)) add-component (mf/use-fn @@ -457,7 +459,7 @@ (st/emit! (dwu/start-undo-transaction undo-id)) (run! st/emit! (->> components - (filter #(cfh/inside-path? (:path %) path)) + (filter #(cpn/inside-path? (:path %) path)) (map #(dwv/rename-comp-or-variant-and-main (:id %) (cmm/rename-group % path last-path))))) @@ -488,7 +490,7 @@ (st/emit! (dwu/start-undo-transaction undo-id)) (run! st/emit! (->> components - (filter #(cfh/inside-path? (:path %) path)) + (filter #(cpn/inside-path? (:path %) path)) (map #(dwv/rename-comp-or-variant-and-main (:id %) (cmm/ungroup % path))))) (st/emit! (dwu/commit-undo-transaction undo-id))))) @@ -498,7 +500,7 @@ (fn [path] (on-clear-selection) (let [comps (->> components - (filter #(cfh/inside-path? (:path %) path))) + (filter #(cpn/inside-path? (:path %) path))) ids (into #{} (map :main-instance-id comps)) page-id (->> comps first :main-instance-page)] @@ -554,15 +556,15 @@ (st/emit! (dwv/combine-as-variants ids {:page-id page-id :trigger "workspace:context-menu-assets"})))))] - [:& cmm/asset-section {:file-id file-id - :title (tr "workspace.assets.components") - :section :components - :assets-count (count components) - :open? open?} - [:& cmm/asset-section-block {:role :title-button} - (when ^boolean open? - [:div {:class (stl/css :listing-options)} - [:& radio-buttons {:selected (if listing-thumbs? "grid" "list") + [:> cmm/asset-section* {:file-id file-id + :title (tr "workspace.assets.components") + :section :components + :assets-count (count components) + :is-open is-open} + [:> cmm/asset-section-block* {:role :title-button} + (when ^boolean is-open + [:div + [:& radio-buttons {:selected (if is-listing-thumbs "grid" "list") :on-change toggle-list-style :name "listing-style"} [:& radio-button {:icon deprecated-icon/view-as-list @@ -584,30 +586,30 @@ :ref input-ref :on-selected on-file-selected}]])] - [:& cmm/asset-section-block {:role :content} - (when ^boolean open? - [:& components-group {:file-id file-id - :prefix "" - :groups groups - :open-groups open-groups - :force-open? force-open? - :renaming (when ^boolean renaming? current-component-id) - :listing-thumbs? listing-thumbs? - :selected selected - :on-asset-click on-asset-click - :on-drag-start on-drag-start - :do-rename do-rename - :cancel-rename cancel-rename - :on-rename-group on-rename-group - :on-group on-group - :on-ungroup on-ungroup - :on-group-combine-variants on-group-combine-variants - :on-context-menu on-context-menu - :selected-full selected-full - :is-local ^boolean is-local - :count-variants count-variants}]) + [:> cmm/asset-section-block* {:role :content} + (when ^boolean is-open + [:> components-group* {:file-id file-id + :prefix "" + :groups groups + :open-groups open-groups + :is-force-open is-force-open + :renaming (when ^boolean renaming? current-component-id) + :is-listing-thumbs is-listing-thumbs + :selected selected + :on-asset-click on-asset-click + :on-drag-start on-drag-start + :do-rename do-rename + :cancel-rename cancel-rename + :on-rename-group on-rename-group + :on-group on-group + :on-ungroup on-ungroup + :on-group-combine-variants on-group-combine-variants + :on-context-menu on-context-menu + :selected-full selected-full + :is-local ^boolean is-local + :count-variants count-variants}]) - [:& cmm/assets-context-menu + [:> cmm/assets-context-menu* {:on-close on-close-menu :state @menu-state :options [(when (and is-local (not (or multi-components? multi-assets? read-only?))) @@ -619,10 +621,6 @@ :id "assets-duplicate-component" :handler on-duplicate}) - (when (and is-local (not read-only?)) - {:name (tr "workspace.assets.delete") - :id "assets-delete-component" - :handler on-delete}) (when (and is-local (not (or multi-assets? read-only?))) {:name (tr "workspace.assets.group") :id "assets-group-component" @@ -637,4 +635,9 @@ :id "assets-combine-as-variants" :title (when-not all-same-page? (tr "workspace.shape.menu.combine-as-variants-error")) :disabled (not all-same-page?) - :handler on-combine-as-variants})]}]]])) + :handler on-combine-as-variants}) + + (when (and is-local (not read-only?)) + {:name (tr "workspace.assets.delete") + :id "assets-delete-component" + :handler on-delete})]}]]])) diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/components.scss b/frontend/src/app/main/ui/workspace/sidebar/assets/components.scss index 26db8efa7e..ec23a9d1f4 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/components.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/components.scss @@ -4,108 +4,109 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/colors.scss" as *; +@use "ds/typography.scss" as t; -.drop-space { - height: $s-12; -} - -.drop-space-small { - height: $s-2; -} - -.asset-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax($s-96, 1fr)); - max-width: 100%; - gap: $s-4; - margin-inline: $s-8; -} - -.grid-cell { - @include flexCenter; +.component-item { position: relative; - aspect-ratio: 1 / 1; - padding: $s-8; - border-radius: $br-8; - background-color: var(--assets-component-background-color); - overflow: hidden; cursor: pointer; +} - .variant-mark { - background-color: var(--color-background-tertiary); - border-radius: $br-8; - } - - .cell-name { - @include bodySmallTypography; - @include textEllipsis; - display: none; - position: absolute; - left: $s-4; - bottom: $s-4; - height: calc($s-24 - $s-2); - width: calc(100% - 2 * $s-4); - padding: $s-2 $s-6; - column-gap: $s-4; - border-radius: $br-4; - background-color: var(--assets-item-name-background-color); - border: $s-1 solid transparent; - color: var(--assets-item-name-foreground-color); - - input { - @include textEllipsis; - @include bodySmallTypography; - @include removeInputStyle; - height: auto; - padding: 0; - } - - span { - display: flex; - align-items: center; - height: 100%; - } - - &.editing { - border-color: var(--input-border-color-focus); - border-radius: $br-4; - display: flex; - align-items: center; - background-color: var(--input-background-color); - } - } - +.component-item-grid { + aspect-ratio: 1 / 1; + padding: var(--sp-s); + border-radius: $br-8; + background-color: var(--color-canvas); + overflow: hidden; &:hover { - .cell-name { - display: block; + .component-item-grid-name { + display: flex; } } - &.selected { - border: $s-2 solid var(--assets-item-border-color); + &.component-item-selected { + border: $b-2 solid var(--color-accent-primary); &::before { content: " "; position: absolute; - z-index: $z-index-2; top: 0; left: 0; right: 0; bottom: 0; - border: $s-4 solid var(--assets-component-second-border-selected); + border: calc($b-2 * 2) solid var(--color-background-primary); border-radius: $br-8; } } } -.component-group { - display: grid; - grid-template-columns: 1fr; - gap: $s-4; +.component-item-grid-name { + display: none; + align-items: center; + position: absolute; + height: $sz-24; + left: var(--sp-xs); + right: var(--sp-xs); + bottom: var(--sp-xs); + padding: var(--sp-xxs) var(--sp-s); + border-radius: $br-4; + background-color: var(--color-background-primary); + color: var(--color-foreground-primary); + padding: 0; + + &.component-item-editing { + display: flex; + } } -.thumbnail { +.component-item-grid-input { + border-radius: $br-4; +} + +.component-item-grid-label { + padding: 0 var(--sp-s); +} + +.component-item-list { + display: grid; + grid-template-columns: auto 1fr auto; + align-items: center; + column-gap: var(--sp-s); + padding: var(--sp-xxs); + margin-inline-end: var(--sp-xxs); + border-radius: $br-8; + background-color: var(--color-background-tertiary); + + &:hover { + background-color: var(--color-background-quaternary); + } + + &.component-item-selected { + outline: $b-1 solid var(--color-accent-primary); + } +} + +.component-item-list-name { + overflow: hidden; + order: 2; + display: flex; + align-items: center; + color: var(--color-foreground-primary); + padding: 0; +} + +.component-item-list-input { + border-radius: $br-8; + height: $sz-32; +} + +.component-item-list-label { + padding: 0; +} + +.component-item-thumbnail { width: 100%; height: 100%; object-fit: contain; @@ -113,130 +114,76 @@ border: 0; } -.grid-placeholder { - width: 100%; - border-radius: $br-8; - background-color: var(--assets-item-background-color-drag); - border: $s-2 solid var(--assets-item-border-color-drag); -} - -.enum-item { - position: relative; - display: grid; - grid-template-columns: auto 1fr; - align-items: center; - column-gap: $s-8; - height: $s-44; - padding-right: $s-4; - padding: $s-1; - border: $s-1 solid transparent; - border-radius: $br-8; - background-color: var(--assets-item-background-color); - cursor: pointer; - - &:not(:last-child) { - margin-bottom: $s-4; - } - - &:hover { - background-color: var(--assets-item-background-color-hover); - - .item-name { - color: var(--assets-item-name-foreground-color-hover); - - &.editing { - background: var(--input-background-color); - - input { - color: var(--input-foreground-color-active); - } - } - } - } - - &.selected { - border: $s-1 solid var(--assets-item-border-color); - } -} - -.enum-item-with-mark { - grid-template-columns: auto 1fr $s-24; - padding-right: $s-4; -} - -.item-name { - @include bodySmallTypography; - @include textEllipsis; - order: 2; - color: var(--assets-item-name-foreground-color); - - input { - @include textEllipsis; - @include bodySmallTypography; - @include removeInputStyle; - height: $s-32; - padding: $s-4; - } - - span { - display: flex; - place-items: center; - padding-inline-end: $s-4; - } - - &.editing { - display: grid; - grid-template-columns: 1fr auto; - align-items: center; - column-gap: $s-8; - border: $s-1 solid var(--input-border-color-focus); - border-radius: $br-8; - background-color: var(--input-background-color); - } -} - -.asset-list-thumbnail { - @include flexCenter; +.component-item-list-thumbnail { flex-shrink: 0; - padding: $s-2; - height: $s-40; - width: $s-40; + padding: var(--sp-xxs); + height: $sz-40; + width: $sz-40; border-radius: $br-6; - background-color: var(--assets-component-background-color); + background-color: var(--color-canvas); } -.grid-placeholder { - height: $s-2; - width: 100%; - background-color: var(--color-accent-primary); -} - -.listing-options { +.component-item-variant-mark { + margin-right: var(--sp-xs); display: flex; align-items: center; + justify-content: center; + height: $sz-24; + width: $sz-24; + color: var(--color-accent-secondary); + order: 3; } -.dragging { +.component-item-grid-variant-mark { + margin: 0; + position: absolute; + right: var(--sp-xxs); + top: var(--sp-xxs); + border-radius: $br-8; + background-color: var(--color-background-tertiary); +} + +.component-item-dragging { position: absolute; top: 0; left: 0; width: 100%; height: 100%; - border-radius: $s-8; - background-color: var(--assets-item-background-color-drag); - border: $s-2 solid var(--assets-item-border-color-drag); + border-radius: var(--sp-s); + border: $b-2 solid var(--color-accent-primary-muted); } -.variant-mark-cell { - position: absolute; - right: $s-2; - top: $s-2; +.component-group { + display: grid; + grid-template-columns: 1fr; + gap: var(--sp-xs); } -.component-icon { - @include flexCenter; - height: $s-24; - width: $s-24; - order: 3; - color: var(--color-accent-secondary); +.component-group-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(calc($sz-48 * 2), 1fr)); + max-width: 100%; + gap: var(--sp-xs); + margin-inline: var(--sp-s); +} + +.component-group-list { + display: flex; + flex-direction: column; + gap: var(--sp-xs); +} + +.component-group-placeholder { + width: 100%; + height: var(--sp-xxs); + border-radius: $br-8; + background-color: var(--color-accent-primary); +} + +.component-group-drop-space { + height: var(--sp-m); +} + +.component-group-drop-space-small { + height: var(--sp-xxs); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.cljs index 410d14200a..27cd620eae 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.cljs @@ -23,10 +23,10 @@ [app.main.ui.components.title-bar :refer [title-bar*]] [app.main.ui.context :as ctx] [app.main.ui.icons :as deprecated-icon] - [app.main.ui.workspace.sidebar.assets.colors :refer [colors-section]] + [app.main.ui.workspace.sidebar.assets.colors :refer [colors-section*]] [app.main.ui.workspace.sidebar.assets.common :as cmm] - [app.main.ui.workspace.sidebar.assets.components :refer [components-section]] - [app.main.ui.workspace.sidebar.assets.typographies :refer [typographies-section]] + [app.main.ui.workspace.sidebar.assets.components :refer [components-section*]] + [app.main.ui.workspace.sidebar.assets.typographies :refer [typographies-section*]] [app.util.dom :as dom] [app.util.i18n :as i18n :refer [tr]] [app.util.keyboard :as kbd] @@ -249,16 +249,16 @@ [:span {:class (stl/css :loading)} (tr "labels.loading")] [:* (when ^boolean show-components? - [:& components-section + [:> components-section* {:file-id file-id :is-local is-local :components components - :listing-thumbs? listing-thumbs? - :open? (or ^boolean force-open-components? - ^boolean (get open-status :components false)) - :force-open? force-open-components? + :is-listing-thumbs listing-thumbs? + :is-open (or ^boolean force-open-components? + ^boolean (get open-status :components false)) + :is-force-open force-open-components? :open-status-ref open-status-ref - :reverse-sort? reverse-sort? + :is-reverse-sort reverse-sort? :selected selected :on-asset-click on-component-click :on-assets-delete on-assets-delete @@ -267,31 +267,31 @@ :count-variants count-variants}]) (when ^boolean show-colors? - [:& colors-section + [:> colors-section* {:file-id file-id - :local? is-local + :is-local is-local :colors colors - :open? (or ^boolean force-open-colors? - ^boolean (get open-status :colors false)) - :force-open? force-open-colors? + :is-open (or ^boolean force-open-colors? + ^boolean (get open-status :colors false)) + :is-force-open force-open-colors? :open-status-ref open-status-ref - :reverse-sort? reverse-sort? + :is-reverse-sort reverse-sort? :selected selected :on-asset-click on-colors-click :on-assets-delete on-assets-delete :on-clear-selection on-clear-selection}]) (when ^boolean show-typography? - [:& typographies-section + [:> typographies-section* {:file file :file-id (:id file) - :local? is-local + :is-local is-local :typographies typographies - :open? (or ^boolean force-open-typographies? - ^boolean (get open-status :typographies false)) - :force-open? force-open-typographies? + :is-open (or ^boolean force-open-typographies? + ^boolean (get open-status :typographies false)) + :is-force-open force-open-typographies? :open-status-ref open-status-ref - :reverse-sort? reverse-sort? + :is-reverse-sort reverse-sort? :selected selected :on-asset-click on-typography-click :on-assets-delete on-assets-delete @@ -363,13 +363,16 @@ (fn [] (st/emit! (dw/unselect-all-assets file-id)))) + variants-counter + (mf/with-memo [library] + (-> (group-by :variant-id (ctkl/components-seq library)) + (update-vals count))) + count-variants (mf/use-fn - (mf/deps library) + (mf/deps variants-counter) (fn [variant-id] - (->> (ctkl/components-seq library) - (filterv #(= variant-id (:variant-id %))) - count)))] + (get variants-counter variant-id)))] [:div {:class (stl/css :tool-window) :on-context-menu dom/prevent-default diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.scss b/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.scss index 8e9fbd5232..18de784336 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/typography.scss" as t; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "refactor/common-refactor.scss" as deprecated; .tool-window { - padding: 0 0 $s-24 $s-12; + padding: 0 0 deprecated.$s-24 deprecated.$s-12; display: grid; grid-auto-rows: max-content; - gap: $s-4; + gap: deprecated.$s-4; height: 100%; } @@ -28,23 +28,23 @@ display: flex; align-items: center; justify-content: flex-start; - height: $s-32; - padding-left: calc($s-12 + $s-2); + height: deprecated.$s-32; + padding-left: calc(deprecated.$s-12 + deprecated.$s-2); color: var(--color-foreground-secondary); } .special-title { - @include textEllipsis; + @include deprecated.textEllipsis; color: var(--title-foreground-color-hover); - margin-left: $s-2; + margin-left: deprecated.$s-2; text-align: left; } .file-link { @extend .button-tertiary; - height: $s-32; - width: $s-28; - border-radius: $br-8; + height: deprecated.$s-32; + width: deprecated.$s-28; + border-radius: deprecated.$br-8; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -56,32 +56,32 @@ width: 100%; display: grid; grid-auto-rows: max-content; - gap: $s-4; + gap: deprecated.$s-4; } .asset-title { - margin-left: $s-28; + margin-left: deprecated.$s-28; display: flex; flex-direction: column; align-items: center; - gap: $s-8; + gap: deprecated.$s-8; } .no-found-icon { - @include flexCenter; + @include deprecated.flexCenter; background-color: var(--not-found-background-color); - border-radius: $br-circle; - height: $s-48; - width: $s-48; + border-radius: deprecated.$br-circle; + height: deprecated.$s-48; + width: deprecated.$s-48; svg { @extend .button-icon; - height: $s-24; - width: $s-24; + height: deprecated.$s-24; + width: deprecated.$s-24; stroke: var(--not-found-foreground-color); } } .no-found-text { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--not-found-foreground-color); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/groups.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets/groups.cljs index 5e7a7451d6..72a1be6996 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/groups.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/groups.cljs @@ -7,7 +7,7 @@ (ns app.main.ui.workspace.sidebar.assets.groups (:require-macros [app.main.style :as stl]) (:require - [app.common.files.helpers :as cfh] + [app.common.path-names :as cpn] [app.common.schema :as sm] [app.main.data.modal :as modal] [app.main.data.workspace :as dw] @@ -22,20 +22,20 @@ [app.util.i18n :as i18n :refer [tr]] [rumext.v2 :as mf])) -(mf/defc asset-group-title - [{:keys [file-id section path group-open? on-rename on-ungroup on-group-combine-variants can-combine?]}] +(mf/defc asset-group-title* + [{:keys [file-id section path is-group-open on-rename on-ungroup on-group-combine-variants is-can-combine]}] (when-not (empty? path) - (let [[other-path last-path truncated] (cfh/compact-path path 35 true) + (let [[other-path last-path truncated] (cpn/compact-path path 35 true) menu-state (mf/use-state cmm/initial-context-menu-state) on-fold-group (mf/use-fn - (mf/deps file-id section path group-open?) + (mf/deps file-id section path is-group-open) (fn [event] (dom/stop-propagation event) (st/emit! (dw/set-assets-group-open file-id section path - (not group-open?))))) + (not is-group-open))))) on-context-menu (mf/use-fn (fn [event] @@ -50,7 +50,7 @@ [:div {:class (stl/css :group-title) :on-context-menu on-context-menu} [:> title-bar* {:collapsable true - :collapsed (not group-open?) + :collapsed (not is-group-open) :all-clickable true :on-collapsed on-fold-group :title (mf/html [:* (when-not (empty? other-path) @@ -61,7 +61,7 @@ :title (when truncated path)} last-path]])}] - [:& cmm/assets-context-menu + [:> cmm/assets-context-menu* {:on-close on-close-menu :state @menu-state :options (cond-> [{:name (tr "workspace.assets.rename") @@ -70,7 +70,7 @@ {:name (tr "workspace.assets.ungroup") :id "assets-ungroup-group" :handler #(on-ungroup path)}] - can-combine? + is-can-combine (conj {:name (tr "workspace.shape.menu.combine-as-variants") :id "assets-combine-as-variants" @@ -94,7 +94,7 @@ [assets reverse-sort?] (when-not (empty? assets) (reduce (fn [groups {:keys [path] :as asset}] - (let [path (cfh/split-path (or path ""))] + (let [path (cpn/split-path (or path ""))] (update-in groups (conj path "") (fn [group] diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/groups.scss b/frontend/src/app/main/ui/workspace/sidebar/assets/groups.scss index 7b1b9ff740..223a6d920e 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/groups.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/groups.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .group-title-wrapper { width: 100%; @@ -29,18 +29,18 @@ } .group-title { - padding-left: $s-4; + padding-left: deprecated.$s-4; } .pre-path { - margin-left: $s-2; + margin-left: deprecated.$s-2; text-transform: initial; color: var(--title-foreground-color); } .path { - @include textEllipsis; - margin-left: $s-2; + @include deprecated.textEllipsis; + margin-left: deprecated.$s-2; text-transform: initial; color: var(--title-foreground-color-hover); } @@ -54,11 +54,11 @@ } .modal-header { - margin-bottom: $s-24; + margin-bottom: deprecated.$s-24; } .modal-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--modal-title-foreground-color); } @@ -67,14 +67,14 @@ } .modal-content { - @include bodySmallTypography; - margin-bottom: $s-24; + @include deprecated.bodySmallTypography; + margin-bottom: deprecated.$s-24; } .input-wrapper { @extend .input-with-label; - @include bodySmallTypography; - margin-bottom: $s-8; + @include deprecated.bodySmallTypography; + margin-bottom: deprecated.$s-8; } .action-buttons { diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/typographies.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets/typographies.cljs index 75c456edc3..8ad40c2f4e 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/typographies.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/typographies.cljs @@ -9,7 +9,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] - [app.common.files.helpers :as cfh] + [app.common.path-names :as cpn] [app.main.data.event :as ev] [app.main.data.modal :as modal] [app.main.data.workspace :as dw] @@ -76,9 +76,9 @@ on-typography-drag-start (mf/use-fn - (mf/deps typography file-id selected item-ref read-only?) + (mf/deps typography file-id selected item-ref read-only? renaming? open?) (fn [event] - (if read-only? + (if (or read-only? renaming? open?) (dom/prevent-default event) (cmm/on-asset-drag-start event file-id typography selected item-ref :typographies identity)))) @@ -170,12 +170,12 @@ :on-drag-leave on-drag-leave :on-drag-over dom/prevent-default :on-drop on-drop} - [:& grp/asset-group-title {:file-id file-id - :section :typographies - :path prefix - :group-open? group-open? - :on-rename on-rename-group - :on-ungroup on-ungroup}] + [:> grp/asset-group-title* {:file-id file-id + :section :typographies + :path prefix + :is-group-open group-open? + :on-rename on-rename-group + :on-ungroup on-ungroup}] (when group-open? [:* @@ -212,7 +212,7 @@ (for [[path-item content] groups] (when-not (empty? path-item) [:& typographies-group {:file-id file-id - :prefix (cfh/merge-path-item prefix path-item) + :prefix (cpn/merge-path-item prefix path-item) :key (dm/str "group-" path-item) :groups content :open-groups open-groups @@ -230,9 +230,9 @@ :on-context-menu on-context-menu :selected-full selected-full}]))])])) -(mf/defc typographies-section - {::mf/wrap-props false} - [{:keys [file file-id local? typographies open? force-open? open-status-ref selected reverse-sort? +(mf/defc typographies-section* + [{:keys [file file-id typographies open-status-ref selected + is-local is-open is-force-open is-reverse-sort on-asset-click on-assets-delete on-clear-selection]}] (let [state (mf/use-state {:detail-open? false :id nil}) local-data (mf/deref lens:typography-section-state) @@ -243,8 +243,8 @@ typographies (mf/with-memo [typographies] (mapv dwl/extract-path-if-missing typographies)) - groups (mf/with-memo [typographies reverse-sort?] - (grp/group-assets typographies reverse-sort?)) + groups (mf/with-memo [typographies is-reverse-sort] + (grp/group-assets typographies is-reverse-sort)) selected (:typographies selected) selected-full (mf/with-memo [selected typographies] @@ -393,28 +393,28 @@ (st/emit! #(update % :workspace-global dissoc :edit-typography))))) [:* - [:& cmm/asset-section {:file-id file-id - :title (tr "workspace.assets.typography") - :section :typographies - :assets-count (count typographies) - :open? open?} - (when local? - [:& cmm/asset-section-block {:role :title-button} + [:> cmm/asset-section* {:file-id file-id + :title (tr "workspace.assets.typography") + :section :typographies + :assets-count (count typographies) + :is-open is-open} + (when is-local + [:> cmm/asset-section-block* {:role :title-button} (when-not read-only? [:> icon-button* {:variant "ghost" :aria-label (tr "workspace.assets.typography.add-typography") :on-click add-typography :icon i/add}])]) - [:& cmm/asset-section-block {:role :content} + [:> cmm/asset-section-block* {:role :content} [:& typographies-group {:file-id file-id :prefix "" :groups groups :open-groups open-groups - :force-open? force-open? + :force-open? is-force-open :state state :file file - :local? local? + :local? is-local :selected selected :editing-id editing-id :renaming-id renaming-id @@ -426,8 +426,8 @@ :on-context-menu on-context-menu :selected-full selected-full}] - (if local? - [:& cmm/assets-context-menu + (if is-local + [:> cmm/assets-context-menu* {:on-close on-close-menu :state @menu-state :options [(when-not (or multi-typographies? multi-assets?) @@ -449,7 +449,7 @@ :id "assets-group-typography" :handler on-group})]}] - [:& cmm/assets-context-menu + [:> cmm/assets-context-menu* {:on-close on-close-menu :state @menu-state :options [{:name "show info" diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/typographies.scss b/frontend/src/app/main/ui/workspace/sidebar/assets/typographies.scss index 8393c1bb41..d00eeb20f9 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/typographies.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/typographies.scss @@ -4,18 +4,18 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .assets-list { - padding: 0 0 0 $s-4; + padding: 0 0 0 deprecated.$s-4; } .drop-space { - height: $s-12; + height: deprecated.$s-12; } .grid-placeholder { - height: $s-2; + height: deprecated.$s-2; width: 100%; background-color: var(--color-accent-primary); } @@ -24,8 +24,8 @@ position: relative; display: flex; align-items: center; - margin-bottom: $s-4; - border-radius: $br-8; + margin-bottom: deprecated.$s-4; + border-radius: deprecated.$br-8; background-color: var(--assets-item-background-color); } @@ -35,7 +35,7 @@ left: 0; height: 100%; width: 100%; - border: $s-2 solid var(--assets-item-border-color-drag); - border-radius: $s-8; + border: deprecated.$s-2 solid var(--assets-item-border-color-drag); + border-radius: deprecated.$s-8; background-color: var(--assets-item-background-color-drag); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/collapsable_button.scss b/frontend/src/app/main/ui/workspace/sidebar/collapsable_button.scss index 3f62cd24b0..9d2f6156f5 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/collapsable_button.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/collapsable_button.scss @@ -4,35 +4,35 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .collapsed-sidebar { - @include flexCenter; + @include deprecated.flexCenter; position: absolute; - top: $s-48; + top: deprecated.$s-48; left: 0; - padding: $s-4; - border-radius: $br-8; + padding: deprecated.$s-4; + border-radius: deprecated.$br-8; background: var(--color-background-primary); margin-inline-start: var(--sp-m); } .collapsed-title { - @include flexCenter; - height: $s-36; - width: $s-24; - border-radius: $br-8; + @include deprecated.flexCenter; + height: deprecated.$s-36; + width: deprecated.$s-24; + border-radius: deprecated.$br-8; background: var(--color-background-secondary); } .collapsed-button { - @include buttonStyle; - height: $s-24; - width: $s-16; + @include deprecated.buttonStyle; + height: deprecated.$s-24; + width: deprecated.$s-16; padding: 0; - border-radius: $br-5; + border-radius: deprecated.$br-5; svg { - @include flexCenter; - height: $s-16; - width: $s-16; + @include deprecated.flexCenter; + height: deprecated.$s-16; + width: deprecated.$s-16; color: transparent; fill: none; stroke: var(--icon-foreground); diff --git a/frontend/src/app/main/ui/workspace/sidebar/debug.scss b/frontend/src/app/main/ui/workspace/sidebar/debug.scss index ecbb8c0d5d..ce9698a180 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/debug.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/debug.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .debug-panel { display: flex; @@ -13,17 +13,17 @@ } .panel-title { - @include flexCenter; - @include uppercaseTitleTipography; + @include deprecated.flexCenter; + @include deprecated.uppercaseTitleTipography; position: relative; - height: $s-32; - min-height: $s-32; - margin: $s-8 $s-8 0 $s-8; - border-radius: $br-8; + height: deprecated.$s-32; + min-height: deprecated.$s-32; + margin: deprecated.$s-8 deprecated.$s-8 0 deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--panel-title-background-color); span { - @include flexCenter; + @include deprecated.flexCenter; flex-grow: 1; color: var(--title-foreground-color-hover); } @@ -31,7 +31,7 @@ .checkbox-wrapper { @extend .input-checkbox; - height: $s-32; + height: deprecated.$s-32; padding: 0; } @@ -41,5 +41,5 @@ } .debug-panel-inner { - padding: $s-16 $s-8; + padding: deprecated.$s-16 deprecated.$s-8; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/debug_shape_info.scss b/frontend/src/app/main/ui/workspace/sidebar/debug_shape_info.scss index 7d3c273520..45a00fe022 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/debug_shape_info.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/debug_shape_info.scss @@ -4,29 +4,29 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .shape-info { display: flex; flex-direction: column; background-color: var(--panel-background-color); color: var(--color-foreground-primary); - font-size: $fs-12; + font-size: deprecated.$fs-12; user-select: text; } .shape-info-title { - @include flexCenter; - @include uppercaseTitleTipography; + @include deprecated.flexCenter; + @include deprecated.uppercaseTitleTipography; position: relative; - height: $s-32; - min-height: $s-32; - margin: $s-8 $s-8 0 $s-8; - border-radius: $br-8; + height: deprecated.$s-32; + min-height: deprecated.$s-32; + margin: deprecated.$s-8 deprecated.$s-8 0 deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--panel-title-background-color); span { - @include flexCenter; + @include deprecated.flexCenter; flex-grow: 1; color: var(--title-foreground-color-hover); } @@ -35,11 +35,11 @@ .close-button { @extend .button-tertiary; position: absolute; - right: $s-2; - top: $s-2; - height: $s-28; - width: $s-28; - border-radius: $br-6; + right: deprecated.$s-2; + top: deprecated.$s-2; + height: deprecated.$s-28; + width: deprecated.$s-28; + border-radius: deprecated.$br-6; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -47,19 +47,19 @@ } .attrs-container { - padding: $s-16 $s-8; + padding: deprecated.$s-16 deprecated.$s-8; overflow: hidden; } .shape-title { - font-size: $fs-14; - padding-bottom: $s-4; + font-size: deprecated.$fs-14; + padding-bottom: deprecated.$s-4; background: var(--color-background-quaternary); color: var(--color-foreground-primary); - padding: $s-8; - border-radius: $s-8; + padding: deprecated.$s-8; + border-radius: deprecated.$s-8; display: flex; - gap: $s-4; + gap: deprecated.$s-4; } .shape-name { flex: 1; @@ -68,7 +68,7 @@ .attrs-container-attr { display: grid; grid-template-columns: 25% auto; - padding: $s-4 0; + padding: deprecated.$s-4 0; &.vertical-layout { grid-template-columns: auto; @@ -90,12 +90,12 @@ .shape-list { display: flex; flex-direction: column; - gap: $s-4; + gap: deprecated.$s-4; } .point-list { display: flex; - gap: $s-8; + gap: deprecated.$s-8; } .cell-container { diff --git a/frontend/src/app/main/ui/workspace/sidebar/history.scss b/frontend/src/app/main/ui/workspace/sidebar/history.scss index e6d775a353..b9df030fd8 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/history.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/history.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .history-toolbox { display: flex; @@ -13,59 +13,59 @@ } .history-toolbox-title { - @include flexCenter; - @include uppercaseTitleTipography; + @include deprecated.flexCenter; + @include deprecated.uppercaseTitleTipography; position: relative; - height: $s-32; - min-height: $s-32; - margin: $s-8 $s-8 0 $s-8; - border-radius: $br-8; + height: deprecated.$s-32; + min-height: deprecated.$s-32; + margin: deprecated.$s-8 deprecated.$s-8 0 deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--panel-title-background-color); span { - @include flexCenter; + @include deprecated.flexCenter; flex-grow: 1; color: var(--title-foreground-color-hover); } } .history-entry-empty { - @include flexCenter; + @include deprecated.flexCenter; flex-direction: column; - gap: $s-16; - padding: $s-28 $s-16; + gap: deprecated.$s-16; + padding: deprecated.$s-28 deprecated.$s-16; text-align: center; } .history-entry-empty-icon { @extend .empty-icon; svg { - margin-left: calc(-1 * $s-2); + margin-left: calc(-1 * deprecated.$s-2); } } .history-entry-empty-msg { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--empty-message-foreground-color); } .history-entries { - height: calc(100vh - $s-100); - padding: $s-12; + height: calc(100vh - deprecated.$s-100); + padding: deprecated.$s-12; overflow-x: hidden; overflow-y: auto; - font-size: $fs-12; + font-size: deprecated.$fs-12; } .history-entry { display: flex; justify-content: center; flex-direction: column; - min-height: $s-32; - margin: $s-4; - padding: $s-4 $s-8; - border: $s-2 solid transparent; - border-radius: $s-8; + min-height: deprecated.$s-32; + margin: deprecated.$s-4; + padding: deprecated.$s-4 deprecated.$s-8; + border: deprecated.$s-2 solid transparent; + border-radius: deprecated.$s-8; background-color: var(--entry-background-color); cursor: pointer; transition: border 0.2s; @@ -80,11 +80,11 @@ } } .history-entry-summary-text { - margin: 0 $s-8; + margin: 0 deprecated.$s-8; color: var(--color-foreground-primary); } .history-entry-summary-button { - opacity: $op-0; + opacity: deprecated.$op-0; margin-left: auto; &.button-opened { svg { @@ -100,7 +100,7 @@ .history-entry-detail { display: block; - padding-top: $s-16; + padding-top: deprecated.$s-16; color: var(--modal-text-foreground-color); .history-entry-details-list { margin: 0; @@ -123,7 +123,7 @@ } } .history-entry-summary-button { - opacity: $op-10; + opacity: deprecated.$op-10; &.button-opened { svg { transform: rotate(90deg); diff --git a/frontend/src/app/main/ui/workspace/sidebar/layer_item.scss b/frontend/src/app/main/ui/workspace/sidebar/layer_item.scss index 70de9d49ce..e37644ad63 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layer_item.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/layer_item.scss @@ -4,32 +4,34 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .layer-row { - --layer-indentation-size: calc(#{$s-4} * 6); + --layer-indentation-size: calc(#{deprecated.$s-4} * 6); display: flex; flex-direction: row; align-items: center; width: 100%; background-color: var(--layer-row-background-color); - border: $s-2 solid transparent; + border: deprecated.$s-2 solid transparent; &.highlight, &:hover { --context-hover-color: var(--layer-row-foreground-color-hover); - --context-hover-opacity: $op-10; + --context-hover-opacity: deprecated.$op-10; background-color: var(--layer-row-background-color-hover); color: var(--layer-row-foreground-color-hover); - box-shadow: $s-16 $s-0 $s-0 $s-0 var(--layer-row-background-color-hover); + box-shadow: deprecated.$s-16 deprecated.$s-0 deprecated.$s-0 deprecated.$s-0 + var(--layer-row-background-color-hover); &.hidden { - opacity: $op-10; + opacity: deprecated.$op-10; } } &.selected { background-color: var(--layer-row-background-color-selected); - box-shadow: $s-16 $s-0 $s-0 $s-0 var(--layer-row-background-color-selected); + box-shadow: deprecated.$s-16 deprecated.$s-0 deprecated.$s-0 deprecated.$s-0 + var(--layer-row-background-color-selected); } &.selected.highlight, @@ -39,23 +41,25 @@ .parent-selected & { background-color: var(--layer-child-row-background-color); - box-shadow: $s-16 $s-0 $s-0 $s-0 var(--layer-child-row-background-color); + box-shadow: deprecated.$s-16 deprecated.$s-0 deprecated.$s-0 deprecated.$s-0 + var(--layer-child-row-background-color); } .parent-selected &.highlight, .parent-selected &:hover { background-color: var(--layer-row-background-color-hover); - box-shadow: $s-16 $s-0 $s-0 $s-0 var(--layer-row-background-color-hover); + box-shadow: deprecated.$s-16 deprecated.$s-0 deprecated.$s-0 deprecated.$s-0 + var(--layer-row-background-color-hover); } &.dnd-over-bot { - border-bottom: $s-2 solid var(--layer-row-foreground-color-hover); + border-bottom: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } &.dnd-over-top { - border-top: $s-2 solid var(--layer-row-foreground-color-hover); + border-top: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } &.dnd-over { - border: $s-2 solid var(--layer-row-foreground-color-hover); + border: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } } @@ -63,7 +67,8 @@ .layer-row.highlight &, .layer-row:hover & { background-color: var(--layer-row-background-color-selected); - box-shadow: $s-16 $s-0 $s-0 $s-0 var(--layer-row-background-color-selected); + box-shadow: deprecated.$s-16 deprecated.$s-0 deprecated.$s-0 deprecated.$s-0 + var(--layer-row-background-color-selected); } .layer-row.type-comp & { color: var(--layer-row-component-foreground-color); @@ -78,13 +83,13 @@ align-items: center; display: grid; grid-template-columns: auto 1fr auto; - column-gap: $s-4; - height: $s-32; + column-gap: deprecated.$s-4; + height: deprecated.$s-32; width: calc(100% - (var(--depth) * var(--layer-indentation-size))); cursor: pointer; &.filtered { - width: calc(100% - $s-12); + width: calc(100% - deprecated.$s-12); } } @@ -109,14 +114,14 @@ } .icon-shape { - @include flexCenter; - @include buttonStyle; + @include deprecated.flexCenter; + @include deprecated.buttonStyle; position: relative; justify-self: flex-end; - width: $s-16; + width: deprecated.$s-16; height: 100%; - width: $s-24; - padding-inline-start: $s-4; + width: deprecated.$s-24; + padding-inline-start: deprecated.$s-4; color: var(--icon-foreground); .layer-row.selected & { color: var(--layer-row-foreground-color-selected); @@ -128,11 +133,11 @@ transform: rotate(-90deg); } .layer-row.hidden & { - opacity: $op-7; + opacity: deprecated.$op-7; } .layer-row.highlight &, .layer-row:hover & { - opacity: $op-10; + opacity: deprecated.$op-10; svg { stroke: var(--layer-row-foreground-color-hover); } @@ -142,20 +147,20 @@ .absolute { position: absolute; background-color: var(--layer-row-foreground-color); - opacity: $op-4; - width: $s-12; - height: $s-12; - border-radius: $br-2; + opacity: deprecated.$op-4; + width: deprecated.$s-12; + height: deprecated.$s-12; + border-radius: deprecated.$br-2; .layer-row.hidden & { - opacity: $op-1; + opacity: deprecated.$op-1; } .layer-row.type-comp & { background-color: var(--layer-row-component-foreground-color); } .layer-row.highlight &, .layer-row:hover & { - opacity: $op-4; + opacity: deprecated.$op-4; background-color: var(--layer-row-foreground-color-hover); } .layer-row.selected & { @@ -164,20 +169,20 @@ } .toggle-content { - @include buttonStyle; + @include deprecated.buttonStyle; display: grid; grid-template-columns: 1fr 1fr; align-items: center; height: 100%; - width: $s-24; - padding-inline-start: $s-8; + width: deprecated.$s-24; + padding-inline-start: deprecated.$s-8; svg { @extend .button-icon-small; stroke: var(--icon-foreground); .layer-row.hidden & { - opacity: $op-7; + opacity: deprecated.$op-7; } .layer-row.selected & { stroke: var(--layer-row-foreground-color-selected); @@ -187,7 +192,7 @@ } .layer-row.highlight &, .layer-row:hover & { - opacity: $op-10; + opacity: deprecated.$op-10; stroke: var(--layer-row-foreground-color-hover); } } @@ -202,10 +207,10 @@ .toggle-element, .block-element { - @include buttonStyle; - @include flexCenter; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; height: 100%; - width: $s-24; + width: deprecated.$s-24; margin: 0; display: none; @@ -214,7 +219,7 @@ stroke: var(--icon-foreground); .layer-row.hidden & { - opacity: $op-7; + opacity: deprecated.$op-7; } .type-comp & { stroke: var(--layer-row-component-foreground-color); @@ -223,22 +228,22 @@ .element-actions.selected & { display: flex; - opacity: $op-0; + opacity: deprecated.$op-0; &.selected { - opacity: $op-10; + opacity: deprecated.$op-10; } } .layer-row:hover .element-actions.selected & { - opacity: $op-10; + opacity: deprecated.$op-10; } .layer-row.highlight &, .layer-row:hover & { display: flex; svg { - opacity: $op-10; + opacity: deprecated.$op-10; stroke: var(--layer-row-foreground-color-hover); } } @@ -252,15 +257,15 @@ :global(.sticky) { position: sticky; - top: $s-0; - z-index: $z-index-4; + top: deprecated.$s-0; + z-index: deprecated.$z-index-4; } .tab-indentation { display: block; - height: $s-16; + height: deprecated.$s-16; min-width: calc(var(--depth) * var(--layer-indentation-size)); } .filtered { - min-width: $s-12; + min-width: deprecated.$s-12; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/layer_name.scss b/frontend/src/app/main/ui/workspace/sidebar/layer_name.scss index ae32b320a2..e2e4b1a723 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layer_name.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/layer_name.scss @@ -4,15 +4,15 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-name { --element-name-color: var(--context-hover-color, var(--layer-row-foreground-color)); --element-name-comp-color: var(--context-hover-color, var(--layer-row-component-foreground-color)); - --element-name-opacity: var(--context-hover-opacity, $op-7); + --element-name-opacity: var(--context-hover-opacity, deprecated.$op-7); - @include textEllipsis; - @include bodySmallTypography; + @include deprecated.textEllipsis; + @include deprecated.bodySmallTypography; color: var(--element-name-color); @@ -42,21 +42,21 @@ --element-name-input-border-color: var(--input-border-color-focus); --element-name-input-color: var(--layer-row-foreground-color); - @include textEllipsis; - @include bodySmallTypography; - @include removeInputStyle; + @include deprecated.textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.removeInputStyle; flex-grow: 1; - height: $s-28; + height: deprecated.$s-28; max-inline-size: calc(var(--parent-size) - (var(--depth) * var(--layer-indentation-size))); margin: 0; - padding-inline-start: $s-6; - border-radius: $br-8; - border: $s-1 solid var(--element-name-input-border-color); + padding-inline-start: deprecated.$s-6; + border-radius: deprecated.$br-8; + border: deprecated.$s-1 solid var(--element-name-input-border-color); color: var(--element-name-input-color); &.selected { - min-inline-size: $s-100; + min-inline-size: deprecated.$s-100; } } diff --git a/frontend/src/app/main/ui/workspace/sidebar/layers.cljs b/frontend/src/app/main/ui/workspace/sidebar/layers.cljs index dcc12bdb65..398473f54c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layers.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/layers.cljs @@ -72,7 +72,7 @@ highlighted (hooks/use-equal-memo highlighted) root (get objects uuid/zero)] [:div {:class (stl/css :element-list) :data-testid "layer-item"} - [:& hooks/sortable-container {} + [:> hooks/sortable-container* {} (for [[index id] (reverse (d/enumerate (:shapes root)))] (when-let [obj (get objects id)] (if (cfh/frame-shape? obj) diff --git a/frontend/src/app/main/ui/workspace/sidebar/layers.scss b/frontend/src/app/main/ui/workspace/sidebar/layers.scss index a2595ab740..1aa4b9845a 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layers.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/layers.scss @@ -4,36 +4,36 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .tool-window-bar { display: flex; align-items: center; justify-content: space-between; - height: $s-32; - min-height: $s-32; - margin: $s-8 0 $s-4 $s-8; - padding-right: $s-12; + height: deprecated.$s-32; + min-height: deprecated.$s-32; + margin: deprecated.$s-8 0 deprecated.$s-4 deprecated.$s-8; + padding-right: deprecated.$s-12; &.search { - padding: 0 $s-12 0 $s-8; - gap: $s-4; + padding: 0 deprecated.$s-12 0 deprecated.$s-8; + gap: deprecated.$s-4; .filter-button { - @include flexCenter; - @include buttonStyle; - height: $s-32; - width: $s-32; + @include deprecated.flexCenter; + @include deprecated.buttonStyle; + height: deprecated.$s-32; + width: deprecated.$s-32; margin: 0; - border: $s-1 solid var(--color-background-tertiary); - border-radius: $br-8 $br-2 $br-2 $br-8; + border: deprecated.$s-1 solid var(--color-background-tertiary); + border-radius: deprecated.$br-8 deprecated.$br-2 deprecated.$br-2 deprecated.$br-8; background-color: var(--color-background-tertiary); svg { - height: $s-16; - width: $s-16; + height: deprecated.$s-16; + width: deprecated.$s-16; stroke: var(--icon-foreground); } &:focus { - border: $s-1 solid var(--input-border-color-focus); + border: deprecated.$s-1 solid var(--input-border-color-focus); outline: 0; background-color: var(--input-background-color-active); color: var(--input-foreground-color-active); @@ -42,7 +42,7 @@ } } &:hover { - border: $s-1 solid var(--input-border-color-hover); + border: deprecated.$s-1 solid var(--input-border-color-hover); background-color: var(--input-background-color-hover); svg { background-color: var(--input-background-color-hover); @@ -57,17 +57,17 @@ } .page-name { - @include uppercaseTitleTipography; - padding: 0 $s-12; + @include deprecated.uppercaseTitleTipography; + padding: 0 deprecated.$s-12; color: var(--title-foreground-color); } .icon-search { @extend .button-tertiary; - height: $s-32; - width: $s-28; - border-radius: $br-8; - margin-right: $s-8; + height: deprecated.$s-32; + width: deprecated.$s-28; + border-radius: deprecated.$br-8; + margin-right: deprecated.$s-8; padding: 0; svg { @extend .button-icon; @@ -76,7 +76,7 @@ } .focus-title { - @include buttonStyle; + @include deprecated.buttonStyle; display: grid; grid-template-columns: auto 1fr auto; align-items: center; @@ -85,10 +85,10 @@ } .back-button { - @include flexCenter; - height: $s-32; - width: $s-24; - padding: 0 $s-4 0 $s-8; + @include deprecated.flexCenter; + height: deprecated.$s-32; + width: deprecated.$s-24; + padding: 0 deprecated.$s-4 0 deprecated.$s-8; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -97,30 +97,30 @@ } .focus-name { - @include textEllipsis; - @include bodySmallTypography; - padding-left: $s-4; + @include deprecated.textEllipsis; + @include deprecated.bodySmallTypography; + padding-left: deprecated.$s-4; color: var(--title-foreground-color); } .focus-mode-tag-wrapper { - @include flexCenter; + @include deprecated.flexCenter; height: 100%; - margin-right: $s-12; + margin-right: deprecated.$s-12; } .active-filters { - @include flexRow; + @include deprecated.flexRow; flex-wrap: wrap; - margin: 0 $s-12; + margin: 0 deprecated.$s-12; } .layer-filter { @extend .button-tag; - gap: $s-6; - height: $s-24; - margin: $s-2 0; - border-radius: $br-6; + gap: deprecated.$s-6; + height: deprecated.$s-24; + margin: deprecated.$s-2 0; + border-radius: deprecated.$br-6; background-color: var(--pill-background-color); cursor: pointer; } @@ -131,8 +131,8 @@ } .layer-filter-name { - @include flexCenter; - @include bodySmallTypography; + @include deprecated.flexCenter; + @include deprecated.bodySmallTypography; color: var(--pill-foreground-color); } @@ -143,26 +143,26 @@ .filters-container { @extend .menu-dropdown; position: absolute; - left: $s-20; - width: $s-192; + left: deprecated.$s-20; + width: deprecated.$s-192; .filter-menu-item { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; justify-content: space-between; width: 100%; - padding: $s-6; - border-radius: $br-8; + padding: deprecated.$s-6; + border-radius: deprecated.$br-8; .filter-menu-item-name-wrapper { display: flex; align-items: center; - gap: $s-8; + gap: deprecated.$s-8; .filter-menu-item-icon { color: var(--menu-foreground-color); } .filter-menu-item-name { - padding-top: $s-2; + padding-top: deprecated.$s-2; color: var(--menu-foreground-color); } } @@ -203,7 +203,7 @@ } .tool-window-content { - --calculated-height: calc(#{$s-136} + var(--height, #{$s-200})); + --calculated-height: calc(#{deprecated.$s-136} + var(--height, #{deprecated.$s-200})); display: flex; flex-direction: column; height: calc(100vh - var(--calculated-height)); diff --git a/frontend/src/app/main/ui/workspace/sidebar/options.cljs b/frontend/src/app/main/ui/workspace/sidebar/options.cljs index 37510ba166..ddd314ca40 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options.cljs @@ -23,7 +23,7 @@ [app.main.ui.workspace.sidebar.options.drawing :as drawing] [app.main.ui.workspace.sidebar.options.menus.align :refer [align-options*]] [app.main.ui.workspace.sidebar.options.menus.bool :refer [bool-options*]] - [app.main.ui.workspace.sidebar.options.menus.component :refer [component-menu]] + [app.main.ui.workspace.sidebar.options.menus.component :refer [component-menu*]] [app.main.ui.workspace.sidebar.options.menus.grid-cell :as grid-cell] [app.main.ui.workspace.sidebar.options.menus.interactions :refer [interactions-menu]] [app.main.ui.workspace.sidebar.options.menus.layout-container :as layout-container] @@ -46,7 +46,7 @@ (mf/defc single-shape-options* {::mf/private true} - [{:keys [shape page-id file-id libraries] :as props}] + [{:keys [shape page-id file-id libraries] :rest props}] (let [shape-type (dm/get-prop shape :type) shape-id (dm/get-prop shape :id) @@ -54,7 +54,7 @@ modifiers (dm/get-in modifiers [shape-id :modifiers]) shape (gsh/transform-shape shape modifiers) - props (mf/spread-props props {:shape shape})] + props (mf/spread-props props {:shape shape :file-id file-id :page-id page-id})] (case shape-type :frame [:> frame/options* props] @@ -89,7 +89,7 @@ {::mf/private true} [{:keys [panel]}] (when (= (:type panel) :component-swap) - [:& component-menu {:shapes (:shapes panel) :swap-opened? true}])) + [:> component-menu* {:shapes (:shapes panel) :is-swap-opened true}])) (mf/defc design-menu* {::mf/private true} diff --git a/frontend/src/app/main/ui/workspace/sidebar/options.scss b/frontend/src/app/main/ui/workspace/sidebar/options.scss index 4aad10f018..8a819471e8 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options.scss @@ -4,8 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/_sizes.scss" as *; .tool-window { position: relative; @@ -15,23 +14,26 @@ } .tab-spacing { - margin-right: $s-12; + margin-inline-end: var(--sp-m); } .content-class { overflow-y: auto; overflow-x: hidden; - height: calc(100vh - $s-96); + height: calc(100vh - #{$sz-96}); scrollbar-gutter: stable; } .element-options { display: flex; flex-direction: column; - gap: $s-8; + gap: var(--sp-s); width: 100%; - height: calc(100vh - $sz-88); - padding-top: $s-8; + /* FIXME: This is hacky and prone to break, we should tackle the whole layout + of the sidebar differently */ + --sidebar-element-options-height: calc(100vh - #{$sz-88}); + height: var(--sidebar-element-options-height); + padding-block-start: var(--sp-s); } .read-only { diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/common.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/common.cljs index 1efb38e5a0..7ea8e42132 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/common.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/common.cljs @@ -7,20 +7,20 @@ (ns app.main.ui.workspace.sidebar.options.common (:require-macros [app.main.style :as stl]) (:require - [app.common.data.macros :as dm] [app.util.dom :as dom] [rumext.v2 :as mf])) -(mf/defc advanced-options [{:keys [visible? class children]}] +(mf/defc advanced-options* + [{:keys [class is-visible children]}] (let [ref (mf/use-ref nil)] (mf/use-effect - (mf/deps visible?) + (mf/deps is-visible) (fn [] (when-let [node (mf/ref-val ref)] - (when visible? + (when is-visible (dom/scroll-into-view-if-needed! node))))) - (when visible? - [:div {:class (dm/str class " " (stl/css :advanced-options-wrapper)) + (when is-visible + [:div {:class [class (stl/css :advanced-options-wrapper)] :ref ref} children]))) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/common.scss b/frontend/src/app/main/ui/workspace/sidebar/options/common.scss index ce1ffb4d6f..abad10d4af 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/common.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/common.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; - .advanced-options-wrapper { - @include flexColumn; + display: flex; + flex-direction: column; + gap: var(--sp-xs); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/drawing/frame.scss b/frontend/src/app/main/ui/workspace/sidebar/options/drawing/frame.scss index 442f03036b..c435bfae64 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/drawing/frame.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/drawing/frame.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../../../../ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/_sizes.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .presets { display: grid; @@ -19,12 +19,12 @@ position: relative; grid-column: span 6; display: flex; - height: $s-32; - padding: $s-8; - border-radius: $br-8; + height: deprecated.$s-32; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; .collapsed-icon { - @include flexCenter; + @include deprecated.flexCenter; cursor: pointer; svg { @extend .button-icon-small; @@ -45,7 +45,7 @@ } .select-name { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; justify-content: flex-start; align-items: center; @@ -55,14 +55,14 @@ .custom-select-dropdown { @extend .dropdown-wrapper; - margin-top: $s-2; + margin-top: deprecated.$s-2; max-height: 70vh; - width: $s-252; + width: deprecated.$s-252; .dropdown-element { @extend .dropdown-element-base; .name-wrapper { display: flex; - gap: $s-8; + gap: deprecated.$s-8; flex-grow: 1; .preset-name { color: var(--menu-foreground-color-rest); @@ -73,7 +73,7 @@ } .check-icon { - @include flexCenter; + @include deprecated.flexCenter; svg { @extend .button-icon-small; stroke: var(--icon-foreground); diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/align.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/align.scss index a2ec2aafd2..17a8224454 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/align.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/align.scss @@ -4,13 +4,13 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .align-options { display: grid; grid-template-columns: repeat(8, var(--sp-xxxl)); column-gap: var(--sp-xs); - height: $s-32; + height: deprecated.$s-32; } .align-group-horizontal, .align-group-vertical { @@ -30,10 +30,10 @@ .align-button { @extend .button-tertiary; - height: $s-32; - width: $s-32; + height: deprecated.$s-32; + width: deprecated.$s-32; padding: 0; - border-radius: $br-8; + border-radius: deprecated.$br-8; svg { @extend .button-icon; stroke: var(--icon-foreground); diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/blur.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/blur.scss index 962fb292ff..9c2e5733d7 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/blur.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/blur.scss @@ -4,20 +4,26 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { - margin: 0; + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); +} + +.element-title { + grid-column: span 8; } .title-spacing-blur { - padding-left: $s-2; + padding-left: deprecated.$s-2; margin: 0; } .element-set-content { - @include flexColumn; - margin-bottom: $s-8; + @include deprecated.flexColumn; + margin-bottom: deprecated.$s-8; } .first-row { @@ -29,17 +35,17 @@ grid-column: span 6; display: flex; align-items: center; - gap: $s-1; + gap: deprecated.$s-1; flex-grow: 1; - border-radius: $br-8; + border-radius: deprecated.$br-8; background-color: var(--input-details-color); .show-more { @extend .button-secondary; - height: $s-32; - width: $s-28; - border-radius: $br-8 0 0 $br-8; + height: deprecated.$s-32; + width: deprecated.$s-28; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; box-sizing: border-box; - border: $s-1 solid var(--button-secondary-background-color-rest); + border: deprecated.$s-1 solid var(--button-secondary-background-color-rest); svg { @extend .button-icon; } @@ -51,33 +57,33 @@ } } .label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; flex-grow: 1; display: flex; align-items: center; - height: $s-32; - padding: 0 $s-8; - border-radius: 0 $br-8 $br-8 0; + height: deprecated.$s-32; + padding: 0 deprecated.$s-8; + border-radius: 0 deprecated.$br-8 deprecated.$br-8 0; background-color: var(--input-background-color); color: var(--menu-foreground-color); box-sizing: border-box; - border: $s-1 solid var(--input-border-color); + border: deprecated.$s-1 solid var(--input-border-color); } } .actions { - @include flexRow; + @include deprecated.flexRow; } &.hidden { .blur-info { - @include hiddenElement; + @include deprecated.hiddenElement; .show-more { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); + @include deprecated.hiddenElement; + border: deprecated.$s-1 solid var(--input-border-color-disabled); } .label { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); + @include deprecated.hiddenElement; + border: deprecated.$s-1 solid var(--input-border-color-disabled); } } } @@ -85,10 +91,10 @@ .second-row { @extend .input-element; - @include bodySmallTypography; - width: $s-92; + @include deprecated.bodySmallTypography; + width: deprecated.$s-92; .label { - padding-left: $s-8; - width: $s-60; + padding-left: deprecated.$s-8; + width: deprecated.$s-60; } } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/bool.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/bool.scss index 3aedcaa593..ab0f18d00e 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/bool.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/bool.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .boolean-options { display: grid; @@ -21,9 +21,9 @@ .flatten-button { @extend .button-tertiary; - height: $s-32; - width: $s-32; - border-radius: $br-8; + height: deprecated.$s-32; + width: deprecated.$s-32; + border-radius: deprecated.$br-8; grid-column: 5 / span 1; --flatten-icon-foreground-color: var(--icon-foreground); diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs index b30ee20cbf..d2311f26d4 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs @@ -5,7 +5,7 @@ [app.common.types.shape.radius :as ctsr] [app.main.data.workspace.shapes :as dwsh] [app.main.store :as st] - [app.main.ui.components.numeric-input :refer [numeric-input*]] + [app.main.ui.components.numeric-input :as deprecated-input] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.foundations.assets.icon :refer [icon*] :as i] [app.main.ui.hooks :as hooks] @@ -68,6 +68,7 @@ (change-radius (fn [shape] (ctsr/set-radius-to-all-corners shape value)))))) + on-radius-4-change (mf/use-fn (mf/deps ids change-radius) @@ -98,7 +99,7 @@ [:> icon* {:icon-id i/corner-radius :size "s" :class (stl/css :icon)}] - [:> numeric-input* + [:> deprecated-input/numeric-input* {:placeholder (cond (not all-equal?) "Mixed" @@ -113,7 +114,7 @@ [:div {:class (stl/css :radius-4)} [:div {:class (stl/css :small-input)} - [:> numeric-input* + [:> deprecated-input/numeric-input* {:placeholder "--" :title (tr "workspace.options.radius-top-left") :min 0 @@ -121,7 +122,7 @@ :value (:r1 values)}]] [:div {:class (stl/css :small-input)} - [:> numeric-input* + [:> deprecated-input/numeric-input* {:placeholder "--" :title (tr "workspace.options.radius-top-right") :min 0 @@ -129,7 +130,7 @@ :value (:r2 values)}]] [:div {:class (stl/css :small-input)} - [:> numeric-input* + [:> deprecated-input/numeric-input* {:placeholder "--" :title (tr "workspace.options.radius-bottom-left") :min 0 @@ -137,7 +138,7 @@ :value (:r4 values)}]] [:div {:class (stl/css :small-input)} - [:> numeric-input* + [:> deprecated-input/numeric-input* {:placeholder "--" :title (tr "workspace.options.radius-bottom-right") :min 0 diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/border_radius.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/border_radius.scss index 0a93669b5e..65a421790c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/border_radius.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/border_radius.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .radius { display: grid; @@ -14,7 +14,7 @@ .radius-1 { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } .radius-4 { @@ -25,7 +25,7 @@ .small-input { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } .selected { @@ -35,5 +35,5 @@ } .icon { - margin-inline: $s-4; + margin-inline: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs index 64a34297a1..a785230dac 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs @@ -10,6 +10,7 @@ [app.common.data :as d] [app.main.data.workspace.colors :as dwc] [app.main.data.workspace.selection :as dws] + [app.main.data.workspace.tokens.application :as dwta] [app.main.store :as st] [app.main.ui.components.title-bar :refer [title-bar*]] [app.main.ui.hooks :as h] @@ -34,6 +35,18 @@ (def xf:map-shape-id (map :shape-id)) +(defn- generate-color-operations + [groups old-color prev-colors] + (let [old-color (-> old-color + (dissoc :name :path) + (d/without-nils)) + prev-color (d/seek (partial get groups) prev-colors) + color-operations-old (get groups old-color) + color-operations-prev (get groups prev-colors) + color-operations (or color-operations-prev color-operations-old) + old-color (or prev-color old-color)] + [color-operations old-color])) + (mf/defc color-selection-menu* {::mf/wrap [#(mf/memo' % (mf/check-props ["shapes"]))]} [{:keys [shapes file-id libraries]}] @@ -57,22 +70,13 @@ on-change (mf/use-fn (fn [new-color old-color from-picker?] - (let [old-color (-> old-color - (dissoc :name :path) - (d/without-nils)) - - ;; When dragging on the color picker sometimes all + (let [;; When dragging on the color picker sometimes all ;; the shapes hasn't updated the color to the prev ;; value so we need this extra calculation groups (mf/ref-val groups-ref) prev-colors (mf/ref-val prev-colors-ref) - prev-color (d/seek (partial get groups) prev-colors) - - cops-old (get groups old-color) - cops-prev (get groups prev-colors) - cops (or cops-prev cops-old) - old-color (or prev-color old-color)] + [color-operations old-color] (generate-color-operations groups old-color prev-colors)] (when from-picker? (let [color (-> new-color @@ -81,7 +85,7 @@ (mf/set-ref-val! prev-colors-ref (conj prev-colors color)))) - (st/emit! (dwc/change-color-in-selected cops new-color old-color))))) + (st/emit! (dwc/change-color-in-selected color-operations new-color old-color))))) on-open (mf/use-fn #(mf/set-ref-val! prev-colors-ref [])) @@ -93,17 +97,32 @@ (mf/use-fn (fn [color] (let [groups (mf/ref-val groups-ref) - cops (get groups color) + color-operations (get groups color) color' (dissoc color :id :file-id)] - (st/emit! (dwc/change-color-in-selected cops color' color))))) + (st/emit! (dwc/change-color-in-selected color-operations color' color))))) select-only (mf/use-fn (fn [color] (let [groups (mf/ref-val groups-ref) - cops (get groups color) - ids (into (d/ordered-set) xf:map-shape-id cops)] - (st/emit! (dws/select-shapes ids)))))] + color-operations (get groups color) + ids (into (d/ordered-set) xf:map-shape-id color-operations)] + (st/emit! (dws/select-shapes ids))))) + + on-token-change + (mf/use-fn + (fn [_ token old-color] + (let [groups (mf/ref-val groups-ref) + prev-colors (mf/ref-val prev-colors-ref) + resolved-value (:resolved-value token) + new-color (dwta/value->color resolved-value) + color (-> new-color + (dissoc :name :path) + (d/without-nils)) + [color-operations _] (generate-color-operations groups old-color prev-colors)] + (mf/set-ref-val! prev-colors-ref + (conj prev-colors color)) + (st/emit! (dwta/apply-token-on-selected color-operations token)))))] [:div {:class (stl/css :element-set)} [:div {:class (stl/css :element-title)} @@ -132,7 +151,9 @@ :on-detach on-detach :select-only select-only :on-change #(on-change %1 color %2) + :on-token-change #(on-token-change %1 %2 color) :on-open on-open + :origin :color-selection :on-close on-close}])) (when (and (false? @expand-lib-color) (< 3 (count library-colors))) [:button {:class (stl/css :more-colors-btn) @@ -147,6 +168,8 @@ :index index :select-only select-only :on-change #(on-change %1 color %2) + :origin :color-selection + :on-token-change #(on-token-change %1 %2 color) :on-open on-open :on-close on-close}]) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.scss index 0ded56cb7a..46f0793a15 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/color_selection.scss @@ -4,37 +4,44 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { - margin: 0; + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); +} + +.element-title { + grid-column: span 8; } .title-spacing-selected-colors { - padding-left: $s-2; + padding-left: deprecated.$s-2; margin: 0; } .add-fill { @extend .button-tertiary; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; } } .element-content { - @include flexColumn; - margin-bottom: $s-8; + grid-column: span 8; + @include deprecated.flexColumn; + margin-bottom: deprecated.$s-8; } .selected-color-group { - @include flexColumn; + @include deprecated.flexColumn; } .more-colors-btn { @extend .button-secondary; - @include uppercaseTitleTipography; - height: $s-32; + @include deprecated.uppercaseTitleTipography; + height: deprecated.$s-32; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/component.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/component.cljs index 830b364c69..b34552e7f2 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/component.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/component.cljs @@ -11,6 +11,7 @@ [app.common.data.macros :as dm] [app.common.files.helpers :as cfh] [app.common.files.variant :as cfv] + [app.common.path-names :as cpn] [app.common.types.component :as ctk] [app.common.types.components-list :as ctkl] [app.common.types.file :as ctf] @@ -28,10 +29,12 @@ [app.main.store :as st] [app.main.ui.components.dropdown :refer [dropdown]] [app.main.ui.components.radio-buttons :refer [radio-button radio-buttons]] + [app.main.ui.components.reorder-handler :refer [reorder-handler*]] [app.main.ui.components.search-bar :refer [search-bar*]] [app.main.ui.components.select :refer [select]] [app.main.ui.components.title-bar :refer [title-bar*]] [app.main.ui.context :as ctx] + [app.main.ui.ds.buttons.button :refer [button*]] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.controls.combobox :refer [combobox*]] [app.main.ui.ds.controls.select :refer [select*]] @@ -148,12 +151,11 @@ (dw/set-annotations-id-for-create nil)) (dw/update-component-annotation component-id nil) (rerender-fn)))] - (st/emit! (modal/show - {:type :confirm - :title (tr "modals.delete-component-annotation.title") - :message (tr "modals.delete-component-annotation.message") - :accept-label (tr "ds.confirm-ok") - :on-accept on-accept})))))] + (st/emit! (modal/show {:type :confirm + :title (tr "modals.delete-component-annotation.title") + :message (tr "modals.delete-component-annotation.message") + :accept-label (tr "ds.confirm-ok") + :on-accept on-accept})))))] (mf/with-effect [shape-id state create-id creating?] (when-let [textarea (mf/ref-val textarea-ref)] @@ -170,31 +172,28 @@ (st/emit! (dw/set-annotations-id-for-create nil))))) (when (or creating? annotation) - [:div {:class (stl/css-case - :component-annotation true - :editing editing? - :creating creating?)} - [:div {:class (stl/css-case - :annotation-title true - :expandeable (not (or editing? creating?)) - :expanded expanded?) + [:div {:class (stl/css-case :annotation true + :editing editing? + :creating creating?)} + [:div {:class (stl/css-case :annotation-title true + :expandeable (not (or editing? creating?)) + :expanded expanded?) :on-click on-toggle-expand} (if (or editing? creating?) - [:span {:class (stl/css :annotation-text)} + [:span {:class (stl/css :annotation-title-name)} (if editing? (tr "workspace.options.component.edit-annotation") (tr "workspace.options.component.create-annotation"))] [:* - [:span {:class (stl/css-case - :icon-arrow true - :expanded expanded?)} - deprecated-icon/arrow] - [:span {:class (stl/css :annotation-text)} + [:> icon* {:icon-id (if expanded? i/arrow-down i/arrow-right) + :class (stl/css :annotation-title-icon-arrow) + :size "s"}] + [:span {:class (stl/css :annotation-title-name)} (tr "workspace.options.component.annotation")]]) - [:div {:class (stl/css :icons-wrapper)} + [:div {:class (stl/css :annotation-title-actions)} (when (and ^boolean main-instance? ^boolean expanded?) (if (or ^boolean editing? @@ -204,40 +203,41 @@ (tr "labels.create") (tr "labels.save")) :on-click on-save - :class (stl/css-case - :icon true - :icon-tick true - :invalid invalid-text?)} - deprecated-icon/tick] - [:div {:class (stl/css :icon :icon-cross) + :class (stl/css :annotation-title-icon-action)} + [:> icon* {:icon-id i/tick + :class (stl/css-case :annotation-title-icon-ok true + :disabled invalid-text?)}]] + [:div {:class (stl/css :annotation-title-icon-action) :title (tr "labels.discard") :on-click on-discard} - deprecated-icon/close]] + [:> icon* {:icon-id i/close + :class (stl/css :annotation-title-icon-nok)}]]] [:* - [:div {:class (stl/css :icon :icon-edit) + [:div {:class (stl/css :annotation-title-icon-action) :title (tr "labels.edit") :on-click on-edit} - deprecated-icon/curve] - [:div {:class (stl/css :icon :icon-trash) + [:> icon* {:icon-id i/curve + :class (stl/css :annotation-title-icon-ok)}]] + [:div {:class (stl/css :annotation-title-icon-action) :title (tr "labels.delete") :on-click on-delete-annotation} - deprecated-icon/delete]]))]] + [:> icon* {:icon-id i/delete + :class (stl/css :annotation-title-icon-nok)}]]]))]] - [:div {:class (stl/css-case :hidden (not expanded?))} - [:div {:class (stl/css :grow-wrap)} - [:div {:class (stl/css :texarea-copy)}] - [:textarea - {:ref textarea-ref - :id "annotation-textarea" - :data-debug annotation - :auto-focus (or editing? creating?) - :maxLength 300 - :on-input adjust-textarea-size - :default-value annotation - :read-only (not (or creating? editing?))}]] + [:div {:class (stl/css-case :annotation-body-hidden (not expanded?))} + [:div {:class (stl/css :annotation-body)} + [:textarea {:ref textarea-ref + :id "annotation-textarea" + :class (stl/css :annotation-textarea) + :data-debug annotation + :auto-focus (or editing? creating?) + :max-length 300 + :on-input adjust-textarea-size + :default-value annotation + :read-only (not (or creating? editing?))}]] (when (or editing? creating?) - [:div {:class (stl/css :counter)} (str size "/300")])]]))) + [:div {:class (stl/css :annotation-counter)} (str size "/300")])]]))) (defn- get-variant-malformed-warning-message "Receive a list of booleans, one for each selected variant, indicating if that variant @@ -299,7 +299,47 @@ (mapv (fn [val] {:id val :label (if (str/blank? val) (str "(" (tr "labels.empty") ")") val)})))) -(mf/defc component-variant-main-instance* +(mf/defc component-variant-property* + [{:keys [pos prop options on-prop-name-blur on-prop-value-change on-reorder]}] + (let [on-drop + (mf/use-fn + (fn [relative-pos data] + (let [from-pos (:from-pos data) + to-space-between-pos (if (= relative-pos :bot) (inc pos) pos)] + (on-reorder from-pos to-space-between-pos)))) + + [dprops dref] + (h/use-sortable + :data-type "penpot/variant-property" + :on-drop on-drop + :draggable? true + :data {:from-pos pos})] + + [:div {:class (stl/css-case :variant-property true + :dnd-over-top (= (:over dprops) :top) + :dnd-over-bot (= (:over dprops) :bot))} + (when (some? on-reorder) + [:> reorder-handler* {:ref dref}]) + + [:div {:class (stl/css :variant-property-container)} + [:div {:class (stl/css :variant-property-name-wrapper)} + [:> input-with-meta* {:value (:name prop) + :is-editing (:editing? (meta prop)) + :max-length ctv/property-max-length + :data-position pos + :on-blur on-prop-name-blur}]] + + [:div {:class (stl/css :variant-property-value-wrapper)} + (let [mixed-value? (= (:value prop) false)] + [:> combobox* {:id (str "variant-prop-" pos) + :placeholder (if mixed-value? (tr "settings.multiple") "--") + :default-selected (if mixed-value? "" (:value prop)) + :options options + :empty-to-end true + :max-length ctv/property-max-length + :on-change on-prop-value-change}])]]])) + +(mf/defc component-variant* [{:keys [components shapes data]}] (let [component (first components) @@ -355,33 +395,28 @@ int)] (when (seq value) (st/emit! - (dwv/update-property-name variant-id pos value {:trigger "workspace:design-tab-variant"}))))))] + (dwv/update-property-name variant-id pos value {:trigger "workspace:design-tab-variant"})))))) + + reorder-properties + (mf/use-fn + (mf/deps variant-id) + (fn [from-pos to-space-between-pos] + (st/emit! (dwv/reorder-variant-poperties variant-id from-pos to-space-between-pos))))] [:* - [:div {:class (stl/css :variant-property-list)} - (for [[pos prop] (map-indexed vector properties)] - [:div {:key (str variant-id "-" pos) - :class (stl/css :variant-property-container)} - - [:div {:class (stl/css :variant-property-name-wrapper)} - [:> input-with-meta* {:value (:name prop) - :is-editing (:editing? (meta prop)) - :max-length ctv/property-max-length - :data-position pos - :on-blur update-property-name}]] - - [:div {:class (stl/css :variant-property-value-wrapper)} - (let [mixed-value? (= (:value prop) false)] - [:> combobox* {:id (str "variant-prop-" variant-id "-" pos) - :placeholder (if mixed-value? (tr "settings.multiple") "--") - :default-selected (if mixed-value? "" (:value prop)) - :options (get-options (:name prop)) - :empty-to-end true - :max-length ctv/property-max-length - :on-change (partial update-property-value pos)}])]])] + [:> h/sortable-container* {} + [:div {:class (stl/css :variant-property-list)} + (for [[pos prop] (map-indexed vector properties)] + [:> component-variant-property* {:key (str variant-id "-" pos) + :pos pos + :prop prop + :options (get-options (:name prop)) + :on-prop-name-blur update-property-name + :on-prop-value-change (partial update-property-value pos) + :on-reorder reorder-properties}])]] (if malformed-msg - [:div {:class (stl/css :variant-warning-wrapper)} + [:div {:class (stl/css :variant-warning)} [:> icon* {:icon-id i/msg-neutral :class (stl/css :variant-warning-darken)}] [:div {:class (stl/css :variant-warning-highlight)} @@ -390,22 +425,23 @@ (tr "workspace.options.component.variant.malformed.structure.example")]] (when duplicated-msg - [:div {:class (stl/css :variant-warning-wrapper)} + [:div {:class (stl/css :variant-warning)} [:> icon* {:icon-id i/msg-neutral :class (stl/css :variant-warning-darken)}] [:div {:class (stl/css :variant-warning-highlight)} (str duplicated-msg)]]))])) (mf/defc component-variant-copy* - [{:keys [component shape data current-file-id]}] - (let [page-objects (mf/deref refs/workspace-page-objects) - component-id (:id component) - properties (:variant-properties component) + [{:keys [components shapes component-file-data current-file-id]}] + (let [component (first components) + shape (first shapes) + properties (map :variant-properties components) + props-first (:variant-properties component) variant-id (:variant-id component) - objects (-> (dsh/get-page data (:main-instance-page component)) - (get :objects)) - variant-comps (mf/with-memo [data objects variant-id] - (cfv/find-variant-components data objects variant-id)) + component-page-objects (-> (dsh/get-page component-file-data (:main-instance-page component)) + (get :objects)) + variant-comps (mf/with-memo [component-file-data component-page-objects variant-id] + (cfv/find-variant-components component-file-data component-page-objects variant-id)) duplicated-comps (mf/with-memo [variant-comps] (->> variant-comps @@ -414,11 +450,11 @@ malformed-comps (mf/with-memo [variant-comps] (->> variant-comps (filter #(->> (:main-instance-id %) - (get objects) + (get component-page-objects) :variant-error)))) - prop-vals (mf/with-memo [data objects variant-id] - (cfv/extract-properties-values data objects variant-id)) + prop-vals (mf/with-memo [component-file-data component-page-objects variant-id] + (cfv/extract-properties-values component-file-data component-page-objects variant-id)) get-options (mf/use-fn @@ -449,50 +485,48 @@ ;; Used to force a remount after an error key* (mf/use-state (uuid/next)) key (deref key*) + mixed-label (tr "settings.multiple") switch-component (mf/use-fn - (mf/deps shape component component-id variant-comps) + (mf/deps shapes) (fn [pos val] - (when (not= val (dm/get-in component [:variant-properties pos :value])) - (let [target-props (-> (:variant-properties component) - (update pos assoc :value val)) - valid-comps (->> variant-comps - (remove #(= (:id %) component-id)) - (filter #(= (dm/get-in % [:variant-properties pos :value]) val)) - (reverse)) - nearest-comp (apply min-key #(ctv/distance target-props (:variant-properties %)) valid-comps) - parents (cfh/get-parents-with-self page-objects (:parent-id shape)) - children (cfh/get-children-with-self objects (:main-instance-id nearest-comp)) - comps-nesting-loop? (seq? (cfh/components-nesting-loop? children parents))] + (if (= val mixed-label) + (reset! key* (uuid/next)) + (let [error-msg (if (> (count shapes) 1) + (tr "workspace.component.switch.loop-error-multi") + (tr "workspace.component.swap.loop-error")) - (when nearest-comp - (if comps-nesting-loop? - (do - (st/emit! (ntf/error (tr "workspace.component.swap.loop-error"))) - (reset! key* (uuid/next))) - (st/emit! (dwl/component-swap shape (:component-file shape) (:id nearest-comp) true))))))))] + mdata {:on-error #(do + (reset! key* (uuid/next)) + (st/emit! (ntf/error error-msg)))} + params {:shapes shapes :pos pos :val val}] + (st/emit! (dwv/variants-switch (with-meta params mdata)))))))] [:* [:div {:class (stl/css :variant-property-list)} - (for [[pos prop] (map vector (range) properties)] - [:div {:key (str (:id shape) pos) - :class (stl/css :variant-property-container)} + (for [[pos prop] (map-indexed vector props-first)] + (let [mixed-value? (not-every? #(= (:value prop) (:value (nth % pos))) properties) + options (cond-> (get-options (:name prop)) + mixed-value? + (conj {:id mixed-label, :label mixed-label :dimmed true}))] + [:div {:key (str pos mixed-value?) + :class (stl/css :variant-property-container)} - [:div {:class (stl/css :variant-property-name-wrapper) - :title (:name prop)} - [:div {:class (stl/css :variant-property-name)} - (:name prop)]] + [:div {:class (stl/css :variant-property-name-wrapper) + :title (:name prop)} + [:div {:class (stl/css :variant-property-name)} + (:name prop)]] - [:div {:class (stl/css :variant-property-value-wrapper)} - [:> select* {:default-selected (:value prop) - :options (get-options (:name prop)) - :empty-to-end true - :on-change (partial switch-component pos) - :key (str (:value prop) "-" key)}]]])] + [:div {:class (stl/css :variant-property-value-wrapper)} + [:> select* {:default-selected (if mixed-value? mixed-label (:value prop)) + :options options + :empty-to-end true + :on-change (partial switch-component pos) + :key (str (:value prop) "-" key)}]]]))] (if (seq malformed-comps) - [:div {:class (stl/css :variant-warning-wrapper)} + [:div {:class (stl/css :variant-warning)} [:> icon* {:icon-id i/msg-neutral :class (stl/css :variant-warning-darken)}] [:div {:class (stl/css :variant-warning-highlight)} @@ -502,7 +536,7 @@ (tr "workspace.options.component.variant.malformed.locate")]] (when (seq duplicated-comps) - [:div {:class (stl/css :variant-warning-wrapper)} + [:div {:class (stl/css :variant-warning)} [:> icon* {:icon-id i/msg-neutral :class (stl/css :variant-warning-darken)}] [:div {:class (stl/css :variant-warning-highlight)} @@ -523,50 +557,47 @@ item-ref (mf/use-ref) visible? (h/use-visible item-ref :once? true)] - [:div {:ref item-ref - :class (stl/css-case :component-item (not listing-thumbs) - :grid-cell listing-thumbs - :selected (= (:id item) component-id) - :disabled loop) - :key (str "swap-item-" (:id item)) - :on-click on-select} + [:button {:ref item-ref + :key (str "swap-item-" (:id item)) + :class (stl/css-case :swap-item-list (not listing-thumbs) + :swap-item-grid listing-thumbs + :selected (= (:id item) component-id)) + :on-click on-select + :disabled loop} (when visible? - [:> cmm/component-item-thumbnail* - {:file-id (:file-id item) - :class (stl/css :component-img) - :root-shape root-shape - :component item - :container container}]) + [:> cmm/component-item-thumbnail* {:file-id (:file-id item) + :class (stl/css :swap-item-thumbnail) + :root-shape root-shape + :component item + :container container}]) [:span {:title (if is-search (:full-name item) (:name item)) - :class (stl/css-case :component-name true - :selected (= (:id item) component-id))} + :class (stl/css :swap-item-name)} (if is-search (:full-name item) (:name item))] (when (ctk/is-variant? item) - [:span {:class (stl/css-case :variant-mark-cell listing-thumbs - :variant-icon true) + [:span {:class (stl/css :swap-item-variant-icon) :title (tr "workspace.assets.components.num-variants" num-variants)} [:> icon* {:icon-id i/variant :size "s"}]])])) -(mf/defc component-group-item* +(mf/defc component-swap-group-title* [{:keys [item on-enter-group]}] - (let [group-name (:name item) + (let [group-name (:name item) on-group-click #(on-enter-group group-name)] - [:div {:class (stl/css :component-group) + [:div {:class (stl/css :swap-group) :on-click on-group-click :title group-name} - [:span {:class (stl/css :component-group-name)} - (cfh/last-path group-name)] + [:span {:class (stl/css :swap-group-name)} + (cpn/last-path group-name)] - [:> icon* {:class (stl/css :component-group-icon) + [:> icon* {:class (stl/css :swap-group-icon) :variant "ghost" :icon-id i/arrow-right :size "s"}]])) (defn- find-common-path ([components] - (let [paths (map (comp cfh/split-path :path) components)] + (let [paths (map (comp cpn/split-path :path) components)] (find-common-path paths [] 0))) ([paths path n] (let [current (nth (first paths) n nil)] @@ -609,7 +640,7 @@ path (if single? (:path (first components)) - (cfh/join-path (if (not every-same-file?) + (cpn/join-path (if (not every-same-file?) "" (find-common-path components)))) @@ -621,7 +652,7 @@ filters (deref filters*) - is-search? (not (str/blank? (:term filters))) + search? (not (str/blank? (:term filters))) current-library-id (if (contains? libraries (:file-id filters)) (:file-id filters) @@ -631,21 +662,25 @@ (str/upper (tr "workspace.assets.local-library")) (dm/get-in libraries [current-library-id :name])) - current-lib-data (get-in libraries [current-library-id :data]) + current-lib-data (mf/with-memo [libraries] + (get-in libraries [current-library-id :data])) + + current-lib-counts (mf/with-memo [current-lib-data] + (-> (group-by :variant-id + (ctkl/components-seq current-lib-data)) + (update-vals count))) components (->> (get-in libraries [current-library-id :data :components]) vals (remove #(true? (:deleted %))) (remove #(cfv/is-secondary-variant? % current-lib-data)) - (map #(assoc % :full-name (cfh/merge-path-item-with-dot (:path %) (:name %))))) + (map #(assoc % :full-name (cpn/merge-path-item-with-dot (:path %) (:name %))))) count-variants (fn [component] - (->> (ctkl/components-seq current-lib-data) - (filterv #(= (:variant-id component) (:variant-id %))) - count)) + (get current-lib-counts (:variant-id component))) get-subgroups (fn [path] - (let [split-path (cfh/split-path path)] + (let [split-path (cpn/split-path path)] (reduce (fn [acc dir] (conj acc (str (last acc) " / " dir))) [(first split-path)] (rest split-path)))) @@ -656,17 +691,17 @@ (remove str/empty?) (remove nil?) (distinct) - (filter #(= (cfh/butlast-path %) (:path filters)))) + (filter #(= (cpn/butlast-path %) (:path filters)))) - groups (when-not is-search? + groups (when-not search? (->> (sort (sequence xform components)) (map (fn [name] {:name name})))) - components (if is-search? + components (if search? (filter #(str/includes? (str/lower (:full-name %)) (str/lower (:term filters))) components) (filter #(= (:path %) (:path filters)) components)) - items (if (or is-search? (:listing-thumbs? filters)) + items (if (or search? (:listing-thumbs? filters)) (sort-by :full-name components) (->> (concat groups components) (sort-by :name))) @@ -682,7 +717,8 @@ ;; Get the ids of the components that are parents of the shapes, to avoid loops parent-components (mapcat find-parent-components shapes) - libraries-options (map (fn [library] {:value (:id library) :label (:name library)}) + libraries-options (map (fn [library] {:value (:id library) + :label (:name library)}) (vals libraries)) on-library-change @@ -701,7 +737,7 @@ on-go-back (mf/use-fn (mf/deps (:path filters)) - #(swap! filters* assoc :path (cfh/butlast-path (:path filters)))) + #(swap! filters* assoc :path (cpn/butlast-path (:path filters)))) on-enter-group (mf/use-fn #(swap! filters* assoc :path %)) @@ -710,63 +746,61 @@ (mf/use-fn (fn [style] (swap! filters* assoc :listing-thumbs? (= style "grid")))) - filter-path-with-dots (->> (:path filters) (cfh/split-path) (cfh/join-path-with-dot))] - [:div {:class (stl/css :component-swap)} - [:div {:class (stl/css :element-set-title)} + filter-path-with-dots (->> (:path filters) + (cpn/split-path) + (cpn/join-path-with-dot))] + + [:div {:class (stl/css :swap)} + [:div {:class (stl/css :swap-title)} [:span (tr "workspace.options.component.swap")]] - [:div {:class (stl/css :component-swap-content)} - [:div {:class (stl/css :fields-wrapper)} - [:div {:class (stl/css :search-field)} - [:> search-bar* {:on-change on-search-term-change - :on-clear on-search-clear-click - :class (stl/css :search-wrapper) - :id "swap-component-search-filter" - :value (:term filters) - :placeholder (str (tr "labels.search") " " (get-in libraries [current-library-id :name])) - :icon-id i/search}]] - - [:& select {:class (stl/css :select-library) - :default-value current-library-id + [:div {:class (stl/css :swap-content)} + [:div {:class (stl/css :swap-filters)} + [:> search-bar* {:id "swap-component-search-filter" + :icon-id i/search + :value (:term filters) + :placeholder (str (tr "labels.search") " " (get-in libraries [current-library-id :name])) + :on-change on-search-term-change + :on-clear on-search-clear-click}] + [:& select {:default-value current-library-id :options libraries-options :on-change on-library-change}]] - [:div {:class (stl/css :swap-wrapper)} - [:div {:class (stl/css :library-name-wrapper)} - [:div {:class (stl/css :library-name)} current-lib-name] + [:div {:class (stl/css :swap-library)} + [:div {:class (stl/css :swap-library-title)} + [:div {:class (stl/css :swap-library-name)} current-lib-name] + [:& radio-buttons {:selected (if (:listing-thumbs? filters) "grid" "list") + :on-change toggle-list-style + :name "swap-listing-style"} + [:& radio-button {:icon deprecated-icon/view-as-list + :value "list" + :id "swap-opt-list"}] + [:& radio-button {:icon deprecated-icon/flex-grid + :value "grid" + :id "swap-opt-grid"}]]] - [:div {:class (stl/css :listing-options-wrapper)} - [:& radio-buttons {:class (stl/css :listing-options) - :selected (if (:listing-thumbs? filters) "grid" "list") - :on-change toggle-list-style - :name "swap-listing-style"} - [:& radio-button {:icon deprecated-icon/view-as-list - :value "list" - :id "swap-opt-list"}] - [:& radio-button {:icon deprecated-icon/flex-grid - :value "grid" - :id "swap-opt-grid"}]]]] - - (when-not (or is-search? (str/empty? (:path filters))) - [:button {:class (stl/css :component-path) + (when-not (or search? (str/empty? (:path filters))) + [:button {:class (stl/css :swap-library-back) :on-click on-go-back :title filter-path-with-dots} [:> icon* {:icon-id i/arrow-left :size "s"}] - [:span {:class (stl/css :path-name)} + [:span {:class (stl/css :swap-library-back-name)} filter-path-with-dots]]) (when (empty? items) - [:div {:class (stl/css :component-list-empty)} + [:div {:class (stl/css :swap-library-empty)} (tr "workspace.options.component.swap.empty")]) ;;TODO review this empty space (when (:listing-thumbs? filters) - [:div {:class (stl/css :component-list)} + [:div (for [item groups] - [:> component-group-item* {:item item :on-enter-group on-enter-group}])]) + [:> component-swap-group-title* {:item item + :on-enter-group on-enter-group}])]) - [:div {:class (stl/css-case :component-grid (:listing-thumbs? filters) - :component-list (not (:listing-thumbs? filters)))} + [:div {:class (stl/css-case :swap-library-grid (:listing-thumbs? filters) + :swap-library-list (not (:listing-thumbs? filters)))} + ;; FIXME: This could be in the thousands. We need to think about paginate this (for [item items] (if (:id item) (let [data (dm/get-in libraries [current-library-id :data]) @@ -784,34 +818,78 @@ :root-shape root-shape :container container :component-id component-id - :is-search is-search? + :is-search search? :listing-thumbs (:listing-thumbs? filters) :num-variants (count-variants item)}]) - [:> component-group-item* {:item item - :key (:name item) - :on-enter-group on-enter-group}]))]]]])) + [:> component-swap-group-title* {:item item + :key (:name item) + :on-enter-group on-enter-group}]))]]]])) -(mf/defc component-ctx-menu* - [{:keys [menu-entries on-close show main-instance]}] - (let [do-action +(mf/defc component-pill* + [{:keys [icon text subtext menu-entries disabled on-click]}] + (let [menu-open* (mf/use-state false) + menu-open? (deref menu-open*) + + menu-entries? (seq menu-entries) + + on-menu-click + (mf/use-fn + (mf/deps menu-open* menu-open?) + (fn [event] + (dom/prevent-default event) + (dom/stop-propagation event) + (reset! menu-open* (not menu-open?)))) + + on-menu-close + (mf/use-fn + (mf/deps menu-open*) + #(reset! menu-open* false)) + + do-action (fn [action event] (dom/stop-propagation event) (action) - (on-close))] - [:& dropdown {:show show :on-close on-close} - [:ul {:class (stl/css-case :custom-select-dropdown true - :not-main (not main-instance))} - (for [{:keys [title action]} menu-entries] - (when (some? title) - [:li {:key title - :class (stl/css :dropdown-element) - :on-click (partial do-action action)} - [:span {:class (stl/css :dropdown-label)} title]]))]])) + (on-menu-close))] -(mf/defc component-menu - {::mf/props :obj} - [{:keys [shapes swap-opened?]}] + [:div {:class (stl/css :pill)} + [:button {:class (stl/css-case :pill-btn true + :with-menu menu-entries?) + :data-testid "component-pill-button" + :on-click on-click + :disabled disabled} + + [:div {:class (stl/css :pill-btn-icon)} + [:> icon* {:size "s" + :icon-id icon}]] + + [:div {:class (stl/css :pill-btn-name)} + [:div {:class (stl/css :pill-btn-text)} + text] + (when subtext + [:div {:class (stl/css :pill-btn-subtext)} + subtext])]] + + (when menu-entries? + [:div {:class (stl/css :pill-actions)} + [:button {:class (stl/css-case :pill-actions-btn true + :selected menu-open?) + :on-click on-menu-click} + [:> icon* {:icon-id i/menu}]] + + [:& dropdown {:show menu-open? + :on-close on-menu-close} + [:ul {:class (stl/css-case :pill-actions-dropdown true + :extended subtext)} + (for [{:keys [title action]} menu-entries] + (when (some? title) + [:li {:key title + :class (stl/css :pill-actions-dropdown-item) + :on-click (partial do-action action)} + [:span title]]))]]])])) + +(mf/defc component-menu* + [{:keys [shapes is-swap-opened]}] (let [current-file-id (mf/use-ctx ctx/current-file-id) libraries (mf/deref refs/files) @@ -822,7 +900,6 @@ :menu-open false})) state (deref state*) open? (:show-content state) - menu-open? (:menu-open state) shapes (filter ctk/instance-head? shapes) multi (> (count shapes) 1) @@ -832,39 +909,26 @@ all-main? (every? ctk/main-instance? shapes) any-variant? (some ctk/is-variant? shapes) - ;; For when it's only one shape - shape (first shapes) - id (:id shape) - shape-name (:name shape) - - component (ctf/resolve-component shape - current-file - libraries - {:include-deleted? true}) - data (dm/get-in libraries [(:component-file shape) :data]) - is-variant? (ctk/is-variant? component) - - main-instance? (ctk/main-instance? shape) - components (mapv #(ctf/resolve-component % current-file libraries {:include-deleted? true}) shapes) same-variant? (ctv/same-variant? components) + ;; For when it's only one shape + shape (first shapes) + id (:id shape) + shape-name (:name shape) + + component (first components) + data (dm/get-in libraries [(:component-file shape) :data]) + is-variant? (ctk/is-variant? component) + + main-instance? (ctk/main-instance? shape) + toggle-content - (mf/use-fn #(swap! state* update :show-content not)) - - on-menu-click (mf/use-fn - (fn [event] - (dom/prevent-default event) - (dom/stop-propagation event) - (swap! state* update :menu-open not))) - - on-menu-close - (mf/use-fn - #(swap! state* assoc :menu-open false)) + #(swap! state* update :show-content not)) on-click-variant-title-help (mf/use-fn @@ -921,14 +985,13 @@ (swap! state* update :render inc))) menu-entries (cmm/generate-components-menu-entries shapes {:for-design-tab? true}) - show-menu? (seq menu-entries) - path (->> component (:path) (cfh/split-path) (cfh/join-path-with-dot))] + path (->> component (:path) (cpn/split-path) (cpn/join-path-with-dot))] (when (seq shapes) - [:div {:class (stl/css :element-set)} - [:div {:class (stl/css :element-title)} - (if swap-opened? - [:button {:class (stl/css :title-back) + [:div {:class (stl/css :component-section)} + [:div {:class (stl/css :component-title)} + (if is-swap-opened + [:button {:class (stl/css :component-title-swap) :on-click on-component-back} [:> icon* {:icon-id i/arrow-left :size "s"}] @@ -939,9 +1002,9 @@ :collapsed (not open?) :on-collapsed toggle-content :title (tr "workspace.options.component") - :class (stl/css :title-spacing-component) - :title-class (stl/css :title-bar-variant)} - [:span {:class (stl/css :copy-text)} + :class (stl/css :component-title-bar) + :title-class (stl/css :component-title-bar-title)} + [:span {:class (stl/css :component-title-bar-type)} (if main-instance? (if is-variant? (tr "labels.variant") @@ -961,82 +1024,56 @@ :icon i/variant}])])] (when open? - [:div {:class (stl/css :element-content)} - [:div {:class (stl/css :component-line)} - - [:div {:class (stl/css :component-wrapper)} - - [:button {:class (stl/css-case :component-name-wrapper true - :without-menu (not show-menu?)) - :data-testid "swap-component-btn" - :on-click open-component-panel - :disabled (or swap-opened? (not can-swap?))} - - [:div {:class (stl/css :component-icon)} - [:> icon* {:size "s" - :icon-id (if main-instance? - (if is-variant? i/variant i/component) - i/component-copy)}]] - - [:div {:class (stl/css :component-name-outside)} - [:div {:class (stl/css :component-name)} - [:span {:class (stl/css :component-name-inside)} - (if (and multi (not same-variant?)) - (tr "settings.multiple") - (cfh/last-path shape-name))]] - - (when (and can-swap? (not multi)) - [:div {:class (stl/css :component-parent-name)} - (if (:deleted component) - (tr "workspace.options.component.unlinked") - (cfh/merge-path-item-with-dot path (:name component)))])]] - - (when show-menu? - [:div {:class (stl/css :component-actions)} - [:button {:class (stl/css-case :component-menu-btn true - :selected menu-open?) - :on-click on-menu-click} - [:> icon* {:icon-id i/menu}]] - - [:> component-ctx-menu* {:show menu-open? - :on-close on-menu-close - :menu-entries menu-entries - :main-instance main-instance?}]])] - + [:div {:class (stl/css :component-content)} + [:div {:class (stl/css :component-pill)} + [:> component-pill* {:icon (if main-instance? + (if is-variant? i/variant i/component) + i/component-copy) + :text (if (and multi (not same-variant?)) + (tr "settings.multiple") + (cpn/last-path shape-name)) + :subtext (when (and can-swap? (or (not multi) same-variant?)) + (if (:deleted component) + (tr "workspace.options.component.unlinked") + (cpn/merge-path-item-with-dot path (:name component)))) + :on-click open-component-panel + :disabled (or is-swap-opened (not can-swap?)) + :menu-entries menu-entries}] (when (and is-variant? main-instance?) [:> icon-button* {:variant "ghost" :aria-label (tr "workspace.shape.menu.add-variant-property") :on-click add-new-property :icon i/add}])] - (when swap-opened? + (when is-swap-opened [:> component-swap* {:shapes copies}]) (when (and is-variant? (not main-instance?) (not (:deleted component)) - (not swap-opened?) - (not multi)) + (not is-swap-opened) + (or (not multi) same-variant?)) [:> component-variant-copy* {:current-file-id current-file-id - :component component - :shape shape - :data data}]) + :components components + :shapes shapes + :component-file-data data}]) - (when (and is-variant? main-instance? same-variant? (not swap-opened?)) - [:> component-variant-main-instance* {:components components - :shapes shapes - :data data}]) + (when (and is-variant? main-instance? same-variant? (not is-swap-opened)) + [:> component-variant* {:components components + :shapes shapes + :data data}]) - (when (and (not swap-opened?) (not multi)) + (when (and (not is-swap-opened) (not multi)) [:> component-annotation* {:id id :shape shape :component component :rerender-fn rerender-fn}]) (when (and multi all-main? (not any-variant?)) - [:button {:class (stl/css :combine-variant-button) - :on-click on-combine-as-variants} - [:span (tr "workspace.shape.menu.combine-as-variants")]]) + [:> button* {:variant "secondary" + :class (stl/css :component-combine) + :on-click on-combine-as-variants} + (tr "workspace.shape.menu.combine-as-variants")]) (when (dbg/enabled? :display-touched) [:div ":touched " (str (:touched shape))])])]))) @@ -1048,7 +1085,50 @@ (into (remove empty?) v) (into (filter empty?) v))) -(mf/defc variant-menu* +(mf/defc component-variant-main-property* + [{:keys [pos property is-remove-disabled on-remove on-blur on-reorder]}] + (let [values (->> (:value property) + (move-empty-items-to-end) + (replace {"" "--"}) + (str/join ", ")) + + on-drop + (mf/use-fn + (fn [relative-pos data] + (let [from-pos (:from-pos data) + to-space-between-pos (if (= relative-pos :bot) (inc pos) pos)] + (on-reorder from-pos to-space-between-pos)))) + + [dprops dref] + (h/use-sortable + :data-type "penpot/variant-main-property" + :on-drop on-drop + :draggable? true + :data {:from-pos pos})] + + [:div {:class (stl/css-case :variant-property true + :dnd-over-top (= (:over dprops) :top) + :dnd-over-bot (= (:over dprops) :bot))} + (when (some? on-reorder) + [:> reorder-handler* {:ref dref}]) + + [:div {:class (stl/css :variant-property-row)} + [:> input-with-meta* {:value (:name property) + :data-position pos + :meta values + :is-editing (:editing? (meta property)) + :max-length ctv/property-max-length + :on-blur on-blur}] + [:> icon-button* {:variant "ghost" + :icon i/remove + :data-position pos + :aria-label (if is-remove-disabled + (tr "workspace.shape.menu.remove-variant-property.last-property") + (tr "workspace.shape.menu.remove-variant-property")) + :on-click on-remove + :disabled is-remove-disabled}]]])) + +(mf/defc component-variant-main* [{:keys [shapes]}] (let [multi? (> (count shapes) 1) @@ -1078,13 +1158,11 @@ properties (mf/with-memo [data objects variant-id] (cfv/extract-properties-values data objects (:id shape))) + single-property? (= (count properties) 1) open* (mf/use-state true) open? (deref open*) - menu-open* (mf/use-state false) - menu-open? (deref menu-open*) - show-in-assets-panel (mf/use-fn (mf/deps variants) @@ -1117,19 +1195,6 @@ (mf/use-fn #(swap! open* not)) - on-menu-click - (mf/use-fn - (mf/deps menu-open* menu-open?) - (fn [event] - (dom/prevent-default event) - (dom/stop-propagation event) - (reset! menu-open* (not menu-open?)))) - - on-menu-close - (mf/use-fn - (mf/deps menu-open*) - #(reset! menu-open* false)) - on-click-variant-title-help (mf/use-fn (fn [] @@ -1160,6 +1225,12 @@ (ev/event {::ev/name "variant-remove-property" ::ev/origin "workspace:button-design-tab"}) (dwv/remove-property variant-id pos)))))) + reorder-properties + (mf/use-fn + (mf/deps variant-id) + (fn [from-pos to-space-between-pos] + (st/emit! (dwv/reorder-variant-poperties variant-id from-pos to-space-between-pos)))) + select-shapes-with-malformed (mf/use-fn (mf/deps malformed-ids) @@ -1171,95 +1242,56 @@ #(st/emit! (dw/select-shapes (into (d/ordered-set) duplicated-ids))))] (when (seq shapes) - [:div {:class (stl/css :element-set)} - [:div {:class (stl/css :element-title)} + [:div {:class (stl/css :component-section)} + [:div {:class (stl/css :component-title)} [:* [:> title-bar* {:collapsable true :collapsed (not open?) :on-collapsed toggle-content :title (tr "workspace.options.component") - :class (stl/css :title-spacing-component) - :title-class (stl/css :title-bar-variant)} - [:span {:class (stl/css :copy-text)} + :class (stl/css :component-title-bar) + :title-class (stl/css :component-title-bar-title)} + [:span {:class (stl/css :component-title-bar-type)} (tr "workspace.options.component.main")]] - [:div {:class (stl/css :title-actions)} - [:> icon-button* {:variant "ghost" - :aria-label (tr "workspace.options.component.variants-help-modal.title") - :on-click on-click-variant-title-help - :icon i/help}] - [:> icon-button* {:variant "ghost" - :aria-label (tr "workspace.shape.menu.add-variant") - :on-click (partial create-variant "workspace:button-design-tab-component") - :icon i/variant}]]]] + [:> icon-button* {:variant "ghost" + :aria-label (tr "workspace.options.component.variants-help-modal.title") + :on-click on-click-variant-title-help + :icon i/help}] + [:> icon-button* {:variant "ghost" + :aria-label (tr "workspace.shape.menu.add-variant") + :on-click (partial create-variant "workspace:button-design-tab-component") + :icon i/variant}]]] (when open? - [:div {:class (stl/css :element-content)} - [:div {:class (stl/css :component-line)} - - [:div {:class (stl/css :component-wrapper)} - - [:button {:class (stl/css :component-name-wrapper) - :disabled true} - - [:div {:class (stl/css :component-icon)} - [:> icon* {:size "s" - :icon-id i/component}]] - - [:div {:class (stl/css :component-name-outside)} - [:div {:class (stl/css :component-name)} - [:span {:class (stl/css :component-name-inside)} - (if multi? - (tr "settings.multiple") - (cfh/last-path shape-name))]]]] - - (when-not multi? - [:div {:class (stl/css :component-actions)} - - [:button {:class (stl/css-case :component-menu-btn true - :selected menu-open?) - :on-click on-menu-click} - [:> icon* {:icon-id i/menu}]] - - [:> component-ctx-menu* {:show menu-open? - :on-close on-menu-close - :menu-entries menu-entries - :main-instance true}]])] - + [:div {:class (stl/css :component-content)} + [:div {:class (stl/css :component-pill)} + [:> component-pill* {:icon i/component + :text (if multi? + (tr "settings.multiple") + (cpn/last-path shape-name)) + :disabled true + :menu-entries menu-entries}] [:> icon-button* {:variant "ghost" :aria-label (tr "workspace.shape.menu.add-variant-property") :on-click (partial add-new-property "workspace:button-design-tab-component") :icon i/add}]] (when-not multi? - [:div {:class (stl/css :variant-property-list)} - (for [[pos property] (map-indexed vector properties)] - (let [last-prop? (<= (count properties) 1) - values (->> (:value property) - (move-empty-items-to-end) - (replace {"" "--"}) - (str/join ", ")) - is-editing (:editing? (meta property))] - [:div {:key (str (:id shape) pos) - :class (stl/css :variant-property-row)} - [:> input-with-meta* {:value (:name property) - :meta values - :is-editing is-editing - :max-length ctv/property-max-length - :data-position pos - :on-blur update-property-name}] - [:> icon-button* {:variant "ghost" - :aria-label (if last-prop? - (tr "workspace.shape.menu.remove-variant-property.last-property") - (tr "workspace.shape.menu.remove-variant-property")) - :on-click remove-property - :data-position pos - :icon i/remove - :disabled last-prop?}]]))]) + [:> h/sortable-container* {} + [:div {:class (stl/css :variant-property-list)} + (for [[pos property] (map-indexed vector properties)] + [:> component-variant-main-property* {:key (str (:id shape) pos) + :pos pos + :property property + :is-remove-disabled single-property? + :on-remove remove-property + :on-blur update-property-name + :on-reorder reorder-properties}])]]) (if malformed? - [:div {:class (stl/css :variant-warning-wrapper)} + [:div {:class (stl/css :variant-warning)} [:> icon* {:icon-id i/msg-neutral :class (stl/css :variant-warning-darken)}] [:div {:class (stl/css :variant-warning-highlight)} @@ -1269,7 +1301,7 @@ (tr "workspace.options.component.variant.malformed.group.locate")]] (when duplicated? - [:div {:class (stl/css :variant-warning-wrapper)} + [:div {:class (stl/css :variant-warning)} [:> icon* {:icon-id i/msg-neutral :class (stl/css :variant-warning-darken)}] [:div {:class (stl/css :variant-warning-highlight)} diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/component.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/component.scss index f0265b807a..35a499746a 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/component.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/component.scss @@ -4,152 +4,595 @@ // // Copyright (c) KALEIDOS INC -@use "../../../../ds/typography.scss" as t; -@import "refactor/common-refactor.scss"; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_utils.scss" as *; +@use "ds/spacing.scss" as *; +@use "ds/typography.scss" as t; -.element-set { - margin: 0; - display: grid; - grid-template-columns: repeat(8, var(--sp-xxxl)); - column-gap: var(--sp-xs); -} +@use "refactor/common-refactor.scss" as deprecated; -.element-content { - @include flexColumn; - display: grid; - grid-template-columns: repeat(8, var(--sp-xxxl)); - row-gap: var(--sp-m); - padding-top: $s-4; - padding-bottom: $s-8; -} - -.element-title { +.annotation { + @include t.use-typography("body-small"); grid-column: span 8; - column-gap: var(--sp-xs); - display: flex; -} - -.title-back { - @include uppercaseTitleTipography; - display: flex; - align-items: center; - gap: $s-4; - width: 100%; - height: $s-32; - padding: 0; - border: 0; + color: var(--color-foreground-secondary); border-radius: $br-8; - background-color: var(--title-background-color); - color: var(--title-foreground-color); - cursor: pointer; -} -.title-spacing-component { - justify-content: flex-start; - gap: $s-8; - flex-grow: 1; -} + &.editing { + border: $b-1 solid var(--color-accent-primary); -.title-bar-variant { - flex-grow: 0; -} + .annotation-title { + border-bottom: $b-1 solid var(--entry-border-color-disabled); + } -.title-actions { - display: flex; - gap: var(--sp-xs); -} + .annotation-title-icon-action { + display: flex; + } -.component-line { - grid-column: span 8; - width: 100%; - min-height: $s-32; - border-radius: $br-8; - display: flex; - gap: var(--sp-xs); -} + .annotation-title-name { + margin-inline-start: var(--sp-m); + } -.component-wrapper { - display: flex; - flex-grow: 1; - gap: $s-1; -} - -.component-name-wrapper { - @include buttonStyle; - cursor: default; - flex-grow: 1; - display: grid; - grid-template-columns: $s-16 1fr; - gap: $s-4; - padding: 0 $s-8; - border-radius: $br-8 0 0 $br-8; - background-color: var(--assets-item-background-color); - color: var(--assets-item-name-foreground-color-hover); - - &.without-menu { - width: 100%; - border-radius: $br-8; + .annotation-textarea { + min-block-size: $sz-252; + } } - &:focus { - outline: $s-1 solid var(--color-accent-primary); + &.creating { + border: $b-1 solid var(--color-accent-primary); + + .annotation-title .annotation-title-icon-action { + display: flex; + } + + .annotation-title-name { + margin-inline-start: var(--sp-m); + } + + .annotation-textarea { + min-block-size: $sz-252; + } + } +} + +.annotation-title { + display: flex; + align-items: center; + block-size: $sz-32; + + &.expanded { + border-bottom: $b-1 solid var(--color-background-quaternary); + } + + &.expandeable { + cursor: pointer; + } + + &:hover { + .annotation-title-icon-action { + display: flex; + } + } +} + +.annotation-title-name { + flex-grow: 1; +} + +.annotation-title-icon-arrow { + margin: 0 var(--sp-xs); +} + +.annotation-title-actions { + display: flex; + align-items: center; + line-height: 2.5; +} + +.annotation-title-icon-action { + cursor: pointer; + display: none; + justify-content: center; + align-items: center; + inline-size: $sz-28; + block-size: $sz-32; + border-radius: $br-8; + margin: 0; + padding: 0; +} + +.annotation-title-icon-ok:hover { + color: var(--color-accent-success); + + &.disabled { + cursor: default; + color: var(--color-foreground-secondary); + } +} + +.annotation-title-icon-nok:hover { + color: var(--color-accent-error); +} + +.annotation-body-hidden { + display: none; +} + +// Auto growing text +.annotation-body { + // easy way to plop the elements on top of each other and have them both sized based on the tallest one's height + display: grid; + + &:after { + // The space is needed to preventy jumpy behavior + content: attr(data-replicated-value) " "; + white-space: pre-wrap; + visibility: hidden; + + /* Identical styling required!! */ + font: inherit; + overflow-wrap: anywhere; + + padding: var(--sp-m); + + /* Place on top of each other */ + grid-area: 1 / 1 / 2 / 2; + } +} + +.annotation-textarea { + background-color: var(--color-background-primary); + color: var(--color-foreground-primary); + padding: var(--sp-m); + + border: none; + overflow: hidden; + outline: none; + + box-shadow: none; + + resize: none; + + /* Identical styling required!! */ + font: inherit; + overflow-wrap: anywhere; + + padding: var(--sp-m); + + /* Place on top of each other */ + grid-area: 1 / 1 / 2 / 2; +} + +.annotation-counter { + @include t.use-typography("body-small"); + text-align: right; + color: var(--color-foreground-secondary); + margin: 0 var(--sp-s) var(--sp-s) 0; +} + +.swap-item-list { + --swap-item-foreground-color: var(--color-foreground-primary); + --swap-item-foreground-color-hover: var(--color-foreground-primary); + --swap-item-foreground-color-disabled: var(--color-foreground-disabled); + --swap-item-background-color: var(--color-background-tertiary); + --swap-item-background-color-hover: var(--color-background-quaternary); + --swap-item-border-color: transparent; + --swap-item-border-color-selected: var(--color-accent-primary); + --swap-item-thumbnail-background-color: var(--color-canvas); + + @include t.use-typography("body-small"); + display: flex; + align-items: center; + padding: px2rem(1) var(--sp-m) px2rem(1) px2rem(1); + gap: var(--sp-s); + block-size: calc($sz-32 + $sz-12); + border-radius: $br-8; + background-color: var(--swap-item-background-color); + color: var(--swap-item-foreground-color); + border: $b-1 solid var(--swap-item-border-color); + + .swap-item-thumbnail { + flex: 0 0 $sz-40; + background-color: var(--swap-item-thumbnail-background-color); + border-radius: $br-6; + block-size: $sz-40; + inline-size: $sz-40; + padding: var(--sp-xxs); + } + + .swap-item-name { + flex: 1; + text-align: left; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .swap-item-variant-icon { + flex: 0 0 $sz-16; + background-color: none; + } + + &.selected { + --swap-item-border-color: var(--swap-item-border-color-selected); } &:hover:not(:disabled) { - background-color: var(--assets-item-background-color-hover); - color: var(--assets-item-name-foreground-color-hover); + --swap-item-foreground-color: var(--swap-item-foreground-color-hover); + --swap-item-background-color: var(--swap-item-background-color-hover); + } + + &:disabled { + --swap-item-foreground-color: var(--swap-item-foreground-color-disabled); } } -.component-icon { +.swap-item-grid { + --swap-item-foreground-color: var(--color-foreground-primary); + --swap-item-foreground-color-hover: var(--color-foreground-primary); + --swap-item-background-color: var(--color-background-primary); + --swap-item-border-color: var(--color-accent-primary); + --swap-item-border-inner-color-selected: var(--color-background-primary); + --swap-item-thumbnail-background-color: var(--color-canvas); + --swap-item-thumbnail-background-color-disabled: var(--color-foreground-secondary); + display: flex; - height: $s-32; + justify-content: center; align-items: center; - color: var(--icon-foreground); + place-items: center; + aspect-ratio: 1 / 1; + flex-wrap: wrap; + position: relative; + padding: var(--sp-s); + border: none; + border-radius: $br-8; + background-color: var(--swap-item-thumbnail-background-color); + overflow: hidden; + + .swap-item-thumbnail { + block-size: 100%; + inline-size: 100%; + object-fit: contain; + } + + .swap-item-name { + @include t.use-typography("body-small"); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + text-align: left; + display: none; + position: absolute; + inset-inline-start: var(--sp-xs); + inset-block-end: var(--sp-xs); + block-size: var(--sp-xxl); + inline-size: calc(100% - var(--sp-s)); + padding: var(--sp-xs); + column-gap: var(--sp-xs); + border-radius: $br-4; + border: $b-1 solid transparent; + background-color: var(--swap-item-background-color); + color: var(--swap-item-foreground-color); + direction: rtl; + } + + .swap-item-variant-icon { + position: absolute; + inset-inline-end: var(--sp-xxs); + inset-block-start: var(--sp-xxs); + background-color: var(--color-background-tertiary); + } + + &:hover { + .swap-item-name { + display: block; + } + } + + &.selected { + border: $b-2 solid var(--swap-item-border-color); + + &::before { + content: " "; + position: absolute; + inset-inline-start: 0; + inset-inline-end: 0; + inset-block-start: 0; + inset-block-end: 0; + border: calc($b-2 * 2) solid var(--swap-item-border-inner-color-selected); + border-radius: $br-8; + } + + .swap-item-name { + color: var(--swap-item-foreground-color-hover); + } + } + + &:disabled { + background: var(--swap-item-thumbnail-background-color-disabled); + + .swap-item-name { + background: linear-gradient( + to top, + var(--swap-item-thumbnail-background-color-disabled) 0%, + transparent 100% + ); + color: var(--swap-item-foreground-color-hover); + } + } } -.component-name-outside { - @include flexColumn; - min-height: $s-32; - padding: $s-8 0 $s-8 $s-2; +.swap-item-variant-icon { + display: flex; + justify-content: center; + align-items: center; + block-size: $sz-24; + inline-size: $sz-24; + color: var(--color-accent-secondary); + border-radius: $br-8; +} + +.swap-group { + @include t.use-typography("body-small"); + cursor: pointer; + display: grid; + grid-template-columns: 1fr var(--sp-m); + block-size: $sz-32; + align-items: center; + + &:hover { + .swap-group-icon { + color: var(--color-foreground-primary); + } + } +} + +.swap-group-name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--color-foreground-primary); +} + +.swap-group-icon { + color: var(--color-foreground-secondary); +} + +.swap { + padding-block-start: var(--sp-m); + grid-column: span 8; +} + +.swap-title { + @include t.use-typography("headline-small"); + display: flex; + align-items: center; + block-size: $sz-32; + padding-inline-start: var(--sp-xxs); + color: var(--color-foreground-secondary); +} + +.swap-content { + display: flex; + flex-direction: column; + gap: var(--sp-l); +} + +.swap-filters { + display: flex; + flex-direction: column; + gap: var(--sp-xs); +} + +.swap-library { + display: flex; + flex-direction: column; + gap: var(--sp-xs); +} + +.swap-library-title { + display: grid; + grid-template-columns: 1fr auto; +} + +.swap-library-name { + @include t.use-typography("body-small"); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--color-foreground-secondary); + padding: var(--sp-s) 0 var(--sp-s) var(--sp-xxs); +} + +.swap-library-back { + cursor: pointer; + display: flex; + align-items: center; + gap: var(--sp-xs); + inline-size: 100%; + block-size: $sz-32; + padding: 0; + border: 0; + background-color: var(--color-background-primary); + color: var(--color-foreground-secondary); +} + +.swap-library-back-name { + @include t.use-typography("body-small"); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + direction: rtl; + block-size: $sz-32; + padding: var(--sp-s) 0 var(--sp-s) var(--sp-xxs); +} + +.swap-library-empty { + @include t.use-typography("body-small"); + margin: 0 var(--sp-xs) 0 var(--sp-s); + color: var(--color-foreground-secondary); +} + +.swap-library-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(calc($sz-48 * 2), 1fr)); + gap: var(--sp-xs); +} + +.swap-library-list { + display: flex; + flex-direction: column; + gap: var(--sp-xs); +} + +.component-section { + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); +} + +.component-title { + grid-column: span 8; + column-gap: var(--sp-xs); + display: flex; +} + +.component-title-swap { + @include t.use-typography("headline-small"); + cursor: pointer; + display: flex; + align-items: center; + gap: var(--sp-xs); + inline-size: 100%; + block-size: $sz-32; + padding: 0; + border: 0; + border-radius: $br-8; + background-color: var(--color-background-primary); + color: var(--color-foreground-secondary); +} + +.component-title-bar { + justify-content: flex-start; + gap: var(--sp-s); + flex-grow: 1; +} + +.component-title-bar-title { + flex-grow: 0; +} + +.component-title-bar-type { + @include t.use-typography("body-small"); + block-size: 100%; + display: flex; + align-items: center; + color: var(--color-foreground-secondary); +} + +.component-title-actions { + display: flex; + gap: var(--sp-xs); +} + +.component-content { + grid-column: span 8; + display: flex; + flex-direction: column; + row-gap: var(--sp-m); + padding-block-start: var(--sp-xs); + padding-block-end: var(--sp-s); +} + +.component-pill { + border-radius: $br-8; + display: flex; + gap: var(--sp-xs); +} + +.component-combine { + justify-content: center; +} + +.pill { + display: flex; + flex-grow: 1; + gap: px2rem(1); +} + +.pill-btn { + flex-grow: 1; + display: grid; + grid-template-columns: var(--sp-l) 1fr; + gap: var(--sp-xs); + padding: 0 var(--sp-m) 0 var(--sp-s); + border: none; + border-radius: $br-8; + background-color: var(--color-background-tertiary); + color: var(--color-foreground-primary); + + &.with-menu { + border-radius: $br-8 0 0 $br-8; + } + + &:focus { + outline: $b-1 solid var(--color-accent-primary); + } + + &:hover:not(:disabled) { + background-color: var(--color-background-quaternary); + color: var(--color-foreground-primary); + } +} + +.pill-btn-icon { + display: flex; + block-size: $sz-32; + align-items: center; + color: var(--color-foreground-secondary); +} + +.pill-btn-name { + display: flex; + flex-direction: column; + min-block-size: $sz-32; + padding: var(--sp-s) 0 var(--sp-s) var(--sp-xxs); border-radius: $br-8 0 0 $br-8; overflow: hidden; gap: 0; } -.component-name { - @include bodySmallTypography; - @include textEllipsis; +.pill-btn-text { + @include t.use-typography("body-small"); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; direction: rtl; text-align: left; - height: $s-16; + block-size: $sz-16; } -.component-name-inside { - direction: ltr; - unicode-bidi: bidi-override; -} - -.component-parent-name { - @include bodySmallTypography; - @include textEllipsis; +.pill-btn-subtext { + @include t.use-typography("body-small"); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; direction: rtl; text-align: left; - height: $s-16; - max-width: $s-184; - color: var(--title-foreground-color); + block-size: $sz-16; + color: var(--color-foreground-secondary); } -.component-actions { +.pill-actions { + flex: 0 0 $sz-32; position: relative; - width: $s-32; } -.component-menu-btn { +.pill-actions-btn { @extend .button-secondary; cursor: unset; - height: 100%; - width: 100%; + block-size: 100%; + inline-size: 100%; border-radius: 0 $br-8 $br-8 0; &.selected { @@ -157,502 +600,21 @@ } } -.copy-text { - @include bodySmallTypography; - height: 100%; - display: flex; - align-items: center; - color: var(--title-foreground-color); -} - -.custom-select-dropdown { +.pill-actions-dropdown { @extend .dropdown-wrapper; - right: 0; - left: unset; - width: $s-252; + inline-size: $sz-252; + inset-inline-end: 0; + inset-inline-start: unset; + + &.extended { + inset-block-start: $sz-48; + } } -.not-main { - top: $s-48; -} - -.dropdown-element { +.pill-actions-dropdown-item { @extend .dropdown-element-base; } -.component-path { - display: flex; - align-items: center; - gap: $s-4; - width: 100%; - height: $s-32; - padding: 0; - border: 0; - background-color: var(--title-background-color); - color: var(--title-foreground-color); - cursor: pointer; -} - -.path-name { - @include bodySmallTypography; - @include textEllipsis; - direction: rtl; - height: $s-32; - padding: $s-8 0 $s-8 $s-2; - margin-right: $s-4; -} - -.component-list-empty { - @include bodySmallTypography; - margin: 0 $s-4 0 $s-8; - color: var(--color-foreground-secondary); -} - -.component-item { - display: flex; - align-items: center; - margin-bottom: $s-4; - padding: $s-1 $s-8 $s-1 $s-1; - gap: $s-8; - font-size: $s-12; - cursor: pointer; - width: 100%; - height: $s-44; - border-radius: $br-8; - background-color: var(--assets-item-background-color); - color: var(--assets-item-name-foreground-color); - border: $s-1 solid transparent; - - .variant-icon { - background-color: none; - padding: $s-2; - flex: 0 0 $s-16; - } - - .component-name { - @include textEllipsis; - width: 80%; - } - - .component-img { - flex: 0 0 $s-40; - background-color: var(--assets-component-background-color); - border-radius: $br-6; - height: $s-40; - width: $s-40; - padding: $s-2; - } - - &.selected { - border: $s-1 solid var(--assets-item-border-color); - } - - &:hover { - color: var(--assets-item-name-foreground-color-hover); - background-color: var(--assets-item-background-color-hover); - } - - &.disabled { - cursor: auto; - color: var(--assets-item-name-foreground-color-disabled); - background-color: var(--assets-item-background-color); - - svg { - cursor: auto; - } - } -} - -.component-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax($s-96, 1fr)); - gap: $s-4; -} - -.grid-cell { - @include flexCenter; - place-items: center; - aspect-ratio: 1 / 1; - flex-wrap: wrap; - position: relative; - padding: $s-8; - border-radius: $br-8; - background-color: var(--assets-component-background-color); - overflow: hidden; - cursor: pointer; - - .variant-icon { - background-color: var(--color-background-tertiary); - } - - img { - height: auto; - width: auto; - max-height: 100%; - max-width: 100%; - pointer-events: none; - border: 0; - } - - .component-img { - height: 100%; - width: 100%; - object-fit: contain; - } - - .component-name { - @include bodySmallTypography; - @include textEllipsis; - display: none; - position: absolute; - left: $s-4; - bottom: $s-4; - height: calc($s-24 - $s-2); - width: calc(100% - 2 * $s-4); - padding: $s-2 $s-6; - column-gap: $s-4; - border-radius: $br-4; - background-color: var(--assets-item-name-background-color); - border: $s-1 solid transparent; - color: var(--assets-item-name-foreground-color); - direction: rtl; - } - - &:hover { - .component-name { - display: block; - } - } - - &.selected { - border: $s-2 solid var(--assets-item-border-color); - - &::before { - content: " "; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: $s-4 solid var(--assets-component-second-border-selected); - border-radius: $br-8; - } - - .component-name { - color: var(--assets-item-name-foreground-color-hover); - } - } - - &.disabled { - background: var(--assets-component-background-color-disabled); - cursor: auto; - - svg { - cursor: auto; - } - - .component-name { - background: linear-gradient( - to top, - var(--assets-component-background-color-disabled) 0%, - transparent 100% - ); - color: var(--assets-item-name-foreground-color-hover); - } - } -} - -.element-set-title { - @include uppercaseTitleTipography; - display: flex; - align-items: center; - height: $s-32; - padding-left: $s-2; - color: var(--title-foreground-color); -} - -// Component swap - -.component-swap { - padding-top: $s-12; - grid-column: span 8; -} - -.component-swap-content { - @include flexColumn; - gap: $s-16; -} - -.fields-wrapper { - @include flexColumn; - gap: $s-4; -} - -.search-field { - display: flex; - align-items: center; - height: $s-32; - border-radius: $br-8; - font-family: "worksans", "vazirmatn", sans-serif; - background-color: var(--input-background-color); -} - -.library-name-wrapper { - display: grid; - grid-template-columns: 1fr auto; -} - -.library-name { - @include bodySmallTypography; - @include textEllipsis; - color: var(--title-foreground-color); - padding: $s-8 0 $s-8 $s-2; -} - -.swap-wrapper { - @include flexColumn; - gap: $s-4; -} - -.listing-options-wrapper { - width: 100%; -} - -.listing-options { - display: flex; - align-items: center; -} - -.component-group { - @include bodySmallTypography; - display: grid; - grid-template-columns: 1fr $s-12; - height: $s-32; - cursor: pointer; - align-items: center; - - .component-group-name { - @include textEllipsis; - color: var(--assets-item-name-foreground-color); - } - - &:hover { - color: var(--assets-item-name-foreground-color-hover); - - .component-group-name { - color: var(--assets-item-name-foreground-color-hover); - } - } -} - -.component-group-icon { - color: var(--icon-foreground); -} - -.path-wrapper { - display: flex; - max-width: $s-232; - padding: $s-8 0 $s-8 $s-2; -} - -.component-group-path { - @include textEllipsis; - direction: rtl; - color: var(--assets-item-name-foreground-color-rest); -} - -// Component annotation - -.component-annotation { - @include bodySmallTypography; - grid-column: span 8; - color: var(--entry-foreground-color); - border-radius: $br-8; - - .annotation-title { - display: flex; - align-items: center; - height: $s-32; - - &.expanded { - border-bottom: $s-1 solid var(--entry-border-color-disabled); - } - - &.expandeable { - cursor: pointer; - } - - div { - display: flex; - align-items: center; - line-height: 2.5; - } - - .icon-arrow { - @include flexCenter; - width: $s-28; - height: $s-32; - display: flex; - margin: 0; - padding: 0; - cursor: pointer; - - svg { - @extend .button-icon; - stroke: var(--icon-foreground); - width: $s-16; - height: $s-16; - } - - &.expanded svg { - transform: rotate(90deg); - } - } - - .icon { - @include flexCenter; - width: $s-28; - height: $s-32; - border-radius: $br-8; - display: none; - margin: 0; - padding: 0; - cursor: pointer; - - svg { - @extend .button-icon; - stroke: var(--icon-foreground); - width: $s-16; - height: $s-16; - } - - &.icon-tick:hover, - &.icon-edit:hover { - svg { - stroke: var(--icon-foreground-accept); - } - } - - &.icon-tick.invalid:hover { - cursor: default; - - svg { - stroke: var(--icon-foreground); - } - } - - &.icon-cross:hover, - &.icon-trash:hover { - svg { - stroke: var(--icon-foreground-discard); - } - } - } - - .annotation-text { - flex-grow: 1; - margin-left: $s-12; - } - - &:hover { - .icon { - display: flex; - } - } - } - - &.editing { - border: $s-1 solid var(--input-border-color-success); - - .annotation-title { - border-bottom: $s-1 solid var(--entry-border-color-disabled); - - .icon { - display: flex; - } - } - - textarea { - min-height: $s-252; - } - } - - &.creating { - border: $s-1 solid var(--input-border-color-success); - - .annotation-title .icon { - display: flex; - } - - textarea { - min-height: $s-252; - } - } - - .hidden { - display: none; - - svg { - display: none; - } - } - - .counter { - @include bodySmallTypography; - text-align: right; - color: var(--entry-foreground-color); - margin: 0 $s-8 $s-8 0; - } - - // Auto growing text - .grow-wrap { - // easy way to plop the elements on top of each other and have them both sized based on the tallest one's height - display: grid; - - &:after { - // The space is needed to preventy jumpy behavior - content: attr(data-replicated-value) " "; - white-space: pre-wrap; - visibility: hidden; - } - - textarea { - background-color: var(--input-background-color-active); - color: var(--input-foreground-color-active); - padding: $s-12; - - border: none; - overflow: hidden; - outline: none; - - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - - resize: none; - /*remove the resize handle on the bottom right*/ - } - - textarea, - &:after { - /* Identical styling required!! */ - font: inherit; - overflow-wrap: anywhere; - - padding: 10px; - - /* Place on top of each other */ - grid-area: 1 / 1 / 2 / 2; - } - } -} - -.variant-property-row { - @include flexRow; - justify-content: space-between; - width: 100%; -} - .variant-property-list { grid-column: span 8; @@ -661,8 +623,34 @@ gap: var(--sp-xs); } +.variant-property { + display: flex; + flex-direction: column; + position: relative; + + --reorder-left-position: calc(-1 * var(--sp-m) - var(--sp-xxs)); + + &:hover { + --reorder-icon-visibility: visible; + } + + &.dnd-over-top { + --reorder-top-display: block; + } + + &.dnd-over-bot { + --reorder-bottom-display: block; + } +} + +.variant-property-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--sp-xs); +} + .variant-property-container { - @include t.use-typography("body-small"); display: grid; grid-template-columns: repeat(8, var(--sp-xxxl)); gap: var(--sp-xs); @@ -679,6 +667,7 @@ } .variant-property-name { + @include t.use-typography("body-small"); color: var(--color-foreground-secondary); display: block; overflow: hidden; @@ -686,16 +675,16 @@ white-space: nowrap; } -.variant-warning-wrapper { - @include bodySmallTypography; +.variant-warning { + @include t.use-typography("body-small"); grid-column: span 8; - border: 1px solid var(--color-background-quaternary); - border-radius: $s-8; - padding: $s-12; + border: $b-1 solid var(--color-background-quaternary); + border-radius: $br-8; + padding: var(--sp-m); display: flex; flex-direction: column; - gap: $s-8; + gap: var(--sp-s); } .variant-warning-highlight { @@ -707,50 +696,12 @@ } .variant-warning-button { - @include bodySmallTypography; + @include t.use-typography("body-small"); + cursor: pointer; background-color: transparent; border: none; appearance: none; color: var(--color-accent-primary); - cursor: pointer; padding: 0; text-align: start; } - -.variant-icon { - @include flexCenter; - height: $s-24; - width: $s-24; - color: var(--color-accent-secondary); - border-radius: $s-8; -} - -.variant-mark-cell { - position: absolute; - right: $s-2; - top: $s-2; -} - -.combine-variant-button { - @include buttonStyle; - @include uppercaseTitleTipography; - grid-column: span 8; - cursor: default; - display: flex; - justify-content: center; - align-items: center; - padding: $s-8; - border-radius: $br-8; - background-color: var(--assets-item-background-color); - color: var(--color-foreground-secondary); - cursor: pointer; - - &:hover { - background-color: var(--assets-item-background-color-hover); - color: var(--color-foreground-primary); - } - - &:focus { - outline: $s-1 solid var(--color-accent-primary); - } -} diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/constraints.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/constraints.scss index 2384facf21..50fffa78ac 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/constraints.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/constraints.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { margin: 0; @@ -12,21 +12,21 @@ .element-set-content { display: flex; - gap: $s-4; + gap: deprecated.$s-4; } .constraints-widget { background-color: var(--constraint-widget-background-color); display: grid; - grid-template-columns: $s-24 $s-60 $s-24; - grid-template-rows: $s-24 $s-60 $s-24; + grid-template-columns: deprecated.$s-24 deprecated.$s-60 deprecated.$s-24; + grid-template-rows: deprecated.$s-24 deprecated.$s-60 deprecated.$s-24; grid-template-areas: "top top top" "left center right" "bottom bottom bottom"; - height: $s-108; - width: $s-108; - border-radius: $br-8; + height: deprecated.$s-108; + width: deprecated.$s-108; + border-radius: deprecated.$br-8; } .constraints-top, @@ -34,14 +34,14 @@ .constraints-center, .constraints-right, .constraints-bottom { - @include flexCenter; + @include deprecated.flexCenter; grid-area: top; } .constraint-btn, .constraint-btn-special, .constraint-btn-rotated { - @include buttonStyle; - @include flexCenter; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; width: 100%; height: 100%; --resalted-area-background-color: var(--button-constraint-background-color-rest); @@ -58,11 +58,11 @@ } .resalted-area { - width: $s-32; - height: $s-3; - border-radius: $br-8; + width: deprecated.$s-32; + height: deprecated.$s-3; + border-radius: deprecated.$br-8; background-color: var(--resalted-area-background-color); - outline: $s-4 solid var(--resalted-area-border-color); + outline: deprecated.$s-4 solid var(--resalted-area-border-color); padding: 0; margin: 0; } @@ -70,11 +70,11 @@ .constraints-left { grid-area: left; .constraint-btn-rotated { - height: $s-60; - width: $s-24; + height: deprecated.$s-60; + width: deprecated.$s-24; .resalted-area { - height: $s-32; - width: $s-3; + height: deprecated.$s-32; + width: deprecated.$s-3; } } } @@ -83,22 +83,22 @@ grid-area: center; position: relative; background-color: var(--constraint-center-area-background-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; .constraint-btn { - width: $s-60; - height: $s-24; + width: deprecated.$s-60; + height: deprecated.$s-24; .resalted-area { - width: $s-32; - height: $s-3; + width: deprecated.$s-32; + height: deprecated.$s-3; } } .constraint-btn-special { position: absolute; - height: $s-60; - width: $s-24; + height: deprecated.$s-60; + width: deprecated.$s-24; .resalted-area { - height: $s-32; - width: $s-3; + height: deprecated.$s-32; + width: deprecated.$s-3; } } } @@ -106,11 +106,11 @@ .constraints-right { grid-area: right; .constraint-btn-rotated { - height: $s-72; - width: $s-24; + height: deprecated.$s-72; + width: deprecated.$s-24; .resalted-area { - height: $s-32; - width: $s-3; + height: deprecated.$s-32; + width: deprecated.$s-3; } } } @@ -120,37 +120,37 @@ } .constraints-selects { - @include flexColumn; + @include deprecated.flexColumn; } .horizontal-select, .vertical-select { - width: $s-124; + width: deprecated.$s-124; padding: 0; } .checkbox { display: flex; align-items: center; - margin-bottom: $s-8; - margin-top: $s-8; + margin-bottom: deprecated.$s-8; + margin-top: deprecated.$s-8; padding-left: 0; input { margin: 0; } label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; - gap: $s-2; + gap: deprecated.$s-2; cursor: pointer; color: var(--input-checkbox-text-foreground-color); .check-mark { - @include flexCenter; - width: $s-16; - height: $s-16; - border-radius: $br-6; + @include deprecated.flexCenter; + width: deprecated.$s-16; + height: deprecated.$s-16; + border-radius: deprecated.$br-6; background-color: var(--input-checkbox-inactive-background-color); &.checked { background-color: var(--input-checkbox-background-color-active); diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/exports.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/exports.scss index 264b658a58..2d6cc25313 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/exports.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/exports.scss @@ -4,14 +4,20 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { - margin: 0; + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); +} + +.element-title { + grid-column: span 8; } .title-spacing-export { - padding-left: $s-2; + padding-left: deprecated.$s-2; margin: 0; } @@ -22,13 +28,13 @@ } .multiple-exports { - @include flexRow; + @include deprecated.flexRow; grid-column: 1 / span 9; .label { @extend .mixed-bar; } .actions { - @include flexRow; + @include deprecated.flexRow; } } @@ -49,8 +55,8 @@ padding: 0; .dropdown-upwards { - bottom: $s-36; - width: $s-80; + bottom: deprecated.$s-36; + width: deprecated.$s-80; top: unset; } } @@ -59,21 +65,21 @@ grid-column: span 2; padding: 0; .dropdown-upwards { - bottom: $s-36; + bottom: deprecated.$s-36; top: unset; - width: $s-80; + width: deprecated.$s-80; } } .suffix-input { grid-column: span 3; @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } .export-btn { @extend .button-secondary; - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; grid-column: 1 / span 9; - height: $s-32; + height: deprecated.$s-32; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/fill.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/fill.cljs index f49bbc6104..fe1954680b 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/fill.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/fill.cljs @@ -10,9 +10,10 @@ [app.common.types.color :as clr] [app.common.types.fills :as types.fills] [app.common.types.shape.attrs :refer [default-color]] - [app.config :as cfg] [app.main.data.workspace :as udw] [app.main.data.workspace.colors :as dc] + [app.main.data.workspace.tokens.application :as dwta] + [app.main.features :as feat] [app.main.store :as st] [app.main.ui.components.title-bar :refer [title-bar*]] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] @@ -28,25 +29,12 @@ #{:fills :hide-fill-on-export}) (def ^:private - xf:take-max-fills - (take types.fills/MAX-FILLS)) - -(def ^:private - xf:enumerate + xf:process-fills (map-indexed (fn [index item] (let [color (types.fills/fill->color item)] (with-meta item {:index index :color color}))))) -(def ^:private ^boolean binary-fills-enabled? - (contains? cfg/flags :frontend-binary-fills)) - -(def ^:private - xf:process-fills - (if binary-fills-enabled? - (comp xf:take-max-fills xf:enumerate) - xf:enumerate)) - (defn- prepare-fills "Internal helper hook that prepares fills" [fills] @@ -68,16 +56,27 @@ n-vals (unchecked-get n-props "values") o-fills (get o-vals :fills) n-fills (get n-vals :fills) + o-objects (get o-vals :objects) + n-objects (get n-vals :objects) + o-applied-tokens (get o-vals :applied-tokens) + n-applied-tokens (get n-vals :applied-tokens) o-hide (get o-vals :hide-fill-on-export) n-hide (get n-vals :hide-fill-on-export)] (and (identical? o-hide n-hide) - (identical? o-fills n-fills))))) + (identical? o-applied-tokens n-applied-tokens) + (identical? o-fills n-fills) + (identical? o-objects n-objects))))) (mf/defc fill-menu* {::mf/wrap [#(mf/memo' % check-props)]} - [{:keys [ids type values]}] + [{:keys [ids type values applied-tokens shapes objects]}] + (let [fills (get values :fills) hide-on-export (get values :hide-fill-on-export false) + fill-token-applied (:fill applied-tokens) + + render-wasm? (feat/use-feature "render-wasm/v1") + ^boolean multiple? (= :multiple fills) @@ -100,7 +99,7 @@ checkbox-ref (mf/use-ref) can-add-fills? - (if binary-fills-enabled? + (if render-wasm? (and (not multiple?) (< (count fills) types.fills/MAX-FILLS)) (not ^boolean multiple?)) @@ -132,8 +131,8 @@ on-reorder (mf/use-fn (mf/deps ids) - (fn [new-index index] - (st/emit! (dc/reorder-fills ids index new-index)))) + (fn [from-pos to-space-between-pos] + (st/emit! (dc/reorder-fills ids from-pos to-space-between-pos)))) on-remove (mf/use-fn @@ -172,7 +171,37 @@ #(reset! disable-drag* true)) on-blur - (mf/use-fn #(reset! disable-drag* false))] + (mf/use-fn #(reset! disable-drag* false)) + + on-token-change + (mf/use-fn + (mf/deps shapes objects) + (fn [_ token] + (let [expanded-shapes + (if (= 1 (count shapes)) + (let [shape (first shapes)] + (if (= (:type shape) :group) + (keep objects (:shapes shape)) + [shape])) + + (mapcat (fn [shape] + (if (= (:type shape) :group) + (keep objects (:shapes shape)) + [shape])) + shapes))] + + (st/emit! + (dwta/toggle-token {:token token + :attrs #{:fill} + :shapes expanded-shapes}))))) + + on-detach-token + (mf/use-fn + (mf/deps ids) + (fn [token] + (st/emit! (dwta/unapply-token {:attributes #{:fill} + :token token + :shape-ids ids}))))] (mf/with-layout-effect [hide-on-export] (when-let [checkbox (mf/ref-val checkbox-ref)] @@ -182,13 +211,13 @@ (dom/set-attribute! checkbox "indeterminate" true) (dom/remove-attribute! checkbox "indeterminate")))) - [:div {:class (stl/css :element-set)} - [:div {:class (stl/css :element-title)} + [:div {:class (stl/css :fill-section)} + [:div {:class (stl/css :fill-title)} [:> title-bar* {:collapsable has-fills? :collapsed (not open?) :on-collapsed toggle-content :title label - :class (stl/css-case :title-spacing-fill (not has-fills?))} + :class (stl/css-case :fill-title-bar (not has-fills?))} (when (not (= :multiple fills)) [:> icon-button* {:variant "ghost" @@ -199,11 +228,11 @@ :icon i/add}])]] (when open? - [:div {:class (stl/css :element-content)} + [:div {:class (stl/css :fill-content)} (cond (= :multiple fills) - [:div {:class (stl/css :element-set-options-group)} - [:div {:class (stl/css :group-label)} + [:div {:class (stl/css :fill-multiple)} + [:div {:class (stl/css :fill-multiple-label)} (tr "settings.multiple")] [:> icon-button* {:variant "ghost" :aria-label (tr "workspace.options.fill.remove-fill") @@ -211,7 +240,7 @@ :icon i/remove}]] (some? fills) - [:& h/sortable-container {} + [:> h/sortable-container* {} (for [value fills] (let [mdata (meta value) index (get mdata :index) @@ -223,16 +252,20 @@ :on-change on-change :on-reorder on-reorder :on-detach on-detach + :on-detach-token on-detach-token :on-remove on-remove :disable-drag disable-drag? :on-focus on-focus + :applied-token fill-token-applied + :on-token-change on-token-change + :origin :fill :select-on-focus (not disable-drag?) :on-blur on-blur}]))]) (when (or (= type :frame) (and (= type :multiple) (some? hide-on-export))) - [:div {:class (stl/css :checkbox)} + [:div {:class (stl/css :fill-checkbox)} [:label {:for "show-fill-on-export" :class (stl/css-case :global/checked (not hide-on-export))} [:span {:class (stl/css-case :check-mark true diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/fill.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/fill.scss index 5646c32f19..82e182b54d 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/fill.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/fill.scss @@ -4,44 +4,61 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as t; +@use "refactor/common-refactor.scss" as deprecated; -.element-set { - margin: 0; +.fill-section { + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); } -.element-title { - margin: 0; +.fill-title { + grid-column: span 8; } -.title-spacing-fill { - padding-left: $s-2; - margin: 0; +.fill-title-bar { + padding-inline-start: var(--sp-xxs); } -.element-content { +.fill-content { + grid-column: span 8; + display: flex; flex-direction: column; - gap: $s-12; - margin: $s-4 0 $s-8 0; + gap: var(--sp-m); + margin: var(--sp-xs) 0 var(--sp-s) 0; } -.element-set-options-group { - @include flexRow; +.fill-multiple { + display: flex; + align-items: center; + gap: var(--sp-xs); } -.group-label { - @extend .mixed-bar; +.fill-multiple-label { + @include t.use-typography("body-small"); + display: flex; + align-items: center; + flex-grow: 1; + border-radius: $br-8; + block-size: $sz-32; + padding: var(--sp-s); + background-color: var(--color-background-tertiary); + color: var(--color-foreground-primary); } -.checkbox { +.fill-checkbox { + // TODO create a checkbox component in the DS @extend .input-checkbox; - padding-left: $s-8; + padding-inline-start: var(--sp-s); span.checked { - background-color: var(--input-border-color-active); + background-color: var(--color-accent-primary); svg { @extend .button-icon-small; - stroke: var(--input-details-color); + stroke: var(--color-background-primary); } } } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs index edda70d353..326b5efa4a 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs @@ -19,7 +19,7 @@ [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.foundations.assets.icon :as i] [app.main.ui.icons :as deprecated-icon] - [app.main.ui.workspace.sidebar.options.common :refer [advanced-options]] + [app.main.ui.workspace.sidebar.options.common :refer [advanced-options*]] [app.main.ui.workspace.sidebar.options.rows.color-row :refer [color-row*]] [app.util.i18n :as i18n :refer [tr]] [okulary.core :as l] @@ -190,9 +190,9 @@ :icon i/remove}]]] (when (:display grid) - [:& advanced-options {:class (stl/css :grid-advanced-options) - :visible? open? - :on-close toggle-advanced-options} + [:> advanced-options* {:class (stl/css :grid-advanced-options) + :is-visible open? + :on-close toggle-advanced-options} ;; square (when (= :square type) [:div {:class (stl/css :square-row)} @@ -201,6 +201,7 @@ :title (tr "workspace.options.grid.params.color") :disable-gradient true :disable-image true + :origin :guides :on-change handle-change-color :on-detach handle-detach-color}] [:button {:class (stl/css-case :show-more-options true @@ -242,6 +243,7 @@ :title (tr "workspace.options.grid.params.color") :disable-gradient true :disable-image true + :origin :guides :on-change handle-change-color :on-detach handle-detach-color}]]] @@ -314,16 +316,17 @@ #(st/emit! (dw/add-frame-grid id)))] [:div {:class (stl/css :element-set)} - [:> title-bar* {:collapsable has-frame-grids? - :collapsed (not open?) - :on-collapsed toggle-content - :class (stl/css-case :title-spacing-board-grid (not has-frame-grids?)) - :title (tr "workspace.options.guides.title")} + [:div {:class (stl/css :element-title)} + [:> title-bar* {:collapsable has-frame-grids? + :collapsed (not open?) + :on-collapsed toggle-content + :class (stl/css-case :title-spacing-board-grid (not has-frame-grids?)) + :title (tr "workspace.options.guides.title")} - [:> icon-button* {:variant "ghost" - :aria-label (tr "workspace.options.guides.add-guide") - :on-click handle-create-grid - :icon i/add}]] + [:> icon-button* {:variant "ghost" + :aria-label (tr "workspace.options.guides.add-guide") + :on-click handle-create-grid + :icon i/add}]]] (when (and open? (seq frame-grids)) [:div {:class (stl/css :element-set-content)} diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.scss index d2a0bf4caf..e7caff9882 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.scss @@ -4,42 +4,49 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { - margin: 0; + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); +} + +.element-title { + grid-column: span 8; } .title-spacing-board-grid { - padding-left: $s-2; + padding-left: deprecated.$s-2; margin: 0; } .element-set-content { - @include flexColumn; - margin: $s-4 0 $s-8 0; + @include deprecated.flexColumn; + grid-column: span 8; + margin: deprecated.$s-4 0 deprecated.$s-8 0; } .grid-title { display: grid; grid-template-columns: repeat(8, var(--sp-xxxl)); - gap: $s-4; + gap: deprecated.$s-4; } .option-row { grid-column: span 6; display: flex; align-items: center; - gap: $s-1; - border-radius: $br-8; + gap: deprecated.$s-1; + border-radius: deprecated.$br-8; background-color: var(--input-details-color); .show-options { @extend .button-secondary; - height: $s-32; - width: $s-28; - border-radius: $br-8 0 0 $br-8; + height: deprecated.$s-32; + width: deprecated.$s-28; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; box-sizing: border-box; - border: $s-1 solid var(--input-border-color); + border: deprecated.$s-1 solid var(--input-border-color); svg { @extend .button-icon; } @@ -49,52 +56,52 @@ } .type-select-wrapper { flex-grow: 1; - width: $s-96; + width: deprecated.$s-96; padding: 0; border-radius: 0; - height: $s-32; + height: deprecated.$s-32; .grid-type-select { border-radius: 0; height: 100%; box-sizing: border-box; - border: $s-1 solid var(--input-border-color); + border: deprecated.$s-1 solid var(--input-border-color); &:hover { - border: $s-1 solid var(--input-border-color-hover); + border: deprecated.$s-1 solid var(--input-border-color-hover); } } } .grid-size { @extend .asset-element; - width: $s-60; + width: deprecated.$s-60; margin: 0; padding: 0; - padding-left: $s-8; - border-radius: 0 $br-8 $br-8 0; + padding-left: deprecated.$s-8; + border-radius: 0 deprecated.$br-8 deprecated.$br-8 0; .numeric-input { @extend .input-base; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } } .editable-select-wrapper { @extend .asset-element; - width: $s-60; + width: deprecated.$s-60; margin: 0; padding: 0; position: relative; - border-radius: 0 $br-8 $br-8 0; + border-radius: 0 deprecated.$br-8 deprecated.$br-8 0; .column-select { - height: $s-32; - border-radius: 0 $br-8 $br-8 0; + height: deprecated.$s-32; + border-radius: 0 deprecated.$br-8 deprecated.$br-8 0; box-sizing: border-box; - border: $s-1 solid var(--input-border-color); + border: deprecated.$s-1 solid var(--input-border-color); .numeric-input { @extend .input-base; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; margin: 0; padding: 0; } span { - @include flexCenter; + @include deprecated.flexCenter; svg { @extend .button-icon; } @@ -104,28 +111,28 @@ &.hidden { .show-options { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); + @include deprecated.hiddenElement; + border: deprecated.$s-1 solid var(--input-border-color-disabled); } .type-select-wrapper, .editable-select-wrapper { - @include hiddenElement; + @include deprecated.hiddenElement; .column-select, .grid-type-select { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); + @include deprecated.hiddenElement; + border: deprecated.$s-1 solid var(--input-border-color-disabled); } .column-select { - @include hiddenElement; - border-radius: 0 $br-8 $br-8 0; + @include deprecated.hiddenElement; + border-radius: 0 deprecated.$br-8 deprecated.$br-8 0; .numeric-input { - @include hiddenElement; + @include deprecated.hiddenElement; } } } .grid-size { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); + @include deprecated.hiddenElement; + border: deprecated.$s-1 solid var(--input-border-color-disabled); .icon { stroke: var(--input-foreground-color-disabled); } @@ -146,36 +153,36 @@ } .actions { - @include flexRow; + @include deprecated.flexRow; grid-column: span 2; } .grid-advanced-options { - @include flexColumn; - margin-top: $s-4; + @include deprecated.flexColumn; + margin-top: deprecated.$s-4; } .column-row, .square-row { - @include flexColumn; + @include deprecated.flexColumn; position: relative; } .advanced-row { position: relative; display: flex; - gap: $s-4; + gap: deprecated.$s-4; .orientation-select-wrapper { - width: $s-92; + width: deprecated.$s-92; padding: 0; } .color-wrapper { - width: $s-156; + width: deprecated.$s-156; } .show-more-options { @extend .button-tertiary; - height: $s-32; - width: $s-32; + height: deprecated.$s-32; + width: deprecated.$s-32; svg { @extend .button-icon; } @@ -185,15 +192,15 @@ } .height { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; .icon-text { - padding-top: $s-1; + padding-top: deprecated.$s-1; } } .gutter, .margin { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; .icon { &.rotated svg { transform: rotate(90deg); @@ -202,27 +209,27 @@ } .more-options { - @include menuShadow; - @include flexColumn; + @include deprecated.menuShadow; + @include deprecated.flexColumn; position: absolute; - top: calc($s-2 + $s-28); + top: calc(deprecated.$s-2 + deprecated.$s-28); right: 0; - width: $s-156; - max-height: $s-300; - padding: $s-2; - margin: 0 0 $s-40 0; - margin-top: $s-4; - border-radius: $br-8; - z-index: $z-index-4; + width: deprecated.$s-156; + max-height: deprecated.$s-300; + padding: deprecated.$s-2; + margin: 0 0 deprecated.$s-40 0; + margin-top: deprecated.$s-4; + border-radius: deprecated.$br-8; + z-index: deprecated.$z-index-4; overflow-y: auto; background-color: var(--menu-background-color); .option-btn { - @include buttonStyle; + @include deprecated.buttonStyle; display: flex; align-items: center; - height: $s-32; - padding: 0 $s-8; - border-radius: $br-6; + height: deprecated.$s-32; + padding: 0 deprecated.$s-8; + border-radius: deprecated.$br-6; color: var(--menu-foreground-color); &:hover { @@ -237,9 +244,9 @@ @extend .dropdown-wrapper; left: unset; right: 0; - width: $s-108; + width: deprecated.$s-108; .btn-options { - @include buttonStyle; + @include deprecated.buttonStyle; @extend .dropdown-element-base; width: 100%; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/grid_cell.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/grid_cell.scss index 9220b1cf82..5264a1e757 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/grid_cell.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/grid_cell.scss @@ -4,44 +4,55 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .grid-cell-menu-container { - @include flexColumn; - margin-top: $s-8; - gap: $s-16; + @include deprecated.flexColumn; + margin-top: deprecated.$s-8; + gap: deprecated.$s-16; +} + +.grid-cell-menu { + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); } .grid-cell-menu-title { - font-size: $fs-11; + grid-column: span 8; + font-size: deprecated.$fs-11; +} + +.grid-cell-menu-container { + grid-column: span 8; } .row { - @include flexRow; + @include deprecated.flexRow; } .cell-mode :global(label) { - padding: 0 $s-12; + padding: 0 deprecated.$s-12; } .edit-grid-btn { @extend .button-secondary; - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; width: 100%; - padding: $s-8; + padding: deprecated.$s-8; } .area-input { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; width: 100%; - padding: $s-8; + padding: deprecated.$s-8; } .grid-coord-group { - @include flexRow; - border-radius: $br-8; - padding-left: $s-4; + @include deprecated.flexRow; + border-radius: deprecated.$br-8; + padding-left: deprecated.$s-4; background-color: var(--input-background-color); } @@ -52,7 +63,7 @@ .coord-input { @extend .input-element; - @include bodySmallTypography; - border-radius: 0 $br-8 $br-8 0; - border-left: $s-1 solid var(--panel-background-color); + @include deprecated.bodySmallTypography; + border-radius: 0 deprecated.$br-8 deprecated.$br-8 0; + border-left: deprecated.$s-1 solid var(--panel-background-color); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/interactions.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/interactions.scss index a443f17cfb..313f5a4a2f 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/interactions.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/interactions.scss @@ -4,22 +4,22 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .interactions-content { display: flex; flex-direction: column; - gap: $s-8; + gap: deprecated.$s-8; padding-left: var(--sp-m); } .interaction-options { - @include flexColumn; + @include deprecated.flexColumn; } .help-content { - padding: $s-32 0; - width: $s-200; + padding: deprecated.$s-32 0; + width: deprecated.$s-200; margin: 0 auto; } @@ -27,37 +27,37 @@ display: flex; flex-direction: column; align-items: center; - margin-bottom: $s-40; - gap: $s-12; + margin-bottom: deprecated.$s-40; + gap: deprecated.$s-12; } .interactions-help-icon { - @include flexCenter; - width: $s-48; - height: $s-48; - border-radius: $br-circle; + @include deprecated.flexCenter; + width: deprecated.$s-48; + height: deprecated.$s-48; + border-radius: deprecated.$br-circle; background-color: var(--pill-background-color); svg { @extend .button-icon; stroke: var(--icon-foreground); - height: $s-32; - width: $s-32; + height: deprecated.$s-32; + width: deprecated.$s-32; } } .after { - @include bodySmallTypography; - margin-top: $s-1; + @include deprecated.bodySmallTypography; + margin-top: deprecated.$s-1; } .interactions-help { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; text-align: center; color: var(--title-foreground-color); } .element-set { - @include flexColumn; + @include deprecated.flexColumn; } .interactions-info { @@ -71,27 +71,27 @@ .action-summary { color: var(--color-foreground-secondary); - @include textEllipsis; + @include deprecated.textEllipsis; } .groups { - @include flexColumn($s-12); + @include deprecated.flexColumn(deprecated.$s-12); } .element-set-options-group-open { - @include flexColumn; + @include deprecated.flexColumn; } .extended-options { - @include flexColumn; + @include deprecated.flexColumn; } .property-list { list-style: none; margin: 0; display: grid; - row-gap: $s-16; - margin-block: calc(#{$s-16} - #{$s-4}); + row-gap: deprecated.$s-16; + margin-block: calc(#{deprecated.$s-16} - #{deprecated.$s-4}); } .property-row { @@ -101,10 +101,10 @@ height: 100%; } .interaction-name { - @include twoLineTextEllipsis; - @include bodySmallTypography; - padding-left: $s-4; - width: $s-92; + @include deprecated.twoLineTextEllipsis; + @include deprecated.bodySmallTypography; + padding-left: deprecated.$s-4; + width: deprecated.$s-92; margin: auto 0; grid-area: name; color: var(--title-foreground-color); @@ -114,18 +114,18 @@ align-items: center; grid-area: content; .easing-select { - width: $s-156; - padding: 0 $s-8; + width: deprecated.$s-156; + padding: 0 deprecated.$s-8; .dropdown-upwards { - bottom: $s-36; - width: $s-156; + bottom: deprecated.$s-36; + width: deprecated.$s-156; top: unset; } } } .input-element-wrapper { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; grid-area: content; } .buttons-wrapper { @@ -142,7 +142,7 @@ } .inputs-wrapper { grid-area: content; - @include flexRow; + @include deprecated.flexRow; .radio-btn { @extend .input-checkbox; } @@ -158,9 +158,9 @@ "bottomleft bottom bottomright"; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); - width: $s-84; - height: $s-84; - border-radius: $br-8; + width: deprecated.$s-84; + height: deprecated.$s-84; + border-radius: deprecated.$br-8; background-color: var(--color-background-tertiary); .center-btn { grid-area: center; @@ -187,8 +187,8 @@ .direction-btn { @extend .button-tertiary; - height: $s-28; - width: $s-28; + height: deprecated.$s-28; + width: deprecated.$s-28; &.active { @extend .button-icon-selected; @@ -206,14 +206,14 @@ .interactions-summary { @extend .asset-element; - height: $s-44; + height: deprecated.$s-44; padding: 0; - gap: $s-8; + gap: deprecated.$s-8; .remove-btn { @extend .button-tertiary; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon-small; } @@ -224,7 +224,7 @@ @extend .button-tertiary; --button-tertiary-border-width: var(--expand-button-icon-border-width); height: 100%; - width: $s-28; + width: deprecated.$s-28; border-end-end-radius: 0; border-start-end-radius: 0; padding: 0; @@ -239,7 +239,7 @@ left: 0; right: 0; bottom: 0; - border-inline-end: $s-1 solid var(--panel-background-color); + border-inline-end: deprecated.$s-1 solid var(--panel-background-color); } &.extended { @extend .button-icon-selected; @@ -250,46 +250,46 @@ .corner-icon { fill: none; stroke: currentColor; - width: $s-12; - height: $s-12; + width: deprecated.$s-12; + height: deprecated.$s-12; } .flow-element { - @include flexRow; + @include deprecated.flexRow; } .flow-info { display: flex; align-items: center; - gap: $s-2; - border-radius: $s-8; + gap: deprecated.$s-2; + border-radius: deprecated.$s-8; background-color: var(--input-details-color); - height: $s-32; + height: deprecated.$s-32; width: 100%; flex-grow: 1; } .flow-name-wrapper { - @include bodySmallTypography; - @include focusInput; + @include deprecated.bodySmallTypography; + @include deprecated.focusInput; display: flex; align-items: center; - gap: $s-4; + gap: deprecated.$s-4; flex-grow: 1; - height: $s-32; + height: deprecated.$s-32; width: 100%; - border-radius: $br-8; + border-radius: deprecated.$br-8; padding: 0; margin-right: 0; background-color: var(--input-background-color); - border: $s-1 solid var(--input-border-color); + border: deprecated.$s-1 solid var(--input-border-color); color: var(--input-foreground-color); .start-flow-btn { - @include buttonStyle; - height: $s-32; - width: $s-28; - padding: 0 $s-2 0 $s-8; - border-radius: $br-8 0 0 $br-8; + @include deprecated.buttonStyle; + height: deprecated.$s-32; + width: deprecated.$s-28; + padding: 0 deprecated.$s-2 0 deprecated.$s-8; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; background-color: transparent; svg { @extend .button-icon; @@ -302,28 +302,28 @@ .flow-input { @extend .input-base; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; background-color: transparent; - height: $s-28; + height: deprecated.$s-28; } .flow-input-wrapper { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; - height: $s-28; + height: deprecated.$s-28; padding: 0; width: 100%; margin: 0; flex-grow: 1; background-color: transparent; color: var(--input-foreground-color); - border-radius: $br-8; + border-radius: deprecated.$br-8; } &:hover { background-color: var(--input-background-color-hover); - border: $s-1 solid var(--input-border-color-hover); + border: deprecated.$s-1 solid var(--input-border-color-hover); &:active { background-color: var(--input-background-color-hover); .flow-input-wrapper { @@ -335,14 +335,14 @@ &:focus, &:focus-within { background-color: var(--input-background-color-focus); - border: $s-1 solid var(--input-border-color-focus); + border: deprecated.$s-1 solid var(--input-border-color-focus); &:hover { - border: $s-1 solid var(--input-border-color-focus); + border: deprecated.$s-1 solid var(--input-border-color-focus); } } &.editing { background-color: var(--input-background-color-active); - border: $s-1 solid var(--input-border-color-active); + border: deprecated.$s-1 solid var(--input-border-color-active); } } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layer.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layer.cljs index 73be28c89d..a98913a86c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layer.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layer.cljs @@ -95,9 +95,11 @@ :option-highlighted? true) (when wasm-renderer-enabled? - (doseq [shape ids] - (wasm.api/use-shape (:id shape)) - (wasm.api/set-shape-blend-mode value))) + (doseq [id ids] + (wasm.api/use-shape id) + (wasm.api/set-shape-blend-mode value) + (wasm.api/update-shape-tiles) + (wasm.api/request-render "preview-blend-mode"))) (st/emit! (dw/trigger-bounding-box-cloaking ids)) (st/emit! (dw/set-preview-blend-mode ids value)))) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layer.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layer.scss index 33b93f308d..fb0ad3dcf5 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layer.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layer.scss @@ -4,21 +4,21 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set-content { display: grid; grid-template-columns: repeat(8, var(--sp-xxxl)); gap: var(--sp-xs); - height: $s-32; - margin-bottom: $s-8; + height: deprecated.$s-32; + margin-bottom: deprecated.$s-8; .select { grid-column: span 4; padding: 0; } .input { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; grid-column: span 2; } .actions { @@ -29,12 +29,12 @@ &.hidden { .hidden-select { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); + @include deprecated.hiddenElement; + border: deprecated.$s-1 solid var(--input-border-color-disabled); } .input { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); + @include deprecated.hiddenElement; + border: deprecated.$s-1 solid var(--input-border-color-disabled); .icon { stroke: var(--input-foreground-color-disabled); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs index 68a60566ba..bcc4f928ec 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs @@ -812,7 +812,7 @@ [:button {:class (stl/css :add-column) :on-click add-track} deprecated-icon/add]] (when expanded? - [:& h/sortable-container {} + [:> h/sortable-container* {} [:div {:class (stl/css :grid-tracks-info-container)} (for [[index column] (d/enumerate column-values)] [:& grid-track-info {:key (dm/str index "-" (d/name type)) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.scss index 7bcb540945..66f6d1a0b8 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_container.scss @@ -4,21 +4,26 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { - margin: 0; + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); + .element-title { + grid-column: span 8; + .title-spacing-layout { - padding-left: $s-2; + padding-left: deprecated.$s-2; margin: 0; } .title-actions { position: relative; display: flex; - gap: $s-4; - height: $s-32; + gap: deprecated.$s-4; + height: deprecated.$s-32; padding: 0; margin: 0; .layout-options { @@ -33,14 +38,14 @@ display: grid; grid-template-columns: repeat(8, var(--sp-xxxl)); gap: var(--sp-xs); - margin-bottom: $s-8; + margin-bottom: deprecated.$s-8; .first-row { grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; - margin-bottom: $s-12; - margin-top: $s-4; + margin-bottom: deprecated.$s-12; + margin-top: deprecated.$s-4; .align-row { grid-column: span 3; @@ -52,9 +57,9 @@ .wrap-button { @extend .button-tertiary; - border-radius: $br-8; - height: $s-32; - width: $s-32; + border-radius: deprecated.$br-8; + height: deprecated.$s-32; + width: deprecated.$s-32; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -69,7 +74,7 @@ grid-column: 1 / -1; display: grid; grid-template-columns: subgrid; - margin-bottom: $s-12; + margin-bottom: deprecated.$s-12; .align-content-row, .justify-content-row { @@ -98,14 +103,14 @@ grid-template-columns: subgrid; .column-gap { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; &.disabled { @extend .disabled-input; } } .row-gap { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; &.disabled { @extend .disabled-input; } @@ -130,7 +135,7 @@ .padding-simple { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } } @@ -142,15 +147,15 @@ .padding-multiple { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } } .padding-toggle { @extend .button-tertiary; - height: $s-32; - width: $s-32; - border-radius: $br-8; + height: deprecated.$s-32; + width: deprecated.$s-32; + border-radius: deprecated.$br-8; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -175,7 +180,7 @@ } .first-row { - margin-bottom: $s-8; + margin-bottom: deprecated.$s-8; display: grid; grid-template-columns: subgrid; } @@ -195,23 +200,23 @@ .grid-layout-menu-title { flex: 1; - font-size: $fs-11; + font-size: deprecated.$fs-11; color: var(--title-foreground-color-hover); grid-column: span 5; } .edit-mode-btn { @extend .button-secondary; - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; width: 100%; - padding: $s-8; + padding: deprecated.$s-8; grid-column: span 7; } .exit-btn { @extend .button-secondary; - @include uppercaseTitleTipography; - padding: $s-8 $s-20; + @include deprecated.uppercaseTitleTipography; + padding: deprecated.$s-8 deprecated.$s-20; grid-column: span 2; } @@ -220,11 +225,11 @@ grid-template-columns: subgrid; grid-column: 1 / -1; gap: var(--sp-xs); - margin-top: $s-4; + margin-top: deprecated.$s-4; } .padding-section { - margin-top: $s-8; + margin-top: deprecated.$s-8; } .grid-tracks-row { @@ -245,11 +250,11 @@ grid-template-columns: subgrid; &.dnd-over-top { - border-top: $s-2 solid var(--button-foreground-hover); + border-top: deprecated.$s-2 solid var(--button-foreground-hover); } &.dnd-over-bot { - border-bottom: $s-2 solid var(--button-foreground-hover); + border-bottom: deprecated.$s-2 solid var(--button-foreground-hover); } .track-info-container { @@ -259,9 +264,9 @@ .track-info-dir-icon { cursor: pointer; - border-radius: $br-8 0 0 $br-8; + border-radius: deprecated.$br-8 0 0 deprecated.$br-8; background-color: var(--input-background-color); - padding: 0 $s-8; + padding: 0 deprecated.$s-8; svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -274,14 +279,14 @@ .track-info-value { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; border-radius: 0; - border-right: $s-1 solid var(--panel-background-color); + border-right: deprecated.$s-1 solid var(--panel-background-color); } .track-info-unit-selector { - border-radius: 0 $br-8 $br-8 0; - width: $s-96; + border-radius: 0 deprecated.$br-8 deprecated.$br-8 0; + width: deprecated.$s-96; } } @@ -289,22 +294,22 @@ display: grid; grid-template-columns: subgrid; grid-column: 1 / -1; - margin-top: $s-8; + margin-top: deprecated.$s-8; .grid-track-header { - @include flexRow; - font-size: $fs-12; - border-radius: $br-8; + @include deprecated.flexRow; + font-size: deprecated.$fs-12; + border-radius: deprecated.$br-8; overflow: hidden; background: var(--button-secondary-background-color-rest); - height: $s-52; + height: deprecated.$s-52; grid-column: 1 / -1; } .track-title { display: grid; flex-grow: 1; - padding: $s-8; + padding: deprecated.$s-8; gap: 0; overflow: hidden; } @@ -323,10 +328,10 @@ .expand-icon { @extend .button-secondary; - height: $s-52; + height: deprecated.$s-52; - border-radius: $s-8 0 0 $s-8; - border-right: $s-1 solid var(--panel-background-color); + border-radius: deprecated.$s-8 0 0 deprecated.$s-8; + border-right: deprecated.$s-1 solid var(--panel-background-color); svg { @extend .button-icon; stroke: var(--icon-foreground); @@ -343,12 +348,12 @@ .add-column { @extend .button-tertiary; - height: $s-52; + height: deprecated.$s-52; svg { @extend .button-icon; - height: $s-12; - width: $s-12; + height: deprecated.$s-12; + width: deprecated.$s-12; stroke: var(--icon-foreground); fill: var(--icon-foreground); } @@ -357,15 +362,15 @@ .layout-options { @extend .dropdown-wrapper; - @include flexColumn; + @include deprecated.flexColumn; right: var(--sp-s); left: initial; button { - @include buttonStyle; - padding: $s-8; + @include deprecated.buttonStyle; + padding: deprecated.$s-8; color: var(--color-foreground-primary); - border-radius: $br-6; + border-radius: deprecated.$br-6; &:hover { background: var(--color-background-quaternary); diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_item.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_item.scss index eaa53011db..511b7a4adc 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_item.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/layout_item.scss @@ -4,18 +4,18 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { margin: 0; } .title-spacing-layout-element { - margin: 0 0 $s-4 0; + margin: 0 0 deprecated.$s-4 0; } .title-spacing-empty { - padding-left: $s-2; + padding-left: deprecated.$s-2; } .flex-element-menu { @@ -38,7 +38,7 @@ .z-index-wrapper { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; grid-column: 6 / span 3; } @@ -72,7 +72,7 @@ .margin-mode { @extend .button-tertiary; grid-column: 3; - height: $s-32; + height: deprecated.$s-32; svg { @extend .button-icon; } @@ -88,7 +88,7 @@ .vertical-margin, .horizontal-margin { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } .vertical-margin { grid-column: 1; @@ -109,7 +109,7 @@ .left-margin, .right-margin { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; } .top-margin { @@ -151,11 +151,11 @@ .layout-item-max-w, .layout-item-max-h { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; .icon-text { justify-content: flex-start; - width: $s-80; - padding-top: $s-2; + width: deprecated.$s-80; + padding-top: deprecated.$s-2; } } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs index 43b0726a3b..040bb3eb29 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.cljs @@ -14,18 +14,23 @@ [app.common.logic.shapes :as cls] [app.common.types.shape :as cts] [app.common.types.shape.layout :as ctl] + [app.common.types.token :as tk] [app.main.constants :refer [size-presets]] [app.main.data.workspace :as udw] [app.main.data.workspace.interactions :as dwi] [app.main.data.workspace.shapes :as dwsh] + [app.main.data.workspace.tokens.application :as dwta] [app.main.data.workspace.transforms :as dwt] [app.main.data.workspace.undo :as dwu] + [app.main.features :as features] [app.main.refs :as refs] [app.main.store :as st] [app.main.ui.components.dropdown :refer [dropdown]] - [app.main.ui.components.numeric-input :refer [numeric-input*]] + [app.main.ui.components.numeric-input :as deprecated-input] [app.main.ui.components.radio-buttons :refer [radio-button radio-buttons]] + [app.main.ui.context :as muc] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] + [app.main.ui.ds.controls.numeric-input :refer [numeric-input*]] [app.main.ui.ds.foundations.assets.icon :refer [icon*] :as i] [app.main.ui.icons :as deprecated-icon] [app.main.ui.workspace.sidebar.options.menus.border-radius :refer [border-radius-menu*]] @@ -87,13 +92,41 @@ shape)] (select-keys shape measure-attrs))) +(mf/defc numeric-input-wrapper* + {::mf/private true} + [{:keys [values name applied-tokens align on-detach] :rest props}] + (let [tokens (mf/use-ctx muc/active-tokens-by-type) + tokens (mf/with-memo [tokens name] + (delay + (-> (deref tokens) + (select-keys (get tk/tokens-by-input name)) + (not-empty)))) + on-detach-attr + (mf/use-fn + (mf/deps on-detach name) + #(on-detach % name)) + + props (mf/spread-props props + {:placeholder (if (or (= :multiple (:applied-tokens values)) + (= :multiple (get values name))) + (tr "settings.multiple") "--") + :class (stl/css :numeric-input-measures) + :applied-token (get applied-tokens name) + :tokens tokens + :align align + :on-detach on-detach-attr + :value (get values name)})] + [:> numeric-input* props])) + (def ^:private xf:map-type (map :type)) (def ^:private xf:mapcat-type-to-options (mapcat type->options)) (mf/defc measures-menu* - {::mf/memo true} - [{:keys [ids values type shapes]}] - (let [all-types + [{:keys [ids values applied-tokens type shapes]}] + (let [token-numeric-inputs + (features/use-feature "tokens/numeric-input") + + all-types (mf/with-memo [type shapes] ;; We only need this when multiple type is used (when (= type :multiple) @@ -258,8 +291,7 @@ (st/emit! (udw/change-orientation ids (keyword orientation))))) ;; SIZE AND PROPORTION LOCK - - on-size-change + do-size-change (mf/use-fn (mf/deps ids) (fn [value attr] @@ -267,6 +299,24 @@ (st/emit! (udw/trigger-bounding-box-cloaking ids) (udw/update-dimensions ids attr value))))) + on-size-change + (mf/use-fn + (mf/deps ids) + (fn [value attr] + (if (or (string? value) (int? value)) + (do + (st/emit! (udw/trigger-bounding-box-cloaking ids)) + (binding [cts/*wasm-sync* true] + (run! #(do-size-change value attr) shapes))) + (do + (let [resolved-value (:resolved-value (first value))] + (st/emit! (udw/trigger-bounding-box-cloaking ids) + (dwta/toggle-token {:token (first value) + :attrs #{attr} + :shapes shapes})) + (binding [cts/*wasm-sync* true] + (run! #(do-size-change resolved-value attr) shapes))))))) + on-proportion-lock-change (mf/use-fn (mf/deps ids proportion-lock) @@ -284,19 +334,44 @@ (mf/use-fn (mf/deps ids) (fn [value attr] - (st/emit! (udw/trigger-bounding-box-cloaking ids)) - (binding [cts/*wasm-sync* true] - (run! #(do-position-change %1 value attr) shapes)))) + (if (or (string? value) (int? value)) + (do + (st/emit! (udw/trigger-bounding-box-cloaking ids)) + (binding [cts/*wasm-sync* true] + (run! #(do-position-change %1 value attr) shapes))) + (do + (let [resolved-value (:resolved-value (first value))] + (st/emit! (udw/trigger-bounding-box-cloaking ids) + (dwta/toggle-token {:token (first value) + :attrs #{attr} + :shapes shapes})) + (binding [cts/*wasm-sync* true] + (run! #(do-position-change %1 resolved-value attr) shapes))))))) ;; ROTATION + do-rotation-change + (mf/use-fn + (mf/deps ids) + (fn [value] + (st/emit! (udw/increase-rotation ids value)))) on-rotation-change (mf/use-fn (mf/deps ids) (fn [value] - (binding [cts/*wasm-sync* true] - (st/emit! (udw/trigger-bounding-box-cloaking ids) - (udw/increase-rotation ids value))))) + (if (or (string? value) (int? value)) + (do + (st/emit! (udw/trigger-bounding-box-cloaking ids)) + (binding [cts/*wasm-sync* true] + (run! #(do-rotation-change value) shapes))) + (do + (let [resolved-value (:resolved-value (first value))] + (st/emit! (udw/trigger-bounding-box-cloaking ids) + (dwta/toggle-token {:token (first value) + :attrs #{:rotation} + :shapes shapes})) + (binding [cts/*wasm-sync* true] + (run! #(do-rotation-change resolved-value) shapes))))))) on-width-change (mf/use-fn (mf/deps on-size-change) #(on-size-change % :width)) @@ -310,6 +385,16 @@ on-pos-y-change (mf/use-fn (mf/deps on-position-change) #(on-position-change % :y)) + + ;; DETACH + on-detach-token + (mf/use-fn + (mf/deps ids) + (fn [token attr] + (st/emit! (dwta/unapply-token {:token (first token) + :attributes #{attr} + :shape-ids ids})))) + ;; CLIP CONTENT AND SHOW IN VIEWER on-change-clip-content (mf/use-fn @@ -392,78 +477,144 @@ (when (options :size) [:div {:class (stl/css :size)} - [:div {:class (stl/css-case :width true - :disabled disabled-width-sizing?) - :title (tr "workspace.options.width")} - [:span {:class (stl/css :icon-text)} "W"] - [:> numeric-input* {:min 0.01 - :no-validate true - :placeholder (if (= :multiple (:width values)) (tr "settings.multiple") "--") - :on-change on-width-change - :disabled disabled-width-sizing? - :class (stl/css :numeric-input) - :value (:width values)}]] - [:div {:class (stl/css-case :height true - :disabled disabled-height-sizing?) - :title (tr "workspace.options.height")} - [:span {:class (stl/css :icon-text)} "H"] - [:> numeric-input* {:min 0.01 - :no-validate true - :placeholder (if (= :multiple (:height values)) (tr "settings.multiple") "--") - :on-change on-height-change - :disabled disabled-height-sizing? - :class (stl/css :numeric-input) - :value (:height values)}]] + (if token-numeric-inputs + [:* + [:> numeric-input-wrapper* + {:disabled disabled-width-sizing? + :on-change on-width-change + :on-detach on-detach-token + :icon i/character-w + :min 0.01 + :name :width + :property (tr "workspace.options.width") + :applied-tokens applied-tokens + :values values}] + + [:> numeric-input-wrapper* + {:disabled disabled-height-sizing? + :on-change on-height-change + :on-detach on-detach-token + :min 0.01 + :icon i/character-h + :name :height + :align :right + :property (tr "workspace.options.height") + :applied-tokens applied-tokens + :values values}]] + + [:* + [:div {:class (stl/css-case :width true + :disabled disabled-width-sizing?) + :title (tr "workspace.options.width")} + [:span {:class (stl/css :icon-text)} "W"] + [:> deprecated-input/numeric-input* + {:min 0.01 + :no-validate true + :placeholder (if (= :multiple (:width values)) (tr "settings.multiple") "--") + :on-change on-width-change + :disabled disabled-width-sizing? + :class (stl/css :numeric-input) + :value (:width values)}]] + [:div {:class (stl/css-case :height true + :disabled disabled-height-sizing?) + :title (tr "workspace.options.height")} + [:span {:class (stl/css :icon-text)} "H"] + [:> deprecated-input/numeric-input* {:min 0.01 + :no-validate true + :placeholder (if (= :multiple (:height values)) (tr "settings.multiple") "--") + :on-change on-height-change + :disabled disabled-height-sizing? + :class (stl/css :numeric-input) + :value (:height values)}]]]) [:> icon-button* {:variant "ghost" + :tooltip-placement "top-left" :icon (if proportion-lock "lock" "unlock") :class (stl/css-case :selected (true? proportion-lock)) :disabled (= proportion-lock :multiple) :aria-label (if proportion-lock (tr "workspace.options.size.unlock") (tr "workspace.options.size.lock")) :on-click on-proportion-lock-change}]]) + (when (options :position) [:div {:class (stl/css :position)} - [:div {:class (stl/css-case :x-position true - :disabled disabled-position?) - :title (tr "workspace.options.x")} - [:span {:class (stl/css :icon-text)} "X"] - [:> numeric-input* {:no-validate true - :placeholder (if (= :multiple (:x values)) (tr "settings.multiple") "--") - :on-change on-pos-x-change - :disabled disabled-position? - :class (stl/css :numeric-input) - :value (:x values)}]] + (if token-numeric-inputs + [:* + [:> numeric-input-wrapper* + {:disabled disabled-position? + :on-change on-pos-x-change + :on-detach on-detach-token + :icon i/character-x + :name :x + :property (tr "workspace.options.x") + :applied-tokens applied-tokens + :values values}] + [:> numeric-input-wrapper* + {:disabled disabled-position? + :on-change on-pos-y-change + :on-detach on-detach-token + :icon i/character-y + :name :y + :align :right + :property (tr "workspace.options.y") + :applied-tokens applied-tokens + :values values}]] - [:div {:class (stl/css-case :y-position true - :disabled disabled-position?) - :title (tr "workspace.options.y")} - [:span {:class (stl/css :icon-text)} "Y"] - [:> numeric-input* {:no-validate true - :placeholder (if (= :multiple (:y values)) (tr "settings.multiple") "--") - :disabled disabled-position? - :on-change on-pos-y-change - :class (stl/css :numeric-input) - :value (:y values)}]]]) - (when (or (options :rotation) - (options :radius)) + [:* + [:div {:class (stl/css-case :x-position true + :disabled disabled-position?) + :title (tr "workspace.options.x")} + [:span {:class (stl/css :icon-text)} "X"] + [:> deprecated-input/numeric-input* {:no-validate true + :placeholder (if (= :multiple (:x values)) (tr "settings.multiple") "--") + :on-change on-pos-x-change + :disabled disabled-position? + :class (stl/css :numeric-input) + :value (:x values)}]] + + [:div {:class (stl/css-case :y-position true + :disabled disabled-position?) + :title (tr "workspace.options.y")} + [:span {:class (stl/css :icon-text)} "Y"] + [:> deprecated-input/numeric-input* {:no-validate true + :placeholder (if (= :multiple (:y values)) (tr "settings.multiple") "--") + :disabled disabled-position? + :on-change on-pos-y-change + :class (stl/css :numeric-input) + :value (:y values)}]]])]) + + (when (or (options :rotation) (options :radius)) [:div {:class (stl/css :rotation-radius)} (when (options :rotation) - [:div {:class (stl/css :rotation) - :title (tr "workspace.options.rotation")} - [:span {:class (stl/css :icon)} deprecated-icon/rotation] - [:> numeric-input* - {:no-validate true - :min -359 - :max 359 - :data-wrap true - :placeholder (if (= :multiple (:rotation values)) (tr "settings.multiple") "--") - :on-change on-rotation-change - :class (stl/css :numeric-input) - :value (:rotation values)}]]) + (if token-numeric-inputs + [:> numeric-input-wrapper* + {:on-change on-rotation-change + :on-detach on-detach-token + :icon i/rotation + :min -359 + :max 359 + :name :rotation + :property (tr "workspace.options.rotation") + :applied-tokens applied-tokens + :values values}] + + [:div {:class (stl/css :rotation) + :title (tr "workspace.options.rotation")} + [:span {:class (stl/css :icon)} deprecated-icon/rotation] + [:> deprecated-input/numeric-input* + {:no-validate true + :min -359 + :max 359 + :data-wrap true + :placeholder (if (= :multiple (:rotation values)) (tr "settings.multiple") "--") + :on-change on-rotation-change + :class (stl/css :numeric-input) + :value (:rotation values)}]])) (when (options :radius) [:> border-radius-menu* {:class (stl/css :border-radius) :ids ids :values values + :applied-tokens applied-tokens + :shapes shapes :shape shape}])]) (when (or (options :clip-content) (options :show-in-viewer)) [:div {:class (stl/css :clip-show)} diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.scss index 86d9781c80..96dee5fe7f 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/measures.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { display: grid; @@ -27,12 +27,12 @@ position: relative; grid-column: span 5; display: flex; - height: $s-32; - padding: $s-8; - border-radius: $br-8; + height: deprecated.$s-32; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; .collapsed-icon { - @include flexCenter; + @include deprecated.flexCenter; cursor: pointer; svg { @extend .button-icon-small; @@ -53,7 +53,7 @@ } .select-name { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; justify-content: flex-start; align-items: center; @@ -63,14 +63,14 @@ .custom-select-dropdown { @extend .dropdown-wrapper; - margin-top: $s-2; + margin-top: deprecated.$s-2; max-height: 70vh; - width: $s-252; + width: deprecated.$s-252; .dropdown-element { @extend .dropdown-element-base; .name-wrapper { display: flex; - gap: $s-8; + gap: deprecated.$s-8; flex-grow: 1; .preset-name { color: var(--menu-foreground-color-rest); @@ -81,7 +81,7 @@ } .check-icon { - @include flexCenter; + @include deprecated.flexCenter; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -131,9 +131,9 @@ .y-position, .rotation { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; .icon-text { - padding-top: $s-1; + padding-top: deprecated.$s-1; } &.disabled { @extend .disabled-input; @@ -146,9 +146,9 @@ .lock-size-btn { @extend .button-tertiary; - border-radius: $br-8; - height: $s-32; - width: $s-28; + border-radius: deprecated.$br-8; + height: deprecated.$s-32; + width: deprecated.$s-28; &.selected { @extend .button-icon-selected; } @@ -163,7 +163,7 @@ display: flex; align-items: flex-start; justify-content: flex-start; - gap: $s-4; + gap: deprecated.$s-4; } .clip-content, @@ -177,7 +177,7 @@ @extend .button-tertiary; height: var(--sp-xxxl); width: var(--sp-xxxl); - border-radius: $br-8; + border-radius: deprecated.$br-8; } .selected { @@ -187,3 +187,7 @@ .checkbox-button { @extend .button-icon; } + +.numeric-input-measures { + --dropdown-width: 247px; +} diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs index afc6061ae1..d517dc675b 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs @@ -15,18 +15,12 @@ [app.main.data.workspace :as dw] [app.main.data.workspace.colors :as dc] [app.main.data.workspace.shapes :as dwsh] - [app.main.data.workspace.undo :as dwu] [app.main.store :as st] - [app.main.ui.components.numeric-input :refer [numeric-input*]] - [app.main.ui.components.reorder-handler :refer [reorder-handler*]] - [app.main.ui.components.select :refer [select]] [app.main.ui.components.title-bar :refer [title-bar*]] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.foundations.assets.icon :as i] [app.main.ui.hooks :as h] - [app.main.ui.icons :as deprecated-icon] - [app.main.ui.workspace.sidebar.options.common :refer [advanced-options]] - [app.main.ui.workspace.sidebar.options.rows.color-row :refer [color-row*]] + [app.main.ui.workspace.sidebar.options.rows.shadow-row :refer [shadow-row*]] [app.util.i18n :as i18n :refer [tr]] [rumext.v2 :as mf])) @@ -50,193 +44,6 @@ (filterv (fn [[idx _]] (not= idx index))) (mapv second))) -(mf/defc shadow-entry* - [{:keys [index shadow is-open - on-reorder - on-toggle-open - on-detach-color - on-update - on-remove - on-toggle-visibility]}] - (let [shadow-style (:style shadow) - shadow-id (:id shadow) - - hidden? (:hidden shadow) - - on-drop - (mf/use-fn - (mf/deps on-reorder index) - (fn [_ data] - (on-reorder index (:index data)))) - - [dprops dref] - (h/use-sortable - :data-type "penpot/shadow-entry" - :on-drop on-drop - :detect-center? false - :data {:id (dm/str "shadow-" index) - :index index - :name (dm/str "Border row" index)}) - - on-remove - (mf/use-fn (mf/deps index) #(on-remove index)) - - on-update-offset-x - (mf/use-fn - (mf/deps index) - (fn [value] - (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) - (on-update index :offset-x value))) - - on-update-offset-y - (mf/use-fn - (mf/deps index) - (fn [value] - (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) - (on-update index :offset-y value))) - - on-update-spread - (mf/use-fn - (mf/deps index) - (fn [value] - (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) - (on-update index :spread value))) - - on-update-blur - (mf/use-fn - (mf/deps index) - (fn [value] - (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) - (on-update index :blur value))) - - on-update-color - (mf/use-fn - (mf/deps index on-update) - (fn [color] - (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) - (on-update index :color color))) - - on-detach-color - (mf/use-fn (mf/deps index) #(on-detach-color index)) - - on-style-change - (mf/use-fn - (mf/deps index) - (fn [value] - (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) - (on-update index :style (keyword value)))) - - on-toggle-visibility - (mf/use-fn - (mf/deps index) - (fn [] - (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) - (on-toggle-visibility index))) - - on-toggle-open - (mf/use-fn - (mf/deps shadow-id on-toggle-open) - #(on-toggle-open shadow-id)) - - type-options - (mf/with-memo [] - [{:value "drop-shadow" :label (tr "workspace.options.shadow-options.drop-shadow")} - {:value "inner-shadow" :label (tr "workspace.options.shadow-options.inner-shadow")}]) - - on-open-row - (mf/use-fn #(st/emit! (dwu/start-undo-transaction :color-row))) - - on-close-row - (mf/use-fn #(st/emit! (dwu/commit-undo-transaction :color-row)))] - - [:div {:class (stl/css-case :global/shadow-option true - :shadow-element true - :dnd-over-top (= (:over dprops) :top) - :dnd-over-bot (= (:over dprops) :bot))} - (when (some? on-reorder) - [:> reorder-handler* {:ref dref}]) - - [:* - [:div {:class (stl/css :basic-options)} - [:div {:class (stl/css-case :shadow-info true - :hidden hidden?)} - [:button {:class (stl/css-case :more-options true - :selected is-open) - :on-click on-toggle-open} - deprecated-icon/menu] - [:div {:class (stl/css :type-select)} - [:& select - {:class (stl/css :shadow-type-select) - :default-value (d/name shadow-style) - :options type-options - :on-change on-style-change}]]] - [:div {:class (stl/css :actions)} - [:> icon-button* {:variant "ghost" - :aria-label (tr "workspace.options.shadow-options.toggle-shadow") - :on-click on-toggle-visibility - :icon (if hidden? "hide" "shown")}] - [:> icon-button* {:variant "ghost" - :aria-label (tr "workspace.options.shadow-options.remove-shadow") - :on-click on-remove - :icon i/remove}]]] - (when is-open - [:& advanced-options {:class (stl/css :shadow-advanced-options) - :visible? is-open - :on-close on-toggle-open} - - [:div {:class (stl/css :first-row)} - [:div {:class (stl/css :offset-x-input) - :title (tr "workspace.options.shadow-options.offsetx")} - [:span {:class (stl/css :input-label)} - "X"] - [:> numeric-input* {:class (stl/css :numeric-input) - :no-validate true - :placeholder "--" - :on-change on-update-offset-x - :value (:offset-x shadow)}]] - - [:div {:class (stl/css :blur-input) - :title (tr "workspace.options.shadow-options.blur")} - [:span {:class (stl/css :input-label)} - (tr "workspace.options.shadow-options.blur")] - [:> numeric-input* {:class (stl/css :numeric-input) - :no-validate true - :placeholder "--" - :on-change on-update-blur - :min 0 - :value (:blur shadow)}]] - - [:div {:class (stl/css :spread-input) - :title (tr "workspace.options.shadow-options.spread")} - [:span {:class (stl/css :input-label)} - (tr "workspace.options.shadow-options.spread")] - [:> numeric-input* {:class (stl/css :numeric-input) - :no-validate true - :placeholder "--" - :on-change on-update-spread - :value (:spread shadow)}]]] - - [:div {:class (stl/css :second-row)} - [:div {:class (stl/css :offset-y-input) - :title (tr "workspace.options.shadow-options.offsety")} - [:span {:class (stl/css :input-label)} - "Y"] - [:> numeric-input* {:class (stl/css :numeric-input) - :no-validate true - :placeholder "--" - :on-change on-update-offset-y - :value (:offset-y shadow)}]] - - [:> color-row* {:class (stl/css :shadow-color) - :color (:color shadow) - :title (tr "workspace.options.shadow-options.color") - :disable-gradient true - :disable-image true - :on-change on-update-color - :on-detach on-detach-color - :on-open on-open-row - :on-close on-close-row}]]])]])) - (def ^:private xf:add-index (map-indexed (fn [index shadow] (assoc shadow ::index index)))) @@ -274,10 +81,10 @@ handle-reorder (mf/use-fn - (fn [new-index index] + (fn [from-pos to-space-between-pos] (let [ids (mf/ref-val ids-ref)] (st/emit! (dw/trigger-bounding-box-cloaking ids)) - (st/emit! (dc/reorder-shadows ids index new-index))))) + (st/emit! (dc/reorder-shadows ids from-pos to-space-between-pos))))) on-add-shadow (mf/use-fn @@ -320,8 +127,8 @@ (-> shadow (assoc attr value) (ctss/check-shadow))))))))))] - [:div {:class (stl/css :element-set)} - [:div {:class (stl/css :element-title)} + [:div {:class (stl/css :shadow-section)} + [:div {:class (stl/css :shadow-title)} [:> title-bar* {:collapsable has-shadows? :collapsed (not show-content?) :on-collapsed toggle-content @@ -329,7 +136,7 @@ :multiple (tr "workspace.options.shadow-options.title.multiple") :group (tr "workspace.options.shadow-options.title.group") (tr "workspace.options.shadow-options.title")) - :class (stl/css-case :title-spacing-shadow (not has-shadows?))} + :class (stl/css-case :shadow-title-bar (not has-shadows?))} (when-not (= :multiple shadows) [:> icon-button* {:variant "ghost" @@ -341,20 +148,20 @@ (when show-content? (cond (= :multiple shadows) - [:div {:class (stl/css :element-set-content)} - [:div {:class (stl/css :multiple-shadows)} - [:div {:class (stl/css :label)} (tr "settings.multiple")] - [:div {:class (stl/css :actions)} - [:> icon-button* {:variant "ghost" - :aria-label (tr "workspace.options.shadow-options.remove-shadow") - :on-click on-remove-all - :icon i/remove}]]]] + [:div {:class (stl/css :shadow-content)} + [:div {:class (stl/css :shadow-multiple)} + [:div {:class (stl/css :shadow-multiple-label)} + (tr "settings.multiple")] + [:> icon-button* {:variant "ghost" + :aria-label (tr "workspace.options.shadow-options.remove-shadow") + :on-click on-remove-all + :icon i/remove}]]] (some? shadows) - [:& h/sortable-container {} - [:div {:class (stl/css :element-set-content)} + [:> h/sortable-container* {} + [:div {:class (stl/css :shadow-content)} (for [{:keys [::index id] :as shadow} shadows] - [:> shadow-entry* + [:> shadow-row* {:key (dm/str index) :index index :shadow shadow diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/shadow.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/shadow.scss index a96e67b8c4..bc922763ca 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/shadow.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/shadow.scss @@ -4,149 +4,47 @@ // // Copyright (c) KALEIDOS INC -@use "../../../../ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as t; -.element-set { - margin: 0; -} - -.title-spacing-shadow { - margin: 0; - padding-left: $s-2; -} - -.element-set-content { - margin-top: $s-4; - @include flexColumn; -} - -.multiple-shadows { - @include flexRow; -} - -.label { - @extend .mixed-bar; -} - -.actions { - display: grid; - grid-template-columns: subgrid; - grid-column: span 2; -} - -.shadow-element { - @include flexColumn; - position: relative; - - --reorder-left-position: calc(-1 * var(--sp-m) - var(--sp-xxs)); - - &:hover { - --reorder-icon-visibility: visible; - } - - &.dnd-over-top { - --reorder-top-display: block; - } - - &.dnd-over-bot { - --reorder-bottom-display: block; - } -} - -.basic-options { +.shadow-section { display: grid; grid-template-columns: repeat(8, var(--sp-xxxl)); - gap: var(--sp-xs); + column-gap: var(--sp-xs); } -.shadow-info { - grid-column: span 6; +.shadow-title { + grid-column: span 8; +} + +.shadow-title-bar { + padding-inline-start: var(--sp-xxs); +} + +.shadow-content { + grid-column: span 8; + + display: flex; + flex-direction: column; + gap: var(--sp-xs); + margin-block-start: var(--sp-xs); +} + +.shadow-multiple { display: flex; align-items: center; - gap: $s-1; - - .more-options { - @extend .button-secondary; - height: $s-32; - width: $s-28; - border-radius: $br-8 0 0 $br-8; - svg { - @extend .button-icon; - } - &.selected { - background-color: var(--button-radio-background-color-active); - svg { - stroke: var(--button-radio-foreground-color-active); - } - } - } - .type-select { - padding: 0; - border-radius: 0 $br-8 $br-8 0; - flex-grow: 1; - .shadow-type-select { - flex-grow: 1; - border-radius: 0 $br-8 $br-8 0; - } - } - - &.hidden { - .more-options { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); - } - .type-select { - @include hiddenElement; - .shadow-type-select { - @include hiddenElement; - border: $s-1 solid var(--input-border-color-disabled); - } - } - } -} - -.shadow-advanced-options { - display: grid; - grid-template-columns: repeat(8, var(--sp-xxxl)); gap: var(--sp-xs); } -.first-row, -.second-row { - display: grid; - grid-column: 1 / -1; - grid-template-columns: subgrid; -} - -.offset-x-input, -.blur-input, -.spread-input, -.offset-y-input { - @extend .input-element; - @include bodySmallTypography; -} - -.input-label { - width: $sz-48; -} - -.offset-x-input { - grid-column: span 2; -} - -.offset-y-input { - grid-column: span 2; -} - -.blur-input { - grid-column: span 3; -} - -.spread-input { - grid-column: span 3; -} - -.shadow-color { - grid-column: span 6; +.shadow-multiple-label { + @include t.use-typography("body-small"); + display: flex; + align-items: center; + flex-grow: 1; + border-radius: $br-8; + block-size: $sz-32; + padding: var(--sp-s); + background-color: var(--color-background-tertiary); + color: var(--color-foreground-primary); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs index 309416698e..f18ec400dc 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs @@ -12,12 +12,13 @@ [app.common.types.stroke :as cts] [app.main.data.workspace :as udw] [app.main.data.workspace.colors :as dc] + [app.main.data.workspace.tokens.application :as dwta] [app.main.store :as st] [app.main.ui.components.title-bar :refer [title-bar*]] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.foundations.assets.icon :as i] [app.main.ui.hooks :as h] - [app.main.ui.workspace.sidebar.options.rows.stroke-row :refer [stroke-row]] + [app.main.ui.workspace.sidebar.options.rows.stroke-row :refer [stroke-row*]] [app.util.dom :as dom] [app.util.i18n :as i18n :refer [tr]] [cuerdas.core :as str] @@ -37,12 +38,12 @@ :stroke-cap-end]) (mf/defc stroke-menu - {::mf/wrap [#(mf/memo' % (mf/check-props ["ids" "values" "type" "show-caps"]))]} - [{:keys [ids type values show-caps disable-stroke-style] :as props}] + {::mf/wrap [#(mf/memo' % (mf/check-props ["ids" "values" "type" "show-caps" "applied-tokens" "shapes" "objects"]))]} + [{:keys [ids type values show-caps disable-stroke-style applied-tokens shapes objects] :as props}] (let [label (case type :multiple (tr "workspace.options.selection-stroke") :group (tr "workspace.options.group-stroke") - (tr "workspace.options.stroke")) + (tr "labels.stroke")) state* (mf/use-state true) open? (deref state*) @@ -88,10 +89,9 @@ handle-reorder (mf/use-fn (mf/deps ids) - (fn [new-index] - (fn [index] - (st/emit! (udw/trigger-bounding-box-cloaking ids)) - (st/emit! (dc/reorder-strokes ids index new-index))))) + (fn [from-pos to-space-between-pos] + (st/emit! (udw/trigger-bounding-box-cloaking ids)) + (st/emit! (dc/reorder-strokes ids from-pos to-space-between-pos)))) on-stroke-style-change (mf/use-fn @@ -167,15 +167,22 @@ (reset! disable-drag true)) on-blur (fn [_] - (reset! disable-drag false))] + (reset! disable-drag false)) + on-detach-token + (mf/use-fn + (mf/deps ids) + (fn [token attrs] + (st/emit! (dwta/unapply-token {:attributes attrs + :token token + :shape-ids ids}))))] - [:div {:class (stl/css :element-set)} - [:div {:class (stl/css :element-title)} + [:div {:class (stl/css :stroke-section)} + [:div {:class (stl/css :stroke-title)} [:> title-bar* {:collapsable has-strokes? :collapsed (not open?) :on-collapsed toggle-content :title label - :class (stl/css-case :title-spacing-stroke (not has-strokes?))} + :class (stl/css-case :stroke-title-bar (not has-strokes?))} (when (not (= :multiple strokes)) [:> icon-button* {:variant "ghost" :aria-label (tr "workspace.options.stroke.add-stroke") @@ -183,39 +190,43 @@ :icon i/add :data-testid "add-stroke"}])]] (when open? - [:div {:class (stl/css-case :element-content true - :empty-content (not has-strokes?))} + [:div {:class (stl/css-case :stroke-content true + :stroke-content-empty (not has-strokes?))} (cond (= :multiple strokes) - [:div {:class (stl/css :element-set-options-group)} - [:div {:class (stl/css :group-label)} + [:div {:class (stl/css :stroke-multiple)} + [:div {:class (stl/css :stroke-multiple-label)} (tr "settings.multiple")] [:> icon-button* {:variant "ghost" :aria-label (tr "workspace.options.stroke.remove-stroke") :on-click handle-remove-all :icon i/remove}]] (seq strokes) - [:& h/sortable-container {} + [:> h/sortable-container* {} (for [[index value] (d/enumerate (:strokes values []))] - [:& stroke-row {:key (dm/str "stroke-" index) - :stroke value - :title (tr "workspace.options.stroke-color") - :index index - :show-caps show-caps - :on-color-change on-color-change - :on-color-detach on-color-detach - :on-stroke-width-change on-stroke-width-change - :on-stroke-style-change on-stroke-style-change - :on-stroke-alignment-change on-stroke-alignment-change - :open-caps-select open-caps-select - :close-caps-select close-caps-select - :on-stroke-cap-start-change on-stroke-cap-start-change - :on-stroke-cap-end-change on-stroke-cap-end-change - :on-stroke-cap-switch on-stroke-cap-switch - :on-remove on-remove - :on-reorder (handle-reorder index) - :disable-drag disable-drag - :on-focus on-focus - :select-on-focus (not @disable-drag) - :on-blur on-blur - :disable-stroke-style disable-stroke-style}])])])])) + [:> stroke-row* {:key (dm/str "stroke-" index) + :stroke value + :title (tr "workspace.options.stroke-color") + :index index + :shapes shapes + :objects objects + :show-caps show-caps + :on-color-change on-color-change + :on-color-detach on-color-detach + :on-stroke-width-change on-stroke-width-change + :on-stroke-style-change on-stroke-style-change + :on-stroke-alignment-change on-stroke-alignment-change + :open-caps-select open-caps-select + :close-caps-select close-caps-select + :on-stroke-cap-start-change on-stroke-cap-start-change + :on-stroke-cap-end-change on-stroke-cap-end-change + :on-stroke-cap-switch on-stroke-cap-switch + :applied-tokens applied-tokens + :on-detach-token on-detach-token + :on-remove on-remove + :on-reorder handle-reorder + :disable-drag disable-drag + :on-focus on-focus + :select-on-focus (not @disable-drag) + :on-blur on-blur + :disable-stroke-style disable-stroke-style}])])])])) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/stroke.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/stroke.scss index 9e5bd41e17..e85f576b45 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/stroke.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/stroke.scss @@ -4,35 +4,51 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/typography.scss" as t; -.element-set { - margin: 0; +.stroke-section { + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); } -.element-title { - margin: 0; +.stroke-title { + grid-column: span 8; } -.title-spacing-stroke { - padding-left: $s-2; - margin: 0; +.stroke-title-bar { + padding-inline-start: var(--sp-xxs); } -.element-content { +.stroke-content { + grid-column: span 8; + display: flex; flex-direction: column; - gap: $s-12; - margin: $s-4 0 $s-8 0; - &.empty-content { + gap: var(--sp-m); + margin: var(--sp-xs) 0 var(--sp-s) 0; + + &.stroke-content-empty { margin: 0; } } -.element-set-options-group { - @include flexRow; +.stroke-multiple { + display: flex; + align-items: center; + gap: var(--sp-xs); } -.group-label { - @extend .mixed-bar; +.stroke-multiple-label { + @include t.use-typography("body-small"); + display: flex; + align-items: center; + flex-grow: 1; + border-radius: $br-8; + block-size: $sz-32; + padding: var(--sp-s); + background-color: var(--color-background-tertiary); + color: var(--color-foreground-primary); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.scss index 87ce7989e6..50ba70a209 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.scss @@ -4,32 +4,32 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { margin: 0; } .title-spacing-svg-attrs { - padding-left: $s-2; + padding-left: deprecated.$s-2; margin: 0; } .element-set-content { - @include flexColumn; - margin: $s-4 0 0 0; + @include deprecated.flexColumn; + margin: deprecated.$s-4 0 0 0; } .attr-content { display: flex; - gap: $s-4; + gap: deprecated.$s-4; } .attr-name { - @include bodySmallTypography; - @include twoLineTextEllipsis; - width: $s-88; - margin: auto $s-4; + @include deprecated.bodySmallTypography; + @include deprecated.twoLineTextEllipsis; + width: deprecated.$s-88; + margin: auto deprecated.$s-4; margin-right: 0; display: inline-block; color: var(--title-foreground-color); @@ -37,19 +37,19 @@ .attr-input { @extend .input-element; - @include bodySmallTypography; - width: $s-124; + @include deprecated.bodySmallTypography; + width: deprecated.$s-124; } .attr-actions { display: flex; - gap: $s-4; + gap: deprecated.$s-4; } .attr-action-btn { @extend .button-tertiary; - width: $s-28; - height: $s-32; + width: deprecated.$s-28; + height: deprecated.$s-32; svg { @extend .button-icon; } @@ -57,18 +57,18 @@ .attr-nested-content { display: grid; - row-gap: $s-4; + row-gap: deprecated.$s-4; } .attr-title { - @include bodySmallTypography; - font-size: $fs-10; + @include deprecated.bodySmallTypography; + font-size: deprecated.$fs-10; text-transform: uppercase; - margin-inline-start: $s-4; + margin-inline-start: deprecated.$s-4; color: var(--color-foreground-primary); } .attr-row { display: flex; - gap: $s-4; + gap: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.scss index 873287c59b..6090b4a2ed 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/text.scss @@ -4,19 +4,22 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .element-set { - margin: 0; + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + column-gap: var(--sp-xs); } .element-title { - margin: 0; + grid-column: span 8; } .element-content { - @include flexColumn; - margin-top: $s-4; + grid-column: span 8; + @include deprecated.flexColumn; + margin-top: deprecated.$s-4; } .multiple-typography { @@ -24,15 +27,15 @@ } .multiple-text { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; flex-grow: 1; color: var(--input-foreground-color-active); } .multiple-typography-button { @extend .button-tertiary; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; } @@ -40,7 +43,7 @@ .text-align-options { display: flex; - gap: $s-4; + gap: deprecated.$s-4; } .align-options, @@ -48,10 +51,10 @@ .vertical-align-options, .grow-options, .text-decoration-options { - height: $s-32; + height: deprecated.$s-32; } .text-decoration-options { display: flex; - gap: $s-4; + gap: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.scss index 02acda18b3..75be0b665d 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/typography.scss @@ -4,15 +4,17 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; + +$width-settings-bar: deprecated.$s-276; .typography-entry { display: flex; flex-direction: row; align-items: center; - height: $s-32; + height: deprecated.$s-32; width: 100%; - border-radius: $br-8; + border-radius: deprecated.$br-8; background-color: var(--assets-item-background-color); color: var(--assets-item-name-foreground-color-hover); &:hover, @@ -22,7 +24,7 @@ } &.selected { - border: $s-1 solid var(--assets-item-border-color); + border: deprecated.$s-1 solid var(--assets-item-border-color); } .element-set-actions { @@ -31,8 +33,8 @@ .element-set-actions-button, .menu-btn { @extend .button-tertiary; - height: $s-32; - width: $s-28; + height: deprecated.$s-32; + width: deprecated.$s-28; svg { @extend .button-icon; } @@ -52,11 +54,11 @@ .typography-selection-wrapper { display: grid; - grid-template-columns: $s-24 auto 1fr; + grid-template-columns: deprecated.$s-24 auto 1fr; flex: 1; height: 100%; width: 100%; - padding: 0 $s-12; + padding: 0 deprecated.$s-12; &.is-selectable { cursor: pointer; @@ -64,64 +66,62 @@ } .typography-sample { - @include flexCenter; - min-width: $s-24; - height: $s-32; + @include deprecated.flexCenter; + min-width: deprecated.$s-24; + height: deprecated.$s-32; color: var(--assets-item-name-foreground-color); } .typography-name, .typography-font { - @include bodySmallTypography; - @include textEllipsis; - display: flex; - align-items: center; - justify-content: flex-start; - margin-left: $s-6; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; + display: block; + align-self: center; + margin-left: deprecated.$s-6; +} + +.typography-name { color: var(--assets-item-name-foreground-color); } .typography-font { - display: flex; - align-items: center; - justify-content: flex-start; - min-width: 0; color: var(--assets-item-name-foreground-color-rest); } .font-name-wrapper { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; - height: $s-32; + height: deprecated.$s-32; width: 100%; - border-radius: $br-8; - border: $s-1 solid transparent; + border-radius: deprecated.$br-8; + border: deprecated.$s-1 solid transparent; box-sizing: border-box; background-color: var(--assets-item-background-color); - margin-bottom: $s-4; - padding: $s-8 $s-0 $s-8 $s-12; + margin-bottom: deprecated.$s-4; + padding: deprecated.$s-8 deprecated.$s-0 deprecated.$s-8 deprecated.$s-12; .typography-sample-input { - @include flexCenter; - width: $s-24; + @include deprecated.flexCenter; + width: deprecated.$s-24; height: 100%; - font-size: $fs-16; + font-size: deprecated.$fs-16; color: var(--assets-item-name-foreground-color-hover); } .adv-typography-name { - @include removeInputStyle; - font-size: $fs-12; + @include deprecated.removeInputStyle; + font-size: deprecated.$fs-12; color: var(--input-foreground-color-active); flex-grow: 1; - padding-left: $s-6; + padding-left: deprecated.$s-6; margin: 0; } .action-btn { @extend .button-tertiary; - @include flexCenter; - width: $s-28; - height: $s-28; + @include deprecated.flexCenter; + width: deprecated.$s-28; + height: deprecated.$s-28; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -131,7 +131,7 @@ } } &:focus-within { - border: $s-1 solid var(--input-border-color-active); + border: deprecated.$s-1 solid var(--input-border-color-active); .adv-typography-name { color: var(--input-foreground-color-active); } @@ -148,39 +148,39 @@ } .typography-info-wrapper { - @include flexColumn; - margin-bottom: $s-12; + @include deprecated.flexColumn; + margin-bottom: deprecated.$s-12; .typography-name-wrapper { @extend .asset-element; display: grid; - grid-template-columns: $s-24 auto 1fr $s-28; + grid-template-columns: deprecated.$s-24 auto 1fr deprecated.$s-28; flex: 1; - height: $s-32; + height: deprecated.$s-32; width: 100%; - padding: 0 0 0 $s-12; + padding: 0 0 0 deprecated.$s-12; background-color: var(--assets-item-background-color-hover); - margin-bottom: $s-4; + margin-bottom: deprecated.$s-4; .typography-sample { - @include flexCenter; - min-width: $s-24; - font-size: $fs-16; - height: $s-32; + @include deprecated.flexCenter; + min-width: deprecated.$s-24; + font-size: deprecated.$fs-16; + height: deprecated.$s-32; padding: 0; color: var(--assets-item-name-foreground-color-hover); } .typography-name { - @include bodySmallTypography; - @include textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; display: flex; align-items: center; justify-content: flex-start; - margin-left: $s-6; + margin-left: deprecated.$s-6; color: var(--assets-item-name-foreground-color-hover); } .typography-font { - @include bodySmallTypography; - @include textEllipsis; - margin-left: $s-6; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; + margin-left: deprecated.$s-6; display: flex; align-items: center; justify-content: flex-start; @@ -189,8 +189,8 @@ } .action-btn { @extend .button-tertiary; - width: $s-28; - height: $s-32; + width: deprecated.$s-28; + height: deprecated.$s-32; svg { @extend .button-icon; } @@ -203,35 +203,35 @@ .info-row { display: grid; grid-template-columns: 50% 50%; - height: $s-32; - --calcualted-width: calc(var(--width) - $s-48); - padding-left: $s-2; + height: deprecated.$s-32; + --calcualted-width: calc(var(--width) - deprecated.$s-48); + padding-left: deprecated.$s-2; .info-label { - @include bodySmallTypography; - @include textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; width: calc(var(--calcualted-width) / 2); - padding-top: $s-8; + padding-top: deprecated.$s-8; color: var(--assets-item-name-foreground-color); } .info-content { - @include bodySmallTypography; - @include textEllipsis; - padding-top: $s-8; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; + padding-top: deprecated.$s-8; width: calc(var(--calcualted-width) / 2); color: var(--assets-item-name-foreground-color-hover); } } .link-btn { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; @extend .button-secondary; width: 100%; - height: $s-32; - border-radius: $br-8; + height: deprecated.$s-32; + border-radius: deprecated.$br-8; &:hover { background-color: var(--button-secondary-background-color-hover); color: var(--button-secondary-foreground-color-hover); - border: $s-1 solid var(--button-secondary-border-color-hover); + border: deprecated.$s-1 solid var(--button-secondary-border-color-hover); text-decoration: none; svg { stroke: var(--button-secondary-foreground-color-hover); @@ -240,7 +240,7 @@ &:focus { background-color: var(--button-secondary-background-color-focus); color: var(--button-secondary-foreground-color-focus); - border: $s-1 solid var(--button-secondary-border-color-focus); + border: deprecated.$s-1 solid var(--button-secondary-border-color-focus); svg { stroke: var(--button-secondary-foreground-color-focus); } @@ -249,22 +249,30 @@ } .text-options { - @include flexColumn; + @include deprecated.flexColumn; + max-width: calc(var(--width, $width-settings-bar) - deprecated.$s-16); + &:not(.text-options-full-size) { position: relative; } .font-option { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; @extend .asset-element; - padding: $s-8 0 $s-8 $s-8; + padding: deprecated.$s-8 0 deprecated.$s-8 deprecated.$s-8; cursor: pointer; + .name { flex-grow: 1; + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; } .icon { - @include flexCenter; - height: $s-28; - width: $s-28; + @include deprecated.flexCenter; + height: deprecated.$s-28; + width: deprecated.$s-28; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -274,21 +282,21 @@ } .font-modifiers { display: flex; - gap: $s-4; + gap: deprecated.$s-4; .font-size-options { @extend .asset-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; flex-grow: 1; - width: $s-60; + width: deprecated.$s-60; margin: 0; padding: 0; - border: $s-1 solid var(--input-border-color); + border: deprecated.$s-1 solid var(--input-border-color); position: relative; .icon { - @include flexCenter; - height: $s-28; - min-width: $s-28; + @include deprecated.flexCenter; + height: deprecated.$s-28; + min-width: deprecated.$s-28; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -302,16 +310,16 @@ } } .typography-variations { - @include flexRow; + @include deprecated.flexRow; .spacing-options { - @include flexRow; + @include deprecated.flexRow; .line-height, .letter-spacing { @extend .input-element; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; .icon { - @include flexCenter; - width: $s-28; + @include deprecated.flexCenter; + width: deprecated.$s-28; svg { @extend .button-icon-small; } @@ -331,35 +339,35 @@ } .font-size-select { - @include removeInputStyle; - @include bodySmallTypography; - height: $s-32; + @include deprecated.removeInputStyle; + @include deprecated.bodySmallTypography; + height: deprecated.$s-32; height: 100%; width: 100%; margin: 0; - padding: $s-8; + padding: deprecated.$s-8; .numeric-input { @extend .input-base; - @include bodySmallTypography; + @include deprecated.bodySmallTypography; padding: 0; } } .font-selector { - @include flexCenter; + @include deprecated.flexCenter; position: absolute; top: 0; left: 0; right: 0; height: 100%; width: 100%; - z-index: $z-index-4; + z-index: deprecated.$z-index-4; } .show-recent { - border-radius: $br-8 $br-8 0 0; + border-radius: deprecated.$br-8 deprecated.$br-8 0 0; background: var(--dropdown-background-color); - border: $s-1 solid var(--color-background-quaternary); + border: deprecated.$s-1 solid var(--color-background-quaternary); border-block-end: none; } @@ -373,30 +381,30 @@ } .header { display: grid; - row-gap: $s-2; + row-gap: deprecated.$s-2; .title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; color: var(--title-foreground-color); margin: 0; - padding: $s-12; + padding: deprecated.$s-12; } } } .font-wrapper { - padding-bottom: $s-4; + padding-bottom: deprecated.$s-4; cursor: pointer; } .font-item { @extend .asset-element; - margin-bottom: $s-4; - border-radius: $br-8; + margin-bottom: deprecated.$s-4; + border-radius: deprecated.$br-8; display: flex; .icon { - @include flexCenter; - height: $s-28; - width: $s-28; + @include deprecated.flexCenter; + height: deprecated.$s-28; + width: deprecated.$s-28; svg { @extend .button-icon-small; stroke: var(--icon-foreground); @@ -412,8 +420,10 @@ } .label { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; + @include deprecated.textEllipsis; flex-grow: 1; + min-width: 0; } } @@ -421,7 +431,7 @@ height: calc(100vh - 48px); // TODO: ugly hack :( Find a workaround for this. display: grid; grid-template-rows: auto 1fr; - padding: $s-2 $s-12 $s-12 $s-12; + padding: deprecated.$s-2 deprecated.$s-12 deprecated.$s-12 deprecated.$s-12; } .fonts-list { @@ -432,19 +442,19 @@ min-height: 100%; width: 100%; height: 100%; - padding: $s-2; - border-radius: $br-8; + padding: deprecated.$s-2; + border-radius: deprecated.$br-8; background-color: var(--dropdown-background-color); overflow: hidden; &:not(.fonts-list-full-size) { - margin-block-start: $s-2; + margin-block-start: deprecated.$s-2; } } .fonts-list-full-size { border-start-start-radius: 0; border-start-end-radius: 0; - border: $s-1 solid var(--color-background-quaternary); + border: deprecated.$s-1 solid var(--color-background-quaternary); // TODO: this should belong to typography-entry , but atm we don't have a clear // way of accessing whether we are in fullsize mode or not diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.scss index cb5fc755ee..5d77b269d2 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -13,21 +13,21 @@ .modal-dialog { @extend .modal-container-base; - max-width: $s-888; + max-width: deprecated.$s-888; width: 100%; max-height: unset; } .modal-title { color: var(--modal-title-foreground-color); - margin-bottom: $s-32; + margin-bottom: deprecated.$s-32; } .modal-content { display: flex; color: var(--color-foreground-secondary); - padding-block-end: $s-32; - gap: $s-32; + padding-block-end: deprecated.$s-32; + gap: deprecated.$s-32; } .modal-close-btn { @@ -35,14 +35,14 @@ } .rule-list { - margin: $s-32 0; + margin: deprecated.$s-32 0; } .rule-item { display: flex; - gap: $s-16; + gap: deprecated.$s-16; align-items: center; - margin-bottom: $s-16; + margin-bottom: deprecated.$s-16; &:last-child { margin-bottom: 0; @@ -51,7 +51,7 @@ .rule-item-highlight { color: var(--color-foreground-primary); - margin-inline-end: $s-4; + margin-inline-end: deprecated.$s-4; } .rule-item-icon { @@ -59,8 +59,8 @@ align-items: center; justify-content: center; flex-shrink: 0; - width: $s-32; - height: $s-32; + width: deprecated.$s-32; + height: deprecated.$s-32; background: var(--color-background-quaternary); color: var(--color-foreground-secondary); border-radius: 90px; @@ -87,6 +87,6 @@ flex: 0 1 50%; img { - border-radius: $br-8; + border-radius: deprecated.$br-8; } } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/page.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/page.cljs index f68a90f356..740750b0cf 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/page.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/page.cljs @@ -50,6 +50,7 @@ :title (tr "workspace.options.canvas-background") :color color :on-change on-change + :origin :canvas :on-open on-open :on-close on-close}]]])) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/page.scss b/frontend/src/app/main/ui/workspace/sidebar/options/page.scss index da131647f1..d7e4cf8a20 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/page.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/page.scss @@ -4,4 +4,4 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs index b2bd704263..42aad3e1ba 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs @@ -11,27 +11,27 @@ [app.common.data.macros :as dm] [app.common.types.color :as clr] [app.common.types.shape.attrs :refer [default-color]] + [app.common.types.token :as tk] + [app.config :as cfg] [app.main.data.modal :as modal] [app.main.data.workspace.colors :as dwc] [app.main.refs :as refs] [app.main.store :as st] - [app.main.ui.components.color-bullet :as cb] [app.main.ui.components.color-input :refer [color-input*]] [app.main.ui.components.numeric-input :refer [numeric-input*]] [app.main.ui.components.reorder-handler :refer [reorder-handler*]] + [app.main.ui.context :as ctx] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.foundations.assets.icon :as i] + [app.main.ui.ds.tooltip.tooltip :refer [tooltip*]] + [app.main.ui.ds.utilities.swatch :refer [swatch*]] [app.main.ui.formats :as fmt] [app.main.ui.hooks :as h] - [app.main.ui.icons :as deprecated-icon] [app.util.color :as uc] [app.util.dom :as dom] [app.util.i18n :as i18n :refer [tr]] [rumext.v2 :as mf])) -(def ^:private detach-icon - (deprecated-icon/icon-xref :detach (stl/css :detach-icon))) - (defn opacity->string [opacity] (if (= opacity :multiple) @@ -41,39 +41,139 @@ (* 100) (fmt/format-number))))) -(defn remove-multiple - [v] - (if (= v :multiple) nil v)) +(mf/defc color-info-wrapper* + {::mf/private true} + [{:keys [color class handle-click-color children select-on-focus opacity on-focus on-blur on-opacity-change]}] + [:div {:class (stl/css :color-info)} + [:div {:class class} + [:div {:class (stl/css :color-bullet-wrapper)} + [:> swatch* {:background color + :on-click handle-click-color + :size "small"}]] + children] + (when opacity + [:div {:class (stl/css :opacity-element-wrapper)} + [:span {:class (stl/css :icon-text)} "%"] + [:> numeric-input* {:value (-> color :opacity opacity->string) + :class (stl/css :opacity-input) + :placeholder "--" + :select-on-focus select-on-focus + :on-focus on-focus + :on-blur on-blur + :on-change on-opacity-change + :data-testid "opacity-input" + :default 100 + :min 0 + :max 100}]])]) + +(mf/defc color-token-row* + {::mf/private true} + [{:keys [active-tokens color-token color on-swatch-click-token detach-token open-modal-from-token]}] + (let [;; `active-tokens` may be provided as a `delay` (lazy computation). + ;; In that case we must deref it (`@active-tokens`) to force evaluation + ;; and obtain the actual value. If it’s already realized (not a delay), + ;; we just use it directly. + active-tokens (if (delay? active-tokens) + @active-tokens + active-tokens) + + color-tokens (:color active-tokens) + + token (some #(when (= (:name %) color-token) %) color-tokens) + + on-detach-token + (mf/use-fn + (mf/deps detach-token token) + #(detach-token token)) + + has-errors (some? (:errors token)) + token-name (:name token) + resolved (:resolved-value token) + not-active (and (some? active-tokens) (nil? token)) + id (dm/str (:id token) "-name") + swatch-tooltip-content (cond + not-active + (tr "ds.inputs.token-field.no-active-token-option") + has-errors + (tr "color-row.token-color-row.deleted-token") + :else + (tr "workspace.tokens.resolved-value" resolved)) + name-tooltip-content (cond + not-active + (tr "ds.inputs.token-field.no-active-token-option") + has-errors + (tr "color-row.token-color-row.deleted-token") + :else + #(mf/html + [:div + [:span (dm/str (tr "workspace.tokens.token-name") ": ")] + [:span {:class (stl/css :token-name-tooltip)} color-token]]))] + + [:div {:class (stl/css :color-info)} + [:div {:class (stl/css-case :token-color-wrapper true + :token-color-with-errors has-errors + :token-color-not-active not-active)} + [:div {:class (stl/css :color-bullet-wrapper)} + (when (or has-errors not-active) + [:div {:class (stl/css :error-dot)}]) + [:> swatch* {:background color + :tooltip-content swatch-tooltip-content + :on-click on-swatch-click-token + :has-errors (or has-errors not-active) + :size "small"}]] + [:> tooltip* {:content name-tooltip-content + :id id + :class (stl/css :token-tooltip)} + [:div {:class (stl/css :token-name) + :aria-labelledby id} + (or token-name color-token)]] + [:div {:class (stl/css :token-actions)} + [:> icon-button* + {:variant "action" + :aria-label (tr "ds.inputs.token-field.detach-token") + :on-click on-detach-token + :icon i/detach}] + [:> icon-button* + {:variant "action" + :aria-label (tr "ds.inputs.numeric-input.open-token-list-dropdown") + :on-click open-modal-from-token + :icon i/tokens}]]]])) (mf/defc color-row* [{:keys [index color class disable-gradient disable-opacity disable-image disable-picker hidden - on-change on-reorder on-detach on-open on-close on-remove - disable-drag on-focus on-blur select-only select-on-focus]}] - (let [libraries (mf/deref refs/files) + on-change on-reorder on-detach on-open on-close on-remove origin on-detach-token + disable-drag on-focus on-blur select-only select-on-focus on-token-change applied-token]}] + (let [token-color (contains? cfg/flags :token-color) + libraries (mf/deref refs/files) on-change (h/use-ref-callback on-change) + on-token-change (h/use-ref-callback on-token-change) + color-without-hash (mf/use-memo + (mf/deps color) + #(-> color :color clr/remove-hash)) file-id (or (:ref-file color) (:file-id color)) color-id (or (:ref-id color) (:id color)) src-colors (dm/get-in libraries [file-id :data :colors]) color-name (dm/get-in src-colors [color-id :name]) - multiple-colors? (uc/multiple? color) - library-color? (and (or (:id color) (:ref-id color)) color-name (not multiple-colors?)) - gradient-color? (and (not multiple-colors?) + has-multiple-colors (uc/multiple? color) + library-color? (and (or (:id color) (:ref-id color)) color-name (not has-multiple-colors)) + gradient-color? (and (not has-multiple-colors) (:gradient color) (dm/get-in color [:gradient :type])) - image-color? (and (not multiple-colors?) + image-color? (and (not has-multiple-colors) (:image color)) editing-text* (mf/use-state false) - editing-text? (deref editing-text*) + is-editing-text (deref editing-text*) - class (if (some? class) (dm/str class " ") "") + active-tokens* (mf/use-ctx ctx/active-tokens-by-type) - opacity? - (and (not multiple-colors?) - (not library-color?) - (not disable-opacity)) + tokens (mf/with-memo [active-tokens* origin] + (delay + (-> (deref active-tokens*) + (select-keys (get tk/tokens-by-input origin)) + (not-empty)))) on-focus' (mf/use-fn @@ -131,12 +231,12 @@ (st/emit! (dwc/add-recent-color color) (on-change color index))))) - handle-click-color + open-modal (mf/use-fn - (mf/deps disable-gradient disable-opacity disable-image disable-picker on-change on-close on-open) - (fn [color event] + (mf/deps disable-gradient disable-opacity disable-image disable-picker on-change on-close on-open tokens) + (fn [color pos tab] (let [color (cond - multiple-colors? + has-multiple-colors {:color default-color :opacity 1} @@ -145,21 +245,21 @@ :else color) - - cpos (dom/get-client-position event) - x (dm/get-prop cpos :x) - y (dm/get-prop cpos :y) - - props {:x x - :y y + props {:x (:x pos) + :y (:y pos) :disable-gradient disable-gradient :disable-opacity disable-opacity :disable-image disable-image ;; on-change second parameter means if the source is the color-picker :on-change #(on-change % index) + :on-token-change on-token-change :on-close (fn [value opacity id file-id] (when on-close (on-close value opacity id file-id))) + :active-tokens tokens + :color-origin origin + :tab tab + :origin :sidebar :data color}] (when (fn? on-open) @@ -168,6 +268,38 @@ (when-not disable-picker (modal/show! :colorpicker props))))) + handle-click-color + (mf/use-fn + (mf/deps open-modal) + (fn [color event] + (let [cpos (dom/get-client-position event)] + (open-modal color cpos nil)))) + + open-modal-from-token + (mf/use-fn + (mf/deps open-modal color) + (fn [event] + (let [cpos (dom/get-client-position event) + x (:x cpos) + y (:y cpos) + pos {:x (- x 215) + :y y}] + (open-modal color pos :token-color)))) + + on-swatch-click-token + (mf/use-fn + (mf/deps open-modal) + (fn [color event] + (let [cpos (dom/get-client-position event)] + (open-modal color cpos :token-color)))) + + detach-token + (mf/use-fn + (mf/deps on-detach-token) + (fn [token] + (when on-detach-token + (on-detach-token token)))) + on-remove' (mf/use-fn (mf/deps index) @@ -181,8 +313,10 @@ on-drop (mf/use-fn (mf/deps on-reorder index) - (fn [_ data] - (on-reorder index (:index data)))) + (fn [relative-pos data] + (let [from-pos (:index data) + to-space-between-pos (if (= relative-pos :bot) (inc index) index)] + (on-reorder from-pos to-space-between-pos)))) [dprops dref] (if (some? on-reorder) @@ -191,93 +325,98 @@ :on-drop on-drop :disabled disable-drag :detect-center? false - :data {:id (str "color-row-" index) - :index index - :name (str "Color row" index)}) + :data {:index index}) [nil nil]) - row-class (stl/css-case :color-data true :hidden hidden :dnd-over-top (= (:over dprops) :top) :dnd-over-bot (= (:over dprops) :bot))] - (mf/with-effect [color prev-color disable-picker] (when (and (not disable-picker) (not= prev-color color)) (modal/update-props! :colorpicker {:data (parse-color color)}))) [:div {:class [class row-class]} - ;; Drag handler (when (some? on-reorder) [:> reorder-handler* {:ref dref}]) + (cond + (and token-color applied-token) + [:> color-token-row* {:active-tokens tokens + :color-token applied-token + :color (dissoc color :ref-id :ref-file) + :on-swatch-click-token on-swatch-click-token + :detach-token detach-token + :open-modal-from-token open-modal-from-token}] - [:div {:class (stl/css :color-info)} - [:div {:class (stl/css-case :color-name-wrapper true - :no-opacity (or disable-opacity - (not opacity?)) - :library-name-wrapper library-color? - :editing editing-text? - :gradient-name-wrapper gradient-color?)} - [:div {:class (stl/css :color-bullet-wrapper)} - [:& cb/color-bullet {:color (cond-> color - (nil? color-name) (dissoc :ref-id :ref-file)) - :mini true - :on-click handle-click-color}]] - (cond - ;; Rendering a color with ID - library-color? - [:* - [:div {:class (stl/css :color-name) - :title (str color-name)} + library-color? + [:> color-info-wrapper* {:class (stl/css-case :color-name-wrapper true + :library-name-wrapper true) + :handle-click-color handle-click-color + :color color} + [:* + [:div {:class (stl/css :color-name) + :title (str color-name)} + (str color-name)] + [:> icon-button* + {:variant "ghost" + :class (stl/css :detach-btn) + :aria-label (tr "settings.detach") + :on-click detach-value + :icon i/detach}]]] - (str color-name)] - (when on-detach - [:button - {:class (stl/css :detach-btn) - :title (tr "settings.detach") - :on-click detach-value} - detach-icon])] + gradient-color? + [:> color-info-wrapper* {:class (stl/css-case :color-name-wrapper true + :no-opacity disable-opacity + :gradient-name-wrapper true) + :handle-click-color handle-click-color + :color color + :opacity true + :select-on-focus select-on-focus + :on-focus on-focus' + :on-blur on-blur' + :on-opacity-change on-opacity-change} + [:div {:class (stl/css :color-name)} + (uc/gradient-type->string (dm/get-in color [:gradient :type]))]] - ;; Rendering a gradient - gradient-color? - [:div {:class (stl/css :color-name)} - (uc/gradient-type->string (dm/get-in color [:gradient :type]))] + image-color? + [:> color-info-wrapper* {:class (stl/css-case :color-name-wrapper true + :no-opacity disable-opacity) + :handle-click-color handle-click-color + :color color + :opacity true + :select-on-focus select-on-focus + :on-focus on-focus' + :on-blur on-blur' + :on-opacity-change on-opacity-change} + [:div {:class (stl/css :color-name)} + (tr "media.image")]] - ;; Rendering an image - image-color? - [:div {:class (stl/css :color-name)} - (tr "media.image")] + :else + [:> color-info-wrapper* {:class (stl/css-case :color-name-wrapper true + :no-opacity (or disable-opacity + has-multiple-colors) + :editing is-editing-text) + :handle-click-color handle-click-color + :color color + :opacity true + :select-on-focus select-on-focus + :on-focus on-focus' + :on-blur on-blur' + :on-opacity-change on-opacity-change} - ;; Rendering a plain color - :else - [:span {:class (stl/css :color-input-wrapper)} - [:> color-input* {:value (if multiple-colors? - "" - (-> color :color clr/remove-hash)) - :placeholder (tr "settings.multiple") - :data-index index - :class (stl/css :color-input) - :on-focus on-focus' - :on-blur on-blur' - :on-change on-color-change}]])] - - (when opacity? - [:div {:class (stl/css :opacity-element-wrapper)} - [:span {:class (stl/css :icon-text)} "%"] - [:> numeric-input* {:value (-> color :opacity opacity->string) - :class (stl/css :opacity-input) - :placeholder "--" - :select-on-focus select-on-focus - :on-focus on-focus' - :on-blur on-blur' - :on-change on-opacity-change - :data-testid "opacity-input" - :default 100 - :min 0 - :max 100}]])] + [:span {:class (stl/css :color-input-wrapper)} + [:> color-input* {:value (if has-multiple-colors + "" + color-without-hash) + :placeholder (tr "settings.multiple") + :data-index index + :class (stl/css :color-input) + :on-focus on-focus' + :on-blur on-blur' + :on-change on-color-change}]]]) (when (some? on-remove) [:> icon-button* {:variant "ghost" @@ -289,4 +428,3 @@ :aria-label (tr "settings.select-this-color") :on-click handle-select :icon i/move}])])) - diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.scss b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.scss index ff2e897e55..6ecce7425c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/color_row.scss @@ -4,15 +4,18 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/mixins.scss" as *; +@use "ds/_utils.scss" as *; .color-data { - @include flexRow; - + display: flex; + align-items: center; + gap: var(--sp-xs); position: relative; - --reorder-left-position: calc(-1 * var(--sp-m) - var(--sp-xxs)); - &:hover { --reorder-icon-visibility: visible; } @@ -34,156 +37,289 @@ --detach-icon-foreground-color: none; display: grid; - flex: 1; grid-template-columns: 1fr auto; align-items: center; - gap: $s-2; - border-radius: $s-8; - background-color: var(--input-details-color); - height: $s-32; + flex: 1; + gap: var(--sp-xxs); + block-size: $sz-32; + border-radius: $br-8; + background-color: var(--color-background-primary); &:hover { - --detach-icon-foreground-color: var(--input-foreground-color-active); - - .detach-btn, - .select-btn { - background-color: transparent; - } + --detach-icon-foreground-color: var(--color-foreground-primary); } } .color-name-wrapper { - @extend .input-element; - @include bodySmallTypography; + --color-name-wrapper-background-color: var(--color-background-tertiary); + --color-name-wrapper-foreground-color: var(--color-foreground-primary); + --color-name-wrapper-boder-color: var(--color-background-tertiary); + @include t.use-typography("body-small"); + @include textEllipsis; + display: flex; + align-items: center; flex-grow: 1; - width: 100%; - min-width: 0; - border-radius: $br-8 0 0 $br-8; + gap: var(--sp-xs); + block-size: $sz-32; + min-inline-size: 0; + inline-size: 100%; padding: 0; margin-inline-end: 0; - gap: $s-4; + border: $b-1 solid var(--color-name-wrapper-boder-color); + border-radius: $br-8; + background-color: var(--color-name-wrapper-background-color); + color: var(--color-name-wrapper-foreground-color); + border-radius: $br-8 0 0 $br-8; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - input { - padding: 0; - } - .color-bullet-wrapper { - height: $s-28; - padding: 0 $s-2 0 $s-8; - border-radius: $br-8 0 0 $br-8; - background-color: transparent; - display: flex; - align-items: center; - &:hover { - background-color: transparent; - } - } - .color-name { - @include bodySmallTypography; - @include textEllipsis; - padding-inline: $s-6; - border-radius: $br-8; - color: var(--input-foreground-color-active); - } - .detach-btn { - @extend .button-tertiary; - height: $s-28; - width: $s-28; - margin-inline-start: auto; - border-radius: 0 $br-8 $br-8 0; - display: none; - } - .detach-icon { - @extend .button-icon; - stroke: var(--detach-icon-foreground-color); - } - .color-input-wrapper { - @include bodySmallTypography; - display: flex; - align-items: center; - height: $s-28; - padding: 0 $s-0; - width: 100%; - margin: 0; - flex-grow: 1; - background-color: var(--input-background-color); - color: var(--input-foreground-color); - border-radius: $br-0; - } &.no-opacity { border-radius: $br-8; .color-input-wrapper { border-radius: $br-8; } } + &:hover { --detach-icon-foreground-color: var(--input-foreground-color-active); + --color-name-wrapper-background-color: var(--color-background-quaternary); + --color-name-wrapper-boder-color: var(--color-background-quaternary); - background-color: var(--input-background-color-hover); - border: $s-1 solid var(--input-border-color-hover); - .color-bullet-wrapper, - .color-name, - .detach-btn, - .color-input-wrapper { - background-color: var(--input-background-color-hover); - } .detach-btn { - display: flex; + display: grid; } &.editing { - background-color: var(--input-background-color-active); - .color-bullet-wrapper, - .color-name, - .detach-btn, - .color-input-wrapper { - background-color: var(--input-background-color-active); - } + --color-name-wrapper-background-color: var(--color-background-primary); } + &:focus, &:focus-within { - background-color: var(--input-background-color-focus); - border: $s-1 solid var(--input-border-color-focus); + --color-name-wrapper-background-color: var(--color-background-tertiary); + --color-name-wrapper-boder-color: var(--color-accent-primary); } } &:focus, &:focus-within { - background-color: var(--input-background-color-focus); - border: $s-1 solid var(--input-border-color-focus); + --color-name-wrapper-background-color: var(--color-background-tertiary); + --color-name-wrapper-boder-color: var(--color-accent-primary); &:hover { - background-color: var(--input-background-color-hover); - border: $s-1 solid var(--input-border-color-focus); + --color-name-wrapper-background-color: var(--color-background-quaternary); } } &.editing { - background-color: var(--input-background-color-active); + --color-name-wrapper-background-color: var(--color-background-primary); &:hover { - border: $s-1 solid var(--input-border-color-active); + --color-name-wrapper-boder-color: var(--color-accent-primary); } } } +.detach-btn { + display: none; + background: var(--color-name-wrapper-background-color); +} + +.color-input-wrapper { + @include t.use-typography("body-small"); + display: flex; + align-items: center; + flex-grow: 1; + block-size: $sz-28; + inline-size: 100%; + padding: 0; + margin: 0; + background-color: var(--color-name-wrapper-background-color); + color: var(--color-name-wrapper-foreground-color); + border-radius: 0; +} + +.color-name { + @include t.use-typography("body-small"); + @include textEllipsis; + flex-grow: 1; + padding-inline: px2rem(6); + border-radius: $br-8; + color: var(--color-name-wrapper-foreground-color); +} + +.color-bullet-wrapper { + display: flex; + align-items: center; + position: relative; + block-size: $sz-28; + padding: 0 var(--sp-xxs) 0 var(--sp-s); + border-radius: $br-8 0 0 $br-8; + background-color: transparent; + &:hover { + background-color: transparent; + } +} + +.color-input { + @include textEllipsis; + border: none; + background: none; + outline: none; + block-size: $sz-28; + inline-size: 100%; + flex-grow: 1; + margin: var(--sp-xxs) 0; + padding: 0 0 0 px2rem(6); + border-radius: $br-8; + color: var(--input-foreground-color-active); + &[disabled] { + opacity: 0.5; + pointer-events: none; + } +} + .library-name-wrapper { border-radius: $br-8; } .opacity-element-wrapper { - @extend .input-element; - @include bodySmallTypography; - width: $s-60; + --opacity-input-background-color: var(--color-background-tertiary); + --opacity-input-boder-color: var(--color-background-tertiary); + + @include t.use-typography("body-small"); + display: flex; + align-items: center; + block-size: $sz-32; + inline-size: px2rem(60); border-radius: 0 $br-8 $br-8 0; - .opacity-input { - padding: 0; - border-radius: 0 $br-8 $br-8 0; - min-width: $s-28; + border: $b-1 solid var(--opacity-input-boder-color); + background-color: var(--opacity-input-background-color); + + &:hover { + --opacity-input-background-color: var(--color-background-quaternary); + --opacity-input-boder-color: var(--color-background-quaternary); + + .detach-btn { + display: grid; + } + &.editing { + --opacity-input-background-color: var(--color-background-primary); + } + + &:focus, + &:focus-within { + --opacity-input-background-color: var(--color-background-tertiary); + --opacity-input-boder-color: var(--color-accent-primary); + } } - .icon-text { - @include flexCenter; - height: $s-32; - margin-inline-end: $s-4; - margin-block-start: $s-2; + + &:focus, + &:focus-within { + --opacity-input-background-color: var(--color-background-tertiary); + --opacity-input-boder-color: var(--color-accent-primary); + &:hover { + --opacity-input-background-color: var(--color-background-quaternary); + } + } + + &.editing { + --opacity-input-background-color: var(--color-background-primary); + &:hover { + --opacity-input-boder-color: var(--color-accent-primary); + } } } + +.opacity-input { + @include textEllipsis; + block-size: $sz-28; + min-inline-size: $sz-28; + flex-grow: 1; + inline-size: 100%; + padding: 0; + border-radius: 0 $br-8 $br-8 0; + border: none; + background: none; + outline: none; + margin: var(--sp-xxs) 0; + padding: 0 0 0 px2rem(6); + color: var(--color-foreground-primary); + &[disabled] { + opacity: 0.5; + pointer-events: none; + } +} + +.icon-text { + display: flex; + justify-content: center; + align-items: center; + block-size: $sz-32; + margin-inline-end: var(--sp-xs); + margin-block-start: var(--sp-xxs); + color: var(--color-foreground-secondary); +} + +// TOKEN ROW + +.token-color-wrapper { + --token-color-wrapper-background-color: var(--color-background-tertiary); + --token-color-wrapper-foreground-color: var(--color-token-foreground); + --token-color-wrapper-border-color: var(--color-token-border); + --token-actions-display: none; + display: grid; + grid-template-columns: auto 1fr auto; + gap: var(--sp-xs); + block-size: $sz-32; + min-inline-size: 0; + inline-size: 100%; + padding: 0; + margin-inline-end: 0; + background: var(--token-color-wrapper-background-color); + border: $b-1 solid var(--token-color-wrapper-border-color); + border-radius: $br-8; + &:hover { + --token-color-wrapper-background-color: var(--color-token-background); + --token-color-wrapper-foreground-color: var(--color-foreground-primary); + --token-color-wrapper-border-color: var(--color-token-accent); + --token-actions-display: flex; + } +} + +.token-color-with-errors, +.token-color-not-active { + --token-color-wrapper-background-color: var(--color-background-primary); + --token-color-wrapper-foreground-color: var(--color-foreground-secondary); + --token-color-wrapper-border-color: var(--color-token-border); + &:hover { + --token-color-wrapper-background-color: var(--color-background-primary); + --token-color-wrapper-foreground-color: var(--color-foreground-secondary); + --token-color-wrapper-border-color: var(--color-token-background); + --token-actions-display: flex; + } +} + +.token-name { + @include t.use-typography("body-small"); + @include textEllipsis; + color: var(--token-color-wrapper-foreground-color); + block-size: $sz-32; + display: flex; + align-items: center; +} + +.token-name-tooltip { + color: var(--color-foreground-primary); +} + +.token-actions { + display: var(--token-actions-display); + justify-self: flex-end; + align-items: center; +} + +.error-dot { + inline-size: px2rem(4); + block-size: px2rem(4); + border-radius: 50%; + background-color: var(--color-foreground-error); + margin-inline-start: var(--sp-xs); + position: absolute; + inset-inline-end: px2rem(1); + inset-block-start: px2rem(5); +} diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/shadow_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/shadow_row.cljs new file mode 100644 index 0000000000..e361615511 --- /dev/null +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/shadow_row.cljs @@ -0,0 +1,210 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC + +(ns app.main.ui.workspace.sidebar.options.rows.shadow-row + (:require-macros [app.main.style :as stl]) + (:require + [app.common.data :as d] + [app.main.data.workspace :as dw] + [app.main.data.workspace.undo :as dwu] + [app.main.store :as st] + [app.main.ui.components.numeric-input :refer [numeric-input*]] + [app.main.ui.components.reorder-handler :refer [reorder-handler*]] + [app.main.ui.components.select :refer [select]] + [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] + [app.main.ui.ds.foundations.assets.icon :as i] + [app.main.ui.hooks :as h] + [app.main.ui.workspace.sidebar.options.common :refer [advanced-options*]] + [app.main.ui.workspace.sidebar.options.rows.color-row :refer [color-row*]] + [app.util.i18n :as i18n :refer [tr]] + [rumext.v2 :as mf])) + +(mf/defc shadow-row* + [{:keys [index shadow is-open + on-reorder + on-toggle-open + on-detach-color + on-update + on-remove + on-toggle-visibility]}] + (let [shadow-style (:style shadow) + shadow-id (:id shadow) + + hidden? (:hidden shadow) + + on-drop + (mf/use-fn + (mf/deps on-reorder index) + (fn [relative-pos data] + (let [from-pos (:index data) + to-space-between-pos (if (= relative-pos :bot) (inc index) index)] + (on-reorder from-pos to-space-between-pos)))) + + [dprops dref] + (h/use-sortable + :data-type "penpot/shadow-entry" + :on-drop on-drop + :detect-center? false + :data {:index index}) + + on-remove + (mf/use-fn (mf/deps index) #(on-remove index)) + + on-update-offset-x + (mf/use-fn + (mf/deps index) + (fn [value] + (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) + (on-update index :offset-x value))) + + on-update-offset-y + (mf/use-fn + (mf/deps index) + (fn [value] + (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) + (on-update index :offset-y value))) + + on-update-spread + (mf/use-fn + (mf/deps index) + (fn [value] + (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) + (on-update index :spread value))) + + on-update-blur + (mf/use-fn + (mf/deps index) + (fn [value] + (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) + (on-update index :blur value))) + + on-update-color + (mf/use-fn + (mf/deps index on-update) + (fn [color] + (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) + (on-update index :color color))) + + on-detach-color + (mf/use-fn (mf/deps index) #(on-detach-color index)) + + on-style-change + (mf/use-fn + (mf/deps index) + (fn [value] + (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) + (on-update index :style (keyword value)))) + + on-toggle-visibility + (mf/use-fn + (mf/deps index) + (fn [] + (st/emit! (dw/trigger-bounding-box-cloaking [shadow-id])) + (on-toggle-visibility index))) + + on-toggle-open + (mf/use-fn + (mf/deps shadow-id on-toggle-open) + #(on-toggle-open shadow-id)) + + type-options + (mf/with-memo [] + [{:value "drop-shadow" :label (tr "workspace.options.shadow-options.drop-shadow")} + {:value "inner-shadow" :label (tr "workspace.options.shadow-options.inner-shadow")}]) + + on-open-row + (mf/use-fn #(st/emit! (dwu/start-undo-transaction :color-row))) + + on-close-row + (mf/use-fn #(st/emit! (dwu/commit-undo-transaction :color-row)))] + + [:div {:class (stl/css-case :global/shadow-option true + :shadow-element true + :dnd-over-top (= (:over dprops) :top) + :dnd-over-bot (= (:over dprops) :bot))} + (when (some? on-reorder) + [:> reorder-handler* {:ref dref}]) + + [:* + [:div {:class (stl/css :shadow-basic)} + [:div {:class (stl/css :shadow-basic-info)} + [:> icon-button* {:variant "secondary" + :icon i/menu + :class (stl/css-case :shadow-basic-button true + :selected is-open) + :aria-label "open more options" + :disabled hidden? + :on-click on-toggle-open}] + [:& select {:class (stl/css :shadow-basic-select) + :default-value (d/name shadow-style) + :options type-options + :disabled hidden? + :on-change on-style-change}]] + + [:div {:class (stl/css :shadow-basic-actions)} + [:> icon-button* {:variant "ghost" + :aria-label (tr "workspace.options.shadow-options.toggle-shadow") + :on-click on-toggle-visibility + :icon (if hidden? "hide" "shown")}] + [:> icon-button* {:variant "ghost" + :aria-label (tr "workspace.options.shadow-options.remove-shadow") + :on-click on-remove + :icon i/remove}]]] + + (when is-open + [:> advanced-options* {:class (stl/css :shadow-advanced) + :is-visible is-open + :on-close on-toggle-open} + + [:div {:class (stl/css :shadow-advanced-row)} + [:div {:class (stl/css :shadow-advanced-offset-x) + :title (tr "workspace.options.shadow-options.offsetx")} + [:span {:class (stl/css :shadow-advanced-label)} + "X"] + [:> numeric-input* {:no-validate true + :placeholder "--" + :on-change on-update-offset-x + :value (:offset-x shadow)}]] + + [:div {:class (stl/css :shadow-advanced-blur) + :title (tr "workspace.options.shadow-options.blur")} + [:span {:class (stl/css :shadow-advanced-label)} + (tr "workspace.options.shadow-options.blur")] + [:> numeric-input* {:no-validate true + :placeholder "--" + :on-change on-update-blur + :min 0 + :value (:blur shadow)}]] + + [:div {:class (stl/css :shadow-advanced-spread) + :title (tr "workspace.options.shadow-options.spread")} + [:span {:class (stl/css :shadow-advanced-label)} + (tr "workspace.options.shadow-options.spread")] + [:> numeric-input* {:no-validate true + :placeholder "--" + :on-change on-update-spread + :value (:spread shadow)}]]] + + [:div {:class (stl/css :shadow-advanced-row)} + [:div {:class (stl/css :shadow-advanced-offset-y) + :title (tr "workspace.options.shadow-options.offsety")} + [:span {:class (stl/css :shadow-advanced-label)} + "Y"] + [:> numeric-input* {:no-validate true + :placeholder "--" + :on-change on-update-offset-y + :value (:offset-y shadow)}]] + + [:> color-row* {:class (stl/css :shadow-advanced-color) + :color (:color shadow) + :title (tr "workspace.options.shadow-options.color") + :disable-gradient true + :disable-image true + :origin :shadow + :on-change on-update-color + :on-detach on-detach-color + :on-open on-open-row + :on-close on-close-row}]]])]])) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/shadow_row.scss b/frontend/src/app/main/ui/workspace/sidebar/options/rows/shadow_row.scss new file mode 100644 index 0000000000..79c9b5b0f4 --- /dev/null +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/shadow_row.scss @@ -0,0 +1,112 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "ds/_sizes.scss" as *; +@use "ds/typography.scss" as t; +@use "ds/_borders.scss" as *; +@use "ds/_utils.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; + +.shadow-element { + display: flex; + flex-direction: column; + gap: var(--sp-xs); + position: relative; + + &:hover { + --reorder-icon-visibility: visible; + } + + &.dnd-over-top { + --reorder-top-display: block; + } + + &.dnd-over-bot { + --reorder-bottom-display: block; + } +} + +.shadow-basic { + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + gap: var(--sp-xs); +} + +.shadow-basic-info { + grid-column: span 6; + display: flex; + align-items: center; + gap: px2rem(1); +} + +.shadow-basic-button { + border-radius: $br-8 0 0 $br-8; + + &.selected { + --button-bg-color: var(--color-background-quaternary); + --button-fg-color: var(--color-accent-primary); + } + + &:disabled { + border: $b-1 solid var(--color-background-quaternary); + } +} + +.shadow-basic-select { + flex-grow: 1; + border-radius: 0 $br-8 $br-8 0; +} + +.shadow-basic-actions { + display: grid; + grid-template-columns: subgrid; + grid-column: span 2; +} + +.shadow-advanced { + display: grid; + grid-template-columns: repeat(8, var(--sp-xxxl)); + gap: var(--sp-xs); +} + +.shadow-advanced-row { + display: grid; + grid-column: 1 / -1; + grid-template-columns: subgrid; +} + +.shadow-advanced-offset-x, +.shadow-advanced-blur, +.shadow-advanced-spread, +.shadow-advanced-offset-y { + // TODO remove this input by changing the input to DS component + @extend .input-element; + @include t.use-typography("body-small"); + .shadow-advanced-label { + padding-inline-start: var(--sp-s); + inline-size: px2rem(60); + } +} + +.shadow-advanced-offset-x { + grid-column: span 2; +} + +.shadow-advanced-blur { + grid-column: span 3; +} + +.shadow-advanced-spread { + grid-column: span 3; +} + +.shadow-advanced-offset-y { + grid-column: span 2; +} + +.shadow-advanced-color { + grid-column: span 6; +} diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs index 9d084a2cb9..31963877ae 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs @@ -9,17 +9,19 @@ (:require [app.common.data :as d] [app.common.types.color :as ctc] + [app.main.data.workspace.tokens.application :as dwta] + [app.main.store :as st] [app.main.ui.components.numeric-input :refer [numeric-input*]] [app.main.ui.components.reorder-handler :refer [reorder-handler*]] [app.main.ui.components.select :refer [select]] + [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] + [app.main.ui.ds.foundations.assets.icon :refer [icon*] :as i] [app.main.ui.hooks :as h] - [app.main.ui.icons :as deprecated-icon] [app.main.ui.workspace.sidebar.options.rows.color-row :refer [color-row*]] [app.util.i18n :as i18n :refer [tr]] [rumext.v2 :as mf])) -(mf/defc stroke-row - {::mf/wrap-props false} +(mf/defc stroke-row* [{:keys [index stroke title @@ -37,45 +39,54 @@ disable-drag on-focus on-blur + applied-tokens + on-detach-token disable-stroke-style - select-on-focus]}] + select-on-focus + shapes + objects]}] (let [on-drop - (fn [_ data] - (on-reorder (:index data))) + (mf/use-fn + (mf/deps on-reorder index) + (fn [relative-pos data] + (let [from-pos (:index data) + to-space-between-pos (if (= relative-pos :bot) (inc index) index)] + (on-reorder from-pos to-space-between-pos)))) - [dprops dref] (if (some? on-reorder) - (h/use-sortable - :data-type "penpot/stroke-row" - :on-drop on-drop - :disabled @disable-drag - :detect-center? false - :data {:id (str "stroke-row-" index) - :index index - :name (str "Border row" index)}) - [nil nil]) + [dprops dref] + (if (some? on-reorder) + (h/use-sortable + :data-type "penpot/stroke-row" + :on-drop on-drop + :disabled @disable-drag + :detect-center? false + :data {:index index}) + [nil nil]) + + stroke-color-token (:stroke-color applied-tokens) on-color-change-refactor - (mf/use-callback + (mf/use-fn (mf/deps index on-color-change) (fn [color] (on-color-change index color))) on-color-detach - (mf/use-callback + (mf/use-fn (mf/deps index on-color-detach) (fn [color] (on-color-detach index color))) on-remove - (mf/use-callback + (mf/use-fn (mf/deps index on-remove) #(on-remove index)) stroke-width (:stroke-width stroke) on-width-change - (mf/use-callback + (mf/use-fn (mf/deps index on-stroke-width-change) #(on-stroke-width-change index %)) @@ -91,12 +102,35 @@ {:value :outer :label (tr "workspace.options.stroke.outer")}])) on-alignment-change - (mf/use-callback + (mf/use-fn (mf/deps index on-stroke-alignment-change) #(on-stroke-alignment-change index (keyword %))) + on-token-change + (mf/use-fn + (mf/deps shapes objects) + (fn [_ token] + (let [expanded-shapes + (if (= 1 (count shapes)) + (let [shape (first shapes)] + (if (= (:type shape) :group) + (keep objects (:shapes shape)) + [shape])) + + (mapcat (fn [shape] + (if (= (:type shape) :group) + (keep objects (:shapes shape)) + [shape])) + shapes))] + + (st/emit! + (dwta/toggle-token {:token token + :attrs #{:stroke-color} + :shapes expanded-shapes}))))) + stroke-style (or (:stroke-style stroke) :solid) + stroke-style-options (mf/with-memo [stroke-style] (d/concat-vec @@ -108,20 +142,26 @@ {:value :mixed :label (tr "workspace.options.stroke.mixed")}])) on-style-change - (mf/use-callback + (mf/use-fn (mf/deps index on-stroke-style-change) #(on-stroke-style-change index (keyword %))) on-caps-start-change - (mf/use-callback + (mf/use-fn (mf/deps index on-stroke-cap-start-change) #(on-stroke-cap-start-change index (keyword %))) on-caps-end-change - (mf/use-callback + (mf/use-fn (mf/deps index on-stroke-cap-end-change) #(on-stroke-cap-end-change index (keyword %))) + on-detach-token-color + (mf/use-fn + (mf/deps on-detach-token) + (fn [token] + (on-detach-token token #{:stroke-color}))) + stroke-caps-options [{:value nil :label (tr "workspace.options.stroke-cap.none")} :separator @@ -135,7 +175,7 @@ {:value :square :label (tr "workspace.options.stroke-cap.square") :icon :stroke-squared}] on-cap-switch - (mf/use-callback + (mf/use-fn (mf/deps index on-stroke-cap-switch) #(on-stroke-cap-switch index))] @@ -156,58 +196,51 @@ :on-detach on-color-detach :on-remove on-remove :disable-drag disable-drag + :applied-token stroke-color-token + :on-detach-token on-detach-token-color + :on-token-change on-token-change :on-focus on-focus + :origin :stroke-color :select-on-focus select-on-focus :on-blur on-blur}] - ;; Stroke Width, Alignment & Style + ;; Stroke Width, Alignment & Style [:div {:class (stl/css :stroke-options)} - [:div {:class (stl/css :stroke-width-input-element) + [:div {:class (stl/css :stroke-width-input) :title (tr "workspace.options.stroke-width")} - [:span {:class (stl/css :icon)} - deprecated-icon/stroke-size] - [:> numeric-input* - {:min 0 - :className (stl/css :stroke-width-input) - :value stroke-width - :placeholder (tr "settings.multiple") - :on-change on-width-change - :on-focus on-focus - :select-on-focus select-on-focus - :on-blur on-blur}]] + [:> icon* {:icon-id i/stroke-size + :size "s"}] + [:> numeric-input* {:value stroke-width + :min 0 + :placeholder (tr "settings.multiple") + :on-change on-width-change + :on-focus on-focus + :select-on-focus select-on-focus + :on-blur on-blur}]] - [:div {:class (stl/css :select-wrapper :stroke-alignment-select) + [:div {:class (stl/css :stroke-alignment-select) :data-testid "stroke.alignment"} - [:& select - {:default-value stroke-alignment - :options stroke-alignment-options - :on-change on-alignment-change}]] + [:& select {:default-value stroke-alignment + :options stroke-alignment-options + :on-change on-alignment-change}]] (when-not disable-stroke-style - [:div {:class (stl/css :select-wrapper :stroke-style-select) + [:div {:class (stl/css :stroke-style-select) :data-testid "stroke.style"} - [:& select - {:default-value stroke-style - :options stroke-style-options - :on-change on-style-change}]])] + [:& select {:default-value stroke-style + :options stroke-style-options + :on-change on-style-change}]])] ;; Stroke Caps (when show-caps [:div {:class (stl/css :stroke-caps-options)} - [:div {:class (stl/css :cap-select)} - [:& select - {:default-value (:stroke-cap-start stroke) - :dropdown-class (stl/css :stroke-cap-dropdown-start) - :options stroke-caps-options - :on-change on-caps-start-change}]] - - [:button {:class (stl/css :swap-caps-btn) - :on-click on-cap-switch} - deprecated-icon/switch] - - [:div {:class (stl/css :cap-select)} - [:& select - {:default-value (:stroke-cap-end stroke) - :dropdown-class (stl/css :stroke-cap-dropdown) - :options stroke-caps-options - :on-change on-caps-end-change}]]])])) + [:& select {:default-value (:stroke-cap-start stroke) + :options stroke-caps-options + :on-change on-caps-start-change}] + [:> icon-button* {:variant "secondary" + :aria-label (tr "labels.switch") + :on-click on-cap-switch + :icon i/switch}] + [:& select {:default-value (:stroke-cap-end stroke) + :options stroke-caps-options + :on-change on-caps-end-change}]])])) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.scss b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.scss index fc2579a70e..1d2fe1198a 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/rows/stroke_row.scss @@ -4,10 +4,13 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "refactor/common-refactor.scss" as deprecated; .stroke-data { - @include flexColumn; + display: flex; + flex-direction: column; + gap: var(--sp-xs); position: relative; @@ -31,46 +34,28 @@ align-items: center; grid-template-columns: repeat(8, var(--sp-xxxl)); gap: var(--sp-xs); - - .stroke-width-input-element { - @extend .input-element; - @include bodySmallTypography; - grid-column: span 2; - } - - .stroke-alignment-select { - grid-column: span 3; - } - - .stroke-style-select { - grid-column: span 3; - } } + +.stroke-width-input { + grid-column: span 2; + + // TODO replace with numeric-input* from DS + @extend .input-element; + + @include t.use-typography("body-small"); + padding-inline-start: var(--sp-xs); +} + +.stroke-alignment-select { + grid-column: span 3; +} + +.stroke-style-select { + grid-column: span 3; +} + .stroke-caps-options { display: grid; - --input-width: calc(var(--sp-xxxl) * 3.5 + 3 * var(--sp-xs) - var(--sp-xs) / 2); - grid-template-columns: var(--input-width) var(--sp-xxxl) var(--input-width); - gap: var(--sp-xs); -} - -.stroke-cap-dropdown, -.stroke-cap-dropdown-start { - min-width: $s-124; - width: fit-content; - max-width: $s-252; - right: 0; - left: unset; -} - -.stroke-cap-dropdown-start { - left: 0; - right: unset; -} -.swap-caps-btn { - @extend .button-secondary; - height: var(--sp-xxxl); - width: var(--sp-xxxl); - svg { - @extend .button-icon; - } + grid-template-columns: 1fr auto 1fr; + column-gap: var(--sp-xs); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/bool.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/bool.cljs index 56fb1dbdb2..8311104d68 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/bool.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/bool.cljs @@ -29,6 +29,10 @@ ids (mf/with-memo [id] [id]) shapes (mf/with-memo [shape] [shape]) + applied-tokens + (when (seq (get shape :applied-tokens)) + (get shape :applied-tokens)) + measure-values (select-keys shape measure-attrs) @@ -84,6 +88,7 @@ :values layer-values}] [:> measures-menu* {:ids ids + :applied-tokens applied-tokens :type type :values measure-values :shapes shapes}] @@ -116,12 +121,16 @@ [:> fill/fill-menu* {:ids ids :type type - :values shape}] + :values shape + :shapes shapes + :applied-tokens applied-tokens}] [:& stroke-menu {:ids ids :type type :show-caps true - :values stroke-values}] + :values stroke-values + :shapes shapes + :applied-tokens applied-tokens}] [:> shadow-menu* {:ids ids :values (get shape :shadow)}] [:& blur-menu {:ids ids diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/circle.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/circle.cljs index 89e9ad4f8c..b21f0f4c5c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/circle.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/circle.cljs @@ -30,6 +30,9 @@ ids (mf/with-memo [id] [id]) shapes (mf/with-memo [shape] [shape]) + applied-tokens + (get shape :applied-tokens) + measure-values (select-keys shape measure-attrs) @@ -84,6 +87,7 @@ :values layer-values}] [:> measures-menu* {:ids ids + :applied-tokens applied-tokens :type type :values measure-values :shapes shapes}] @@ -116,10 +120,15 @@ [:> fill/fill-menu* {:ids ids :type type - :values shape}] + :values shape + :shapes shapes + :applied-tokens applied-tokens}] + [:& stroke-menu {:ids ids :type type - :values stroke-values}] + :values stroke-values + :shapes shapes + :applied-tokens applied-tokens}] [:> shadow-menu* {:ids ids :values (get shape :shadow)}] [:& blur-menu {:ids ids :values (select-keys shape [:blur])}] diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs index f709b90999..e3103f2642 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs @@ -12,7 +12,7 @@ [app.main.refs :as refs] [app.main.ui.workspace.sidebar.options.menus.blur :refer [blur-menu]] [app.main.ui.workspace.sidebar.options.menus.color-selection :refer [color-selection-menu*]] - [app.main.ui.workspace.sidebar.options.menus.component :refer [component-menu variant-menu*]] + [app.main.ui.workspace.sidebar.options.menus.component :refer [component-menu* component-variant-main*]] [app.main.ui.workspace.sidebar.options.menus.constraints :refer [constraint-attrs constraints-menu]] [app.main.ui.workspace.sidebar.options.menus.exports :refer [exports-menu* exports-attrs]] [app.main.ui.workspace.sidebar.options.menus.fill :as fill] @@ -33,6 +33,9 @@ ids (mf/with-memo [shape-id] [shape-id]) shapes (mf/with-memo [shape] [shape]) + applied-tokens + (get shape :applied-tokens) + stroke-values (select-keys shape stroke-attrs) @@ -99,14 +102,15 @@ :type shape-type :values layer-values}] [:> measures-menu* {:ids ids + :applied-tokens applied-tokens :values measure-values :type shape-type :shapes shapes}] - [:& component-menu {:shapes shapes}] + [:> component-menu* {:shapes shapes}] (when is-variant? - [:> variant-menu* {:shapes shapes}]) + [:> component-variant-main* {:shapes shapes}]) [:& layout-container-menu {:type shape-type @@ -139,11 +143,15 @@ [:> fill/fill-menu* {:ids ids :type shape-type - :values shape}] + :values shape + :shapes shapes + :applied-tokens applied-tokens}] [:& stroke-menu {:ids ids :type shape-type - :values stroke-values}] + :values stroke-values + :shapes shapes + :applied-tokens applied-tokens}] [:> color-selection-menu* {:type shape-type :shapes shapes-with-children :file-id file-id diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/group.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/group.cljs index 4ef159d6d5..e9d29affcc 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/group.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/group.cljs @@ -37,6 +37,9 @@ ids (mf/with-memo [id] [id]) shapes (mf/with-memo [shape] [shape]) + applied-tokens + (get shape :applied-tokens) + objects (mf/with-memo [shapes-with-children] (d/index-by :id shapes-with-children)) @@ -87,7 +90,7 @@ [constraint-ids constraint-values] (get-attrs shapes objects :constraint) - [fill-ids fill-values] + [fill-ids fill-values fill-tokens] (get-attrs shapes objects :fill) [shadow-ids] @@ -96,7 +99,7 @@ [blur-ids blur-values] (get-attrs shapes objects :blur) - [stroke-ids stroke-values] + [stroke-ids stroke-values stroke-tokens] (get-attrs shapes objects :stroke) [text-ids text-values] @@ -111,6 +114,7 @@ :values layer-values}] [:> measures-menu* {:type type :ids measure-ids + :applied-tokens applied-tokens :values measure-values :shapes shapes}] @@ -139,10 +143,21 @@ [:& constraints-menu {:ids constraint-ids :values constraint-values}]) (when-not (empty? fill-ids) - [:> fill/fill-menu* {:type type :ids fill-ids :values fill-values}]) + [:> fill/fill-menu* + {:type type + :ids fill-ids + :values fill-values + :shapes shapes + :objects objects + :applied-tokens fill-tokens}]) (when-not (empty? stroke-ids) - [:& stroke-menu {:type type :ids stroke-ids :values stroke-values}]) + [:& stroke-menu {:type type + :ids stroke-ids + :values stroke-values + :shapes shapes + :objects objects + :applied-tokens stroke-tokens}]) [:> color-selection-menu* {:type type diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/group.scss b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/group.scss index 06669fb047..0ff9097344 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/group.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/group.scss @@ -4,11 +4,11 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .options { width: 100%; display: flex; flex-direction: column; - gap: $s-16; + gap: deprecated.$s-16; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.cljs index b19523e0f7..4c4d72347c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.cljs @@ -17,11 +17,12 @@ [app.common.types.shape.attrs :refer [editable-attrs]] [app.common.types.shape.layout :as ctl] [app.common.types.text :as txt] + [app.common.types.token :as tt] [app.common.weak :as weak] [app.main.refs :as refs] [app.main.ui.workspace.sidebar.options.menus.blur :refer [blur-attrs blur-menu]] [app.main.ui.workspace.sidebar.options.menus.color-selection :refer [color-selection-menu*]] - [app.main.ui.workspace.sidebar.options.menus.component :refer [component-menu]] + [app.main.ui.workspace.sidebar.options.menus.component :refer [component-menu*]] [app.main.ui.workspace.sidebar.options.menus.constraints :refer [constraint-attrs constraints-menu]] [app.main.ui.workspace.sidebar.options.menus.exports :refer [exports-attrs exports-menu*]] [app.main.ui.workspace.sidebar.options.menus.fill :as fill] @@ -211,18 +212,34 @@ (= attr-group :blur) (attrs/get-attrs-multi [v1 v2] attrs blur-eq blur-sel) :else (attrs/get-attrs-multi [v1 v2] attrs))) + merge-attr + (fn [acc applied-tokens t-attr] + "Merges a single token attribute (`t-attr`) into the accumulator map. + - If the attribute is not present, associates it with the new value. + - If the existing value equals the new value, keeps the accumulator unchanged. + - If there is a conflict, sets the value to `:multiple`." + (let [new-val (get applied-tokens t-attr) + existing (get acc t-attr ::not-found)] + (cond + (= existing ::not-found) (assoc acc t-attr new-val) + (= existing new-val) acc + :else (assoc acc t-attr :multiple)))) + + merge-shape-attr + (fn [acc applied-tokens shape-attr] + "Merges all token attributes derived from a single shape attribute + into the accumulator map using `merge-attr`." + (let [token-attrs (tt/shape-attr->token-attrs shape-attr)] + (reduce #(merge-attr %1 applied-tokens %2) acc token-attrs))) + merge-token-values - (fn [acc keys attrs] - (reduce - (fn [accum key] - (let [new-val (get attrs key) - existing (get accum key ::not-found)] - (cond - (= existing ::not-found) (assoc accum key new-val) - (= existing new-val) accum - :else (assoc accum key :multiple)))) - acc - keys)) + (fn [acc shape-attrs applied-tokens] + "Merges token values across all shape attributes. + For each shape attribute, its corresponding token attributes are merged + into the accumulator. If applied tokens are empty, the accumulator is returned unchanged." + (if (seq applied-tokens) + (reduce #(merge-shape-attr %1 applied-tokens %2) acc shape-attrs) + acc)) extract-attrs (fn [[ids values token-acc] {:keys [id type applied-tokens] :as shape}] @@ -263,8 +280,8 @@ :children (let [children (->> (:shapes shape []) (map #(get objects %))) - [new-ids new-values] (get-attrs* children objects attr-group)] - [(d/concat-vec ids new-ids) (merge-attrs values new-values) {}]) + [new-ids new-values tokens] (get-attrs* children objects attr-group)] + [(d/concat-vec ids new-ids) (merge-attrs values new-values) tokens]) [])))] @@ -376,7 +393,7 @@ [constraint-ids constraint-values] (get-attrs shapes objects :constraint) - [fill-ids fill-values] + [fill-ids fill-values fill-tokens] (get-attrs shapes objects :fill) [shadow-ids shadow-values] @@ -385,7 +402,7 @@ [blur-ids blur-values] (get-attrs shapes objects :blur) - [stroke-ids stroke-values] + [stroke-ids stroke-values stroke-tokens] (get-attrs shapes objects :stroke) [exports-ids exports-values] @@ -420,7 +437,7 @@ ;; also don't use the memoized version of get-attrs because it ;; makes no sense because the shapes object are changed on ;; each rerender. - [measure-ids measure-values] + [measure-ids measure-values measure-tokens] (get-attrs* shapes objects :measure)] [:div {:class (stl/css :options)} @@ -434,10 +451,11 @@ {:type type :ids measure-ids :values measure-values + :applied-tokens measure-tokens :shapes shapes}]) (when (some? components) - [:& component-menu {:shapes components}]) + [:> component-menu* {:shapes components}]) [:& layout-container-menu {:type type @@ -462,20 +480,28 @@ [:& ot/text-menu {:type type :ids text-ids :values text-values}]) (when-not (empty? fill-ids) - [:> fill/fill-menu* {:type type :ids fill-ids :values fill-values}]) + [:> fill/fill-menu* {:type type + :ids fill-ids + :values fill-values + :shapes shapes + :objects objects + :applied-tokens fill-tokens}]) (when-not (empty? stroke-ids) [:& stroke-menu {:type type :ids stroke-ids :show-caps show-caps? :values stroke-values - :disable-stroke-style has-text?}]) + :shapes shapes + :objects objects + :disable-stroke-style has-text? + :applied-tokens stroke-tokens}]) (when-not (empty? shapes) [:> color-selection-menu* {:file-id file-id :type type - :shapes shapes + :shapes (vals objects) :libraries libraries}]) (when-not (empty? shadow-ids) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.scss b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.scss index 06669fb047..0ff9097344 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/multiple.scss @@ -4,11 +4,11 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .options { width: 100%; display: flex; flex-direction: column; - gap: $s-16; + gap: deprecated.$s-16; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/path.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/path.cljs index bba37db31a..c1ef859746 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/path.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/path.cljs @@ -30,6 +30,9 @@ ids (mf/with-memo [id] [id]) shapes (mf/with-memo [shape] [shape]) + applied-tokens + (get shape :applied-tokens) + measure-values (select-keys shape measure-attrs) @@ -85,6 +88,7 @@ :values layer-values}] [:> measures-menu* {:ids ids :type type + :applied-tokens applied-tokens :values measure-values :shapes shapes}] @@ -116,12 +120,16 @@ [:> fill/fill-menu* {:ids ids :type type - :values shape}] + :values shape + :shapes shapes + :applied-tokens applied-tokens}] [:& stroke-menu {:ids ids :type type :show-caps true - :values stroke-values}] + :values stroke-values + :shapes shapes + :applied-tokens applied-tokens}] [:> shadow-menu* {:ids ids :values (get shape :shadow)}] [:& blur-menu {:ids ids :values (select-keys shape [:blur])}] diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/rect.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/rect.cljs index da138d37a5..6019e37f7b 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/rect.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/rect.cljs @@ -30,6 +30,9 @@ ids (mf/with-memo [id] [id]) shapes (mf/with-memo [shape] [shape]) + applied-tokens + (get shape :applied-tokens) + measure-values (select-keys shape measure-attrs) @@ -86,6 +89,7 @@ [:> measures-menu* {:ids ids :type type :values measure-values + :applied-tokens applied-tokens :shapes shapes}] [:& layout-container-menu @@ -116,11 +120,15 @@ [:> fill/fill-menu* {:ids ids :type type - :values shape}] + :shapes shapes + :values shape + :applied-tokens applied-tokens}] [:& stroke-menu {:ids ids :type type - :values stroke-values}] + :shapes shapes + :values stroke-values + :applied-tokens applied-tokens}] [:> shadow-menu* {:ids ids :values (get shape :shadow)}] diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/svg_raw.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/svg_raw.cljs index faba956f2b..0b85529c76 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/svg_raw.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/svg_raw.cljs @@ -95,6 +95,9 @@ ids (mf/with-memo [id] [id]) shapes (mf/with-memo [shape] [shape]) + applied-tokens + (get shape :applied-tokens) + {:keys [tag] :as content} (get shape :content) @@ -153,6 +156,7 @@ [:* [:> measures-menu* {:ids ids :type type + :applied-tokens applied-tokens :values measure-values :shapes shapes}] @@ -184,11 +188,15 @@ [:> fill/fill-menu* {:ids ids :type type - :values fill-values}] + :values fill-values + :shapes shapes + :applied-tokens applied-tokens}] [:& stroke-menu {:ids ids :type type - :values stroke-values}] + :values stroke-values + :shapes shapes + :applied-tokens applied-tokens}] [:> shadow-menu* {:ids ids :values (get shape :shadow)}] diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/text.cljs b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/text.cljs index 26b1c88e4e..e267f63ce5 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/shapes/text.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/options/shapes/text.cljs @@ -35,6 +35,9 @@ ids (mf/with-memo [id] [id]) shapes (mf/with-memo [shape] [shape]) + applied-tokens + (get shape :applied-tokens) + measure-values (select-keys shape measure-attrs) @@ -101,12 +104,6 @@ :shape shape :attrs (conj txt/text-fill-attrs :fills)}) - fill-values - (if (not (contains? fill-values :fills)) - ;; Old fill format - {:fills [fill-values]} - fill-values) - text-values (merge (select-keys shape [:grow-type]) @@ -132,6 +129,7 @@ [:> measures-menu* {:ids ids :type type + :applied-tokens applied-tokens :values measure-values :shapes shapes}] @@ -169,12 +167,16 @@ [:> fill/fill-menu* {:ids ids :type type - :values fill-values}] + :values fill-values + :shapes shapes + :applied-tokens applied-tokens}] [:& stroke-menu {:ids ids :type type :values stroke-values - :disable-stroke-style true}] + :shapes shapes + :disable-stroke-style true + :applied-tokens applied-tokens}] (when (= :multiple (:fills fill-values)) [:> color-selection-menu* diff --git a/frontend/src/app/main/ui/workspace/sidebar/shortcuts.scss b/frontend/src/app/main/ui/workspace/sidebar/shortcuts.scss index 1df0af953c..23aef8f116 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/shortcuts.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/shortcuts.scss @@ -4,32 +4,32 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .shortcuts { display: grid; grid-template-rows: auto auto 1fr; // TODO: Fix this once we start implementing the DS. // We should not be doign these hardcoded calc's. - height: calc(100vh - #{$s-60}); + height: calc(100vh - #{deprecated.$s-60}); } .search-field { - margin: $s-16 $s-12 $s-4 $s-12; + margin: deprecated.$s-16 deprecated.$s-12 deprecated.$s-4 deprecated.$s-12; } .shortcuts-header { - @include flexCenter; - @include uppercaseTitleTipography; + @include deprecated.flexCenter; + @include deprecated.uppercaseTitleTipography; position: relative; - height: $s-32; - padding: $s-2 $s-2 $s-2 0; - margin: $s-4 $s-4 0 $s-4; - border-radius: $br-6; + height: deprecated.$s-32; + padding: deprecated.$s-2 deprecated.$s-2 deprecated.$s-2 0; + margin: deprecated.$s-4 deprecated.$s-4 0 deprecated.$s-4; + border-radius: deprecated.$br-6; background-color: var(--panel-title-background-color); .shortcuts-title { - @include flexCenter; + @include deprecated.flexCenter; flex-grow: 1; color: var(--title-foreground-color-hover); } @@ -46,32 +46,32 @@ } .not-found { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--empty-message-foreground-color); - margin: $s-12; + margin: deprecated.$s-12; } .shortcuts-list { display: flex; flex-direction: column; height: 100%; - padding: $s-12; + padding: deprecated.$s-12; overflow-y: auto; - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--title-foreground-color); .section-title, .subsection-title { - @include uppercaseTitleTipography; + @include deprecated.uppercaseTitleTipography; display: flex; align-items: center; margin: 0; - padding: $s-8 0; + padding: deprecated.$s-8 0; cursor: pointer; .subsection-name, .section-name { - padding-left: $s-4; + padding-left: deprecated.$s-4; } &:hover { @@ -81,46 +81,46 @@ .subsection-title { text-transform: none; - padding-left: $s-12; + padding-left: deprecated.$s-12; } .subsection-menu { - margin-bottom: $s-4; + margin-bottom: deprecated.$s-4; } .sub-menu { - margin-bottom: $s-4; + margin-bottom: deprecated.$s-4; .shortcuts-name { display: flex; align-items: center; justify-content: space-between; width: 100%; - min-height: $s-32; - padding: $s-6; - margin-bottom: $s-4; - border-radius: $br-8; + min-height: deprecated.$s-32; + padding: deprecated.$s-6; + margin-bottom: deprecated.$s-4; + border-radius: deprecated.$br-8; background-color: var(--pill-background-color); .command-name { - @include bodySmallTypography; - margin-left: $s-2; + @include deprecated.bodySmallTypography; + margin-left: deprecated.$s-2; color: var(--pill-foreground-color); } .keys { - @include flexCenter; - gap: $s-2; + @include deprecated.flexCenter; + gap: deprecated.$s-2; color: var(--pill-foreground-color); .key { - @include bodySmallTypography; - @include flexCenter; + @include deprecated.bodySmallTypography; + @include deprecated.flexCenter; text-transform: capitalize; - height: $s-20; - padding: $s-2 $s-6; - border-radius: $s-6; + height: deprecated.$s-20; + padding: deprecated.$s-2 deprecated.$s-6; + border-radius: deprecated.$s-6; background-color: var(--menu-shortcut-background-color); } .space { - margin: 0 $s-2; + margin: 0 deprecated.$s-2; } } } diff --git a/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs b/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs index 57d8fa007b..28fe1cee38 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs @@ -113,7 +113,7 @@ :data {:id id :index index :name (:name page)} - :draggable? (not read-only?)) + :draggable? (and (not read-only?) (not editing?))) on-context-menu (mf/use-fn @@ -202,7 +202,7 @@ editing-page-id (mf/deref refs/editing-page-item) current-page-id (mf/use-ctx ctx/current-page-id)] [:ul {:class (stl/css :page-list)} - [:& hooks/sortable-container {} + [:> hooks/sortable-container* {} (for [[index page-id] (d/enumerate pages)] [:& page-item-wrapper {:page-id page-id diff --git a/frontend/src/app/main/ui/workspace/sidebar/sitemap.scss b/frontend/src/app/main/ui/workspace/sidebar/sitemap.scss index 19ae17f79e..4817c90cd9 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/sitemap.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/sitemap.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .sitemap { position: relative; @@ -12,21 +12,21 @@ flex-direction: column; flex: 1; width: 100%; - height: var(--height, $s-200); + height: var(--height, deprecated.$s-200); } .title { - margin-left: $s-2; + margin-left: deprecated.$s-2; color: var(--title-foreground-color-hover); } .resize-area { position: absolute; - bottom: calc(-1 * $s-8); + bottom: calc(-1 * deprecated.$s-8); left: 0; width: 100%; - height: $s-12; - border-top: $s-2 solid var(--resize-area-border-color); + height: deprecated.$s-12; + border-top: deprecated.$s-2 solid var(--resize-area-border-color); background-color: var(--resize-area-background-color); cursor: ns-resize; &:hover { @@ -37,7 +37,7 @@ .tool-window-content { display: flex; flex-direction: column; - height: calc(-38px + var(--height, $s-200)); + height: calc(-38px + var(--height, deprecated.$s-200)); width: var(--width); overflow-x: hidden; overflow-y: overlay; @@ -50,63 +50,63 @@ .pages-list { width: 100%; - max-height: $s-152; - margin-bottom: $s-12; + max-height: deprecated.$s-152; + margin-bottom: deprecated.$s-12; } .page-element { - @include bodySmallTypography; - min-height: $s-32; + @include deprecated.bodySmallTypography; + min-height: deprecated.$s-32; width: 100%; cursor: pointer; &.dnd-over-top { - border-top: $s-1 solid var(--layer-row-foreground-color-drag); + border-top: deprecated.$s-1 solid var(--layer-row-foreground-color-drag); } &.dnd-over-bot { - border-bottom: $s-1 solid var(--layer-row-foreground-color-drag); + border-bottom: deprecated.$s-1 solid var(--layer-row-foreground-color-drag); } .dnd-over > .element-list-body { - border: $s-1 solid var(--layer-row-foreground-color-drag); + border: deprecated.$s-1 solid var(--layer-row-foreground-color-drag); } .element-list-body { display: flex; align-items: center; - height: $s-32; + height: deprecated.$s-32; width: 100%; - padding: 0 $s-12 0 0; + padding: 0 deprecated.$s-12 0 0; transition: none; color: var(--layer-row-foreground-color); .page-name { - @include textEllipsis; + @include deprecated.textEllipsis; flex-grow: 1; - padding-left: $s-2; + padding-left: deprecated.$s-2; } .page-icon { - @include flexCenter; - height: $s-32; - width: $s-24; - padding: 0 $s-4 0 $s-8; + @include deprecated.flexCenter; + height: deprecated.$s-32; + width: deprecated.$s-24; + padding: 0 deprecated.$s-4 0 deprecated.$s-8; svg { @extend .button-icon-small; - height: $s-12; - width: $s-12; + height: deprecated.$s-12; + width: deprecated.$s-12; color: transparent; fill: none; stroke: var(--icon-foreground); } } .page-actions { - height: $s-32; + height: deprecated.$s-32; button { - @include buttonStyle; - @include flexCenter; - width: $s-24; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; + width: deprecated.$s-24; height: 100%; - opacity: $op-0; + opacity: deprecated.$op-0; svg { @extend .button-icon-small; - height: $s-12; - width: $s-12; + height: deprecated.$s-12; + width: deprecated.$s-12; color: transparent; fill: none; stroke: var(--icon-foreground); @@ -114,20 +114,20 @@ } } .element-name { - @include textEllipsis; + @include deprecated.textEllipsis; color: var(--layer-row-foreground-color-focus); } input.element-name { - @include textEllipsis; - @include bodySmallTypography; - @include removeInputStyle; + @include deprecated.textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.removeInputStyle; flex-grow: 1; - height: $s-28; + height: deprecated.$s-28; max-width: calc(var(--parent-size) - (var(--depth) * var(--layer-indentation-size))); - padding-left: $s-6; + padding-left: deprecated.$s-6; margin: 0; - border-radius: $br-8; - border: $s-1 solid var(--input-border-color-focus); + border-radius: deprecated.$br-8; + border: deprecated.$s-1 solid var(--input-border-color-focus); color: var(--layer-row-foreground-color); } } @@ -151,7 +151,8 @@ .element-list-body { color: var(--layer-row-foreground-color-selected); background-color: var(--layer-row-background-color-selected); - box-shadow: $s-16 $s-0 $s-0 $s-0 var(--layer-row-background-color-selected); + box-shadow: deprecated.$s-16 deprecated.$s-0 deprecated.$s-0 deprecated.$s-0 + var(--layer-row-background-color-selected); .page-actions button { svg { stroke: var(--layer-row-foreground-color-selected); @@ -167,9 +168,10 @@ .element-list-body { color: var(--layer-row-foreground-color-hover); background-color: var(--layer-row-background-color-hover); - box-shadow: $s-16 $s-0 $s-0 $s-0 var(--layer-row-background-color-hover); + box-shadow: deprecated.$s-16 deprecated.$s-0 deprecated.$s-0 deprecated.$s-0 + var(--layer-row-background-color-hover); .page-actions button { - opacity: $op-10; + opacity: deprecated.$op-10; svg { stroke: var(--layer-row-foreground-color-hover); } @@ -182,10 +184,10 @@ &:focus { .element-list-body { color: var(--layer-row-foreground-color-focus); - border: $s-1 solid var(--layer-row-border-color-focus); + border: deprecated.$s-1 solid var(--layer-row-border-color-focus); outline: none; .page-actions button { - opacity: $op-10; + opacity: deprecated.$op-10; } } } @@ -193,7 +195,7 @@ .element-list-body { outline: none; .page-actions button { - opacity: $op-10; + opacity: deprecated.$op-10; } } } @@ -202,7 +204,7 @@ .element-list-body { color: var(--layer-row-foreground-color-hidden); background-color: var(--layer-row-background-color-hidden); - opacity: $op-7; + opacity: deprecated.$op-7; .page-actions button { svg { stroke: var(--layer-row-foreground-color-hidden); @@ -216,7 +218,7 @@ } .title-spacing-sitemap { - padding-inline-start: $s-8; - margin-block-start: $s-8; - margin-block-end: $s-4; + padding-inline-start: deprecated.$s-8; + margin-block-start: deprecated.$s-8; + margin-block-end: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/workspace/sidebar/versions.scss b/frontend/src/app/main/ui/workspace/sidebar/versions.scss index 62865de402..b602d07590 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/versions.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/versions.scss @@ -4,11 +4,11 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/typography.scss" as t; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "refactor/common-refactor.scss" as deprecated; .version-toolbox { - padding: $s-8; + padding: deprecated.$s-8; height: 100%; display: grid; overflow: hidden; @@ -20,15 +20,15 @@ color: var(--color-foreground-secondary); display: flex; flex-direction: column; - font-size: $fs-12; - gap: $s-8; - padding: $s-16; + font-size: deprecated.$fs-12; + gap: deprecated.$s-8; + padding: deprecated.$s-16; } .versions-entry-empty-icon { background: var(--color-background-tertiary); border-radius: 50%; - padding: $s-8; + padding: deprecated.$s-8; display: flex; } @@ -36,8 +36,8 @@ font-weight: 600; text-transform: uppercase; color: var(--color-foreground-secondary); - font-size: $fs-12; - padding: $s-16 0 $s-16 $s-16; + font-size: deprecated.$fs-12; + padding: deprecated.$s-16 0 deprecated.$s-16 deprecated.$s-16; justify-content: space-between; width: 100%; display: flex; @@ -53,7 +53,7 @@ .versions-entries { display: flex; flex-direction: column; - gap: $s-6; + gap: deprecated.$s-6; overflow: auto; margin: 0; } @@ -75,8 +75,8 @@ .version-entry { display: flex; - padding: $s-4 $s-4 $s-4 $s-16; - gap: $s-8; + padding: deprecated.$s-4 deprecated.$s-4 deprecated.$s-4 deprecated.$s-16; + gap: deprecated.$s-8; border-radius: 8px; align-items: center; @@ -88,7 +88,7 @@ .version-entry.is-autosave { flex-direction: column; align-items: start; - padding-left: $s-48; + padding-left: deprecated.$s-48; gap: 0; } @@ -98,8 +98,8 @@ .version-entry-avatar { border-radius: 50%; - width: $s-24; - height: $s-24; + width: deprecated.$s-24; + height: deprecated.$s-24; } .version-entry-data { @@ -115,7 +115,7 @@ } .version-entry-name-edit { - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--color-foreground-primary); background: none; margin: 0; @@ -135,15 +135,15 @@ cursor: pointer; visibility: hidden; padding: 0; - height: $s-40; - width: $s-32; + height: deprecated.$s-40; + width: deprecated.$s-32; } .version-options-dropdown { @extend .dropdown-wrapper; position: absolute; width: fit-content; - max-width: $s-200; + max-width: deprecated.$s-200; right: 0; left: unset; top: var(--offset); @@ -155,7 +155,7 @@ .version-entry-snapshots { display: flex; align-items: center; - gap: $s-6; + gap: deprecated.$s-6; color: var(--color-foreground-secondary); background: none; border: 0; @@ -184,7 +184,7 @@ .version-snapshot-list { display: none; - margin-top: $s-8; + margin-top: deprecated.$s-8; flex-direction: column; width: 100%; @@ -205,7 +205,7 @@ } .version-snapshot-entry { - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--color-foreground-secondary); background: none; border: none; diff --git a/frontend/src/app/main/ui/workspace/text_palette.scss b/frontend/src/app/main/ui/workspace/text_palette.scss index fcbea076fa..b8b438eb89 100644 --- a/frontend/src/app/main/ui/workspace/text_palette.scss +++ b/frontend/src/app/main/ui/workspace/text_palette.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .text-palette { height: 100%; @@ -12,13 +12,13 @@ } .left-arrow, .right-arrow { - @include buttonStyle; - @include flexCenter; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; position: relative; height: 100%; - width: $s-24; + width: deprecated.$s-24; padding: 0; - z-index: $z-index-2; + z-index: deprecated.$z-index-2; svg { @extend .button-icon; } @@ -26,10 +26,10 @@ content: ""; position: absolute; bottom: 0; - left: calc(-1 * $s-80); + left: calc(-1 * deprecated.$s-80); height: 100%; - width: $s-80; - z-index: $z-index-1; + width: deprecated.$s-80; + z-index: deprecated.$z-index-1; background-image: linear-gradient( to left, var(--palette-button-shadow-initial) 0%, @@ -53,7 +53,7 @@ } .left-arrow { &::after { - left: $s-24; + left: deprecated.$s-24; background-image: linear-gradient( to right, var(--palette-button-shadow-initial) 0%, @@ -76,48 +76,48 @@ .text-palette-inside { display: flex; - gap: $s-8; + gap: deprecated.$s-8; } .typography-item { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; height: 100%; - width: $s-136; - padding: $s-8; - border-radius: $br-8; + width: deprecated.$s-136; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--palette-text-background-color); &:first-child { - margin-left: $s-8; + margin-left: deprecated.$s-8; } .typography-name { - @include textEllipsis; - height: $s-16; - width: $s-120; + @include deprecated.textEllipsis; + height: deprecated.$s-16; + width: deprecated.$s-120; color: var(--palette-text-color-selected); } .typography-font { - @include textEllipsis; - height: $s-16; - width: $s-120; + @include deprecated.textEllipsis; + height: deprecated.$s-16; + width: deprecated.$s-120; color: var(--palette-text-color); } .typography-data { - @include textEllipsis; - height: $s-16; - width: $s-120; + @include deprecated.textEllipsis; + height: deprecated.$s-16; + width: deprecated.$s-120; color: var(--palette-text-color); } &.mid-item { .typography-name { - height: $s-16; + height: deprecated.$s-16; } .typography-data { display: none; @@ -135,6 +135,6 @@ } .text-palette-empty { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--palette-text-color); } diff --git a/frontend/src/app/main/ui/workspace/text_palette_ctx_menu.scss b/frontend/src/app/main/ui/workspace/text_palette_ctx_menu.scss index 6647385623..fe450d0b1a 100644 --- a/frontend/src/app/main/ui/workspace/text_palette_ctx_menu.scss +++ b/frontend/src/app/main/ui/workspace/text_palette_ctx_menu.scss @@ -4,17 +4,17 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .text-context-menu { position: absolute; left: auto; bottom: var(--height); - max-width: $s-480; - padding: $s-4; - margin: 0 0 $s-4 0; - z-index: $z-index-4; - border-radius: $br-10; + max-width: deprecated.$s-480; + padding: deprecated.$s-4; + margin: 0 0 deprecated.$s-4 0; + z-index: deprecated.$z-index-4; + border-radius: deprecated.$br-10; background-color: var(--context-menu-background-color); .palette-library, @@ -23,33 +23,33 @@ display: flex; justify-content: space-between; width: 100%; - gap: $s-8; - padding: $s-8; - margin-bottom: $s-4; - border-radius: $br-8; + gap: deprecated.$s-8; + padding: deprecated.$s-8; + margin-bottom: deprecated.$s-4; + border-radius: deprecated.$br-8; &:last-child { margin-bottom: 0; } .library-name { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; color: var(--context-menu-foreground-color); display: grid; - grid-template-columns: 1fr $s-24; - max-width: $s-400; + grid-template-columns: 1fr deprecated.$s-24; + max-width: deprecated.$s-400; .lib-name { - @include textEllipsis; - max-width: $s-380; + @include deprecated.textEllipsis; + max-width: deprecated.$s-380; } .lib-num { - margin-left: $s-4; + margin-left: deprecated.$s-4; } } .icon-wrapper { - margin-left: $s-4; - @include flexCenter; + margin-left: deprecated.$s-4; + @include deprecated.flexCenter; svg { - @include flexCenter; + @include deprecated.flexCenter; @extend .button-icon-small; stroke: var(--icon-foreground); } @@ -57,9 +57,9 @@ &.selected, &:hover { .icon-wrapper { - @include flexCenter; + @include deprecated.flexCenter; svg { - @include flexCenter; + @include deprecated.flexCenter; @extend .button-icon-small; stroke: var(--context-menu-foreground-color-selected); } diff --git a/frontend/src/app/main/ui/workspace/tokens/export.scss b/frontend/src/app/main/ui/workspace/tokens/export.scss index 0f0e21f66d..53f9be2209 100644 --- a/frontend/src/app/main/ui/workspace/tokens/export.scss +++ b/frontend/src/app/main/ui/workspace/tokens/export.scss @@ -4,10 +4,10 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/typography.scss" as t; -@use "../../ds/_sizes.scss" as *; -@use "../../ds/_borders.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; diff --git a/frontend/src/app/main/ui/workspace/tokens/export/modal.scss b/frontend/src/app/main/ui/workspace/tokens/export/modal.scss index 9242470261..81d4af36f8 100644 --- a/frontend/src/app/main/ui/workspace/tokens/export/modal.scss +++ b/frontend/src/app/main/ui/workspace/tokens/export/modal.scss @@ -4,10 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/typography.scss" as t; -@use "../../../ds/_sizes.scss" as *; -@use "../../../ds/_borders.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; .export-modal-wrapper { display: flex; @@ -51,7 +50,7 @@ width: 100%; cursor: default; color: var(--color-foreground-secondary); - border: $br-2 solid transparent; + border: $b-2 solid transparent; } .file-icon { @@ -61,7 +60,11 @@ } .file-name { - @include textEllipsis; + display: block; + max-width: 99%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; @include t.use-typography("body-medium"); flex-grow: 1; overflow: hidden; diff --git a/frontend/src/app/main/ui/workspace/tokens/import.scss b/frontend/src/app/main/ui/workspace/tokens/import.scss index 75cfbe34ae..314edf94c8 100644 --- a/frontend/src/app/main/ui/workspace/tokens/import.scss +++ b/frontend/src/app/main/ui/workspace/tokens/import.scss @@ -4,10 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/typography.scss" as t; -@use "../../ds/_borders.scss" as *; -@use "../../ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; diff --git a/frontend/src/app/main/ui/workspace/tokens/import/modal.scss b/frontend/src/app/main/ui/workspace/tokens/import/modal.scss index e1864ba7aa..9d8671d48d 100644 --- a/frontend/src/app/main/ui/workspace/tokens/import/modal.scss +++ b/frontend/src/app/main/ui/workspace/tokens/import/modal.scss @@ -4,10 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/typography.scss" as t; -@use "../../../ds/_borders.scss" as *; -@use "../../../ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; .import-modal-wrapper { display: flex; diff --git a/frontend/src/app/main/ui/workspace/tokens/management.cljs b/frontend/src/app/main/ui/workspace/tokens/management.cljs index ba4fbea79e..21412342cd 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/management.cljs @@ -69,20 +69,20 @@ (some #(ctsl/any-layout-immediate-child? objects %) selected-shapes)) ;; This only checks for the currently explicitly selected set - ;; name, it is ephimeral and can be nil + ;; id, it is ephimeral and can be nil ;; FIXME: this is a repeated deref for the same `:workspace-tokens` state - selected-token-set-name - (mf/deref refs/selected-token-set-name) + selected-token-set-id + (mf/deref refs/selected-token-set-id) selected-token-set - (when selected-token-set-name - (some-> tokens-lib (ctob/get-set selected-token-set-name))) + (when selected-token-set-id + (some-> tokens-lib (ctob/get-set selected-token-set-id))) ;; If we have not selected any set explicitly we just ;; select the first one from the list of sets selected-token-set-tokens - (when selected-token-set - (ctob/get-tokens-map selected-token-set)) + (when selected-token-set-id + (some-> tokens-lib (ctob/get-tokens selected-token-set-id))) tokens (mf/with-memo [active-tokens selected-token-set-tokens] @@ -115,26 +115,26 @@ (mf/with-memo [tokens-by-type] (get-sorted-token-groups tokens-by-type))] - (mf/with-effect [tokens-lib selected-token-set-name] + (mf/with-effect [tokens-lib selected-token-set-id] (when (and tokens-lib - (or (nil? selected-token-set-name) - (and selected-token-set-name - (not (ctob/get-set tokens-lib selected-token-set-name))))) + (or (nil? selected-token-set-id) + (and selected-token-set-id + (not (ctob/get-set tokens-lib selected-token-set-id))))) (let [match (->> (ctob/get-sets tokens-lib) (first))] (when match - (st/emit! (dwtl/set-selected-token-set-name (ctob/get-name match))))))) + (st/emit! (dwtl/set-selected-token-set-id (ctob/get-id match))))))) [:* [:& token-context-menu] [:div {:class (stl/css :sets-header-container)} - [:> text* {:as "span" :typography "headline-small" :class (stl/css :sets-header)} (tr "workspace.tokens.tokens-section-title" selected-token-set-name)] + [:> text* {:as "span" :typography "headline-small" :class (stl/css :sets-header)} (tr "workspace.tokens.tokens-section-title" (ctob/get-name selected-token-set))] [:div {:class (stl/css :sets-header-status) :title (tr "workspace.tokens.inactive-set-description")} - ;; NOTE: when no set in tokens-lib, the selected-token-set-name + ;; NOTE: when no set in tokens-lib, the selected-token-set-id ;; will be `nil`, so for properly hide the inactive message we - ;; check that at least `selected-token-set-name` has a value - (when (and (some? selected-token-set-name) - (not (token-set-active? selected-token-set-name))) + ;; check that at least `selected-token-set-id` has a value + (when (and (some? selected-token-set-id) + (not (token-set-active? (ctob/get-name selected-token-set)))) [:* [:> icon* {:class (stl/css :sets-header-status-icon) :icon-id i/eye-off}] [:> text* {:as "span" :typography "body-small" :class (stl/css :sets-header-status-text)} diff --git a/frontend/src/app/main/ui/workspace/tokens/management.scss b/frontend/src/app/main/ui/workspace/tokens/management.scss index 57e274fb37..135d3bcc76 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management.scss +++ b/frontend/src/app/main/ui/workspace/tokens/management.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/typography.scss" as *; +@use "ds/typography.scss" as *; .sets-header-container { @include use-typography("headline-small"); diff --git a/frontend/src/app/main/ui/workspace/tokens/management/context_menu.cljs b/frontend/src/app/main/ui/workspace/tokens/management/context_menu.cljs index 08c1c77ff0..a16617b0fb 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/context_menu.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/management/context_menu.cljs @@ -12,7 +12,6 @@ [app.common.files.tokens :as cft] [app.common.types.shape.layout :as ctsl] [app.common.types.token :as ctt] - [app.common.types.tokens-lib :as ctob] [app.main.data.modal :as modal] [app.main.data.workspace.shape-layout :as dwsl] [app.main.data.workspace.tokens.application :as dwta] @@ -273,6 +272,7 @@ text-case (partial generic-attribute-actions #{:text-case} "Text Case") text-decoration (partial generic-attribute-actions #{:text-decoration} "Text Decoration") font-weight (partial generic-attribute-actions #{:font-weight} "Font Weight") + typography (partial generic-attribute-actions #{:typography} "Typography") border-radius (partial all-or-separate-actions {:attribute-labels {:r1 "Top Left" :r2 "Top Right" :r4 "Bottom Left" @@ -302,6 +302,7 @@ :text-case text-case :text-decoration text-decoration :font-weight font-weight + :typography typography :dimensions (fn [context-data] (-> (concat (when (seq (sizing-attribute-actions context-data)) [{:title "Sizing" :submenu :sizing}]) @@ -316,7 +317,7 @@ (generic-attribute-actions #{:y} "Y" (assoc context-data :on-update-shape dwta/update-shape-position))) (clean-separators)))})) -(defn default-actions [{:keys [token selected-token-set-name]}] +(defn default-actions [{:keys [token selected-token-set-id]}] (let [{:keys [modal]} (dwta/get-token-properties token)] [{:title (tr "workspace.tokens.edit") :no-selectable true @@ -329,7 +330,7 @@ :position :right :fields fields :action "edit" - :selected-token-set-name selected-token-set-name + :selected-token-set-id selected-token-set-id :token token}))))} {:title (tr "workspace.tokens.duplicate") :no-selectable true @@ -337,7 +338,7 @@ {:title (tr "workspace.tokens.delete") :no-selectable true :action #(st/emit! (dwtl/delete-token - (ctob/prefixed-set-path-string->set-name-string selected-token-set-name) + selected-token-set-id (:id token)))}])) (defn- allowed-shape-attributes [shapes] @@ -471,7 +472,7 @@ token-id (:token-id mdata) token (mf/deref (refs/workspace-token-in-selected-set token-id)) token-type (:type token) - selected-token-set-name (mf/deref refs/selected-token-set-name) + selected-token-set-id (mf/deref refs/selected-token-set-id) selected-shapes (mf/with-memo [selected objects] @@ -486,7 +487,7 @@ [:& menu-tree {:submenu-offset width :token token :errors errors - :selected-token-set-name selected-token-set-name + :selected-token-set-id selected-token-set-id :selected-shapes selected-shapes :is-selected-inside-layout is-selected-inside-layout}]])) diff --git a/frontend/src/app/main/ui/workspace/tokens/management/context_menu.scss b/frontend/src/app/main/ui/workspace/tokens/management/context_menu.scss index edffbae1c9..207166d747 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/context_menu.scss +++ b/frontend/src/app/main/ui/workspace/tokens/management/context_menu.scss @@ -4,12 +4,12 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/typography.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .token-context-menu { position: absolute; - z-index: $z-index-4; + z-index: deprecated.$z-index-4; } .token-context-menu[data-direction="up"] { @@ -22,12 +22,12 @@ .context-list, .token-context-submenu { - @include menuShadow; + @include deprecated.menuShadow; display: grid; - width: $s-240; - padding: $s-4; - border-radius: $br-8; - border: $s-2 solid var(--color-background-quaternary); + width: deprecated.$s-240; + padding: deprecated.$s-4; + border-radius: deprecated.$br-8; + border: deprecated.$s-2 solid var(--color-background-quaternary); background-color: var(--color-background-tertiary); max-height: 100vh; overflow-y: auto; @@ -43,13 +43,13 @@ .token-context-submenu { position: absolute; - padding: $s-4; - margin-left: $s-6; + padding: deprecated.$s-4; + margin-left: deprecated.$s-6; } .separator { - margin: $s-6; - border-block-start: $s-1 solid var(--panel-border-color); + margin: deprecated.$s-6; + border-block-start: deprecated.$s-1 solid var(--panel-border-color); } .context-menu-item { @@ -59,13 +59,13 @@ @include use-typography("body-small"); display: flex; align-items: center; - height: $s-32; + height: deprecated.$s-32; width: 100%; - padding: $s-8; - border-radius: $br-8; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; color: var(--context-menu-item-fg-color); background-color: var(--context-menu-item-bg-color); - border: $s-1 solid var(--context-menu-item-border-color); + border: deprecated.$s-1 solid var(--context-menu-item-border-color); cursor: pointer; &:hover { --context-menu-item-bg-color: var(--color-background-quaternary); @@ -110,10 +110,10 @@ .context-menu-item-hint { position: absolute; background-color: var(--color-background-primary); - border-radius: $br-6; - padding: $s-4; - inset-inline-end: $s-4; - inset-block-start: $s-4; + border-radius: deprecated.$br-6; + padding: deprecated.$s-4; + inset-inline-end: deprecated.$s-4; + inset-block-start: deprecated.$s-4; color: var(--color-foreground-secondary); } @@ -122,8 +122,8 @@ } .item-with-icon-space { - padding-left: $s-20; + padding-left: deprecated.$s-20; } .icon-wrapper { - margin-right: $s-4; + margin-right: deprecated.$s-4; } diff --git a/frontend/src/app/main/ui/workspace/tokens/management/create/form.cljs b/frontend/src/app/main/ui/workspace/tokens/management/create/form.cljs index 3fe6d36560..7069cfd292 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/create/form.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/management/create/form.cljs @@ -12,7 +12,7 @@ [app.common.files.tokens :as cft] [app.common.schema :as sm] [app.common.types.color :as c] - [app.common.types.token :as ctt] + [app.common.types.token :as cto] [app.common.types.tokens-lib :as ctob] [app.main.constants :refer [max-input-length]] [app.main.data.modal :as modal] @@ -25,18 +25,19 @@ [app.main.fonts :as fonts] [app.main.refs :as refs] [app.main.store :as st] + [app.main.ui.components.radio-buttons :refer [radio-button radio-buttons]] [app.main.ui.ds.buttons.button :refer [button*]] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] [app.main.ui.ds.controls.input :refer [input*]] - [app.main.ui.ds.controls.utilities.hint-message :refer [hint-message*]] [app.main.ui.ds.foundations.assets.icon :as i] [app.main.ui.ds.foundations.typography.heading :refer [heading*]] [app.main.ui.ds.notifications.context-notification :refer [context-notification*]] + [app.main.ui.icons :as deprecated-icon] [app.main.ui.workspace.colorpicker :as colorpicker] [app.main.ui.workspace.colorpicker.ramp :refer [ramp-selector*]] [app.main.ui.workspace.sidebar.options.menus.typography :refer [font-selector*]] [app.main.ui.workspace.tokens.management.create.input-token-color-bullet :refer [input-token-color-bullet*]] - [app.main.ui.workspace.tokens.management.create.input-tokens-value :refer [input-tokens-value* + [app.main.ui.workspace.tokens.management.create.input-tokens-value :refer [input-token* token-value-hint*]] [app.util.dom :as dom] [app.util.functions :as uf] @@ -49,41 +50,6 @@ [malli.error :as me] [rumext.v2 :as mf])) -;; Schemas --------------------------------------------------------------------- - -(def valid-token-name-regexp - "Only allow letters and digits for token names. - Also allow one `.` for a namespace separator. - - Caution: This will allow a trailing dot like `token-name.`, - But we will trim that in the `finalize-name`, - to not throw too many errors while the user is editing." - #"(?!\$)([a-zA-Z0-9-$_]+\.?)*") - -(def valid-token-name-schema - (m/-simple-schema - {:type :token/invalid-token-name - :pred #(re-matches valid-token-name-regexp %) - :type-properties {:error/fn #(str (:value %) (tr "workspace.tokens.token-name-validation-error"))}})) - -(defn token-name-schema - "Generate a dynamic schema validation to check if a token path derived from the name already exists at `tokens-tree`." - [{:keys [tokens-tree]}] - (let [path-exists-schema - (m/-simple-schema - {:type :token/name-exists - :pred #(not (cft/token-name-path-exists? % tokens-tree)) - :type-properties {:error/fn #(str "A token already exists at the path: " (:value %))}})] - (m/schema - [:and - [:string {:min 1 :max 255}] - valid-token-name-schema - path-exists-schema]))) - -(def token-description-schema - (m/schema - [:string {:max 2048}])) - ;; Helpers --------------------------------------------------------------------- (defn finalize-name [name] @@ -101,21 +67,67 @@ (defn valid-value? [value] (seq (finalize-value value))) -;; Validation ------------------------------------------------------------------ +;; Schemas --------------------------------------------------------------------- -(defn invalidate-empty-value [token-value] +(def ^:private well-formed-token-name-regexp + "Only allow letters and digits for token names. + Also allow one `.` for a namespace separator. + + Caution: This will allow a trailing dot like `token-name.`, + But we will trim that in the `finalize-name`, + to not throw too many errors while the user is editing." + #"(?!\$)([a-zA-Z0-9-$_]+\.?)*") + +(def ^:private well-formed-token-name-schema + (m/-simple-schema + {:type :token/invalid-token-name + :pred #(re-matches well-formed-token-name-regexp %) + :type-properties {:error/fn #(str (:value %) (tr "workspace.tokens.token-name-validation-error"))}})) + +(defn- token-name-schema + "Generate a dynamic schema validation to check if a token path derived from the name already exists at `tokens-tree`." + [{:keys [tokens-tree]}] + (let [path-exists-schema + (m/-simple-schema + {:type :token/name-exists + :pred #(not (cft/token-name-path-exists? % tokens-tree)) + :type-properties {:error/fn #(tr "workspace.tokens.token-name-duplication-validation-error" (:value %))}})] + (m/schema + [:and + [:string {:min 1 :max 255 :error/fn #(str (:value %) (tr "workspace.tokens.token-name-length-validation-error"))}] + well-formed-token-name-schema + path-exists-schema]))) + +(defn- validate-token-name + [tokens-tree name] + (let [schema (token-name-schema {:tokens-tree tokens-tree}) + validation (m/explain schema (finalize-name name))] + (me/humanize validation))) + +(def ^:private token-description-schema + (m/schema + [:string {:max 2048 :error/fn #(tr "errors.field-max-length" 2048)}])) + +(defn- validate-token-description + [description] + (let [validation (m/explain token-description-schema description)] + (me/humanize validation))) + +;; Value Validation ------------------------------------------------------------- + +(defn check-empty-value [token-value] (when (empty? (str/trim token-value)) (wte/get-error-code :error.token/empty-input))) -(defn invalidate-token-empty-value [token] - (invalidate-empty-value (:value token))) +(defn check-token-empty-value [token] + (check-empty-value (:value token))) -(defn invalidate-self-reference [token-name token-value] - (when (ctob/token-value-self-reference? token-name token-value) +(defn check-self-reference [token-name token-value] + (when (cto/token-value-self-reference? token-name token-value) (wte/get-error-code :error.token/direct-self-reference))) -(defn invalidate-token-self-reference [token] - (invalidate-self-reference (:name token) (:value token))) +(defn check-token-self-reference [token] + (check-self-reference (:name token) (:value token))) (defn validate-resolve-token [token prev-token tokens] @@ -123,7 +135,7 @@ ;; When creating a new token we dont have a name yet or invalid name, ;; but we still want to resolve the value to show in the form. ;; So we use a temporary token name that hopefully doesn't clash with any of the users token names - (not (sm/valid? ctt/token-name-ref (:name token))) (assoc :name "__PENPOT__TOKEN__NAME__PLACEHOLDER__")) + (not (sm/valid? cto/token-name-ref (:name token))) (assoc :name "__PENPOT__TOKEN__NAME__PLACEHOLDER__")) tokens' (cond-> tokens ;; Remove previous token when renaming a token (not= (:name token) (:name prev-token)) @@ -147,7 +159,7 @@ (rx/of token))) (def default-validators - [invalidate-token-empty-value invalidate-token-self-reference]) + [check-token-empty-value check-self-reference]) (defn default-validate-token "Validates a token by confirming a list of `validator` predicates and resolving the token using `tokens` with StyleDictionary. @@ -177,46 +189,58 @@ ;; Resolving token via StyleDictionary (rx/mapcat #(validate-resolve-token % prev-token tokens))))) -(defn invalidate-coll-self-reference +(defn check-coll-self-reference "Invalidate a collection of `token-vals` for a self-refernce against `token-name`.," [token-name token-vals] - (when (some #(ctob/token-value-self-reference? token-name %) token-vals) + (when (some #(cto/token-value-self-reference? token-name %) token-vals) (wte/get-error-code :error.token/direct-self-reference))) -(defn invalidate-font-family-token-self-reference [token] - (invalidate-coll-self-reference (:name token) (:value token))) +(defn check-font-family-token-self-reference [token] + (check-coll-self-reference (:name token) (:value token))) (defn validate-font-family-token [props] (-> props - (update :token-value ctt/split-font-family) + (update :token-value cto/split-font-family) (assoc :validators [(fn [token] (when (empty? (:value token)) (wte/get-error-code :error.token/empty-input))) - invalidate-font-family-token-self-reference]) + check-font-family-token-self-reference]) (default-validate-token))) -(defn invalidate-typography-token-self-reference - "Invalidate token when any of the attributes in token value have a self refernce." +(defn check-typography-token-self-reference + "Check token when any of the attributes in token value have a self-reference." [token] (let [token-name (:name token) token-values (:value token)] (some (fn [[k v]] (when-let [err (case k - :font-family (invalidate-coll-self-reference token-name v) - (invalidate-self-reference token-name v))] + :font-family (check-coll-self-reference token-name v) + (check-self-reference token-name v))] (assoc err :typography-key k))) token-values))) +(defn check-empty-typography-token [token] + (when (empty? (:value token)) + (wte/get-error-code :error.token/empty-input))) + (defn validate-typography-token - [props] - (-> props - (update :token-value - (fn [v] - (-> (or v {}) - (d/update-when :font-family #(if (string? %) (ctt/split-font-family %) %))))) - (assoc :validators [invalidate-typography-token-self-reference]) - (default-validate-token))) + [{:keys [token-value] :as props}] + (cond + ;; Entering form without a value - show no error just resolve nil + (nil? token-value) (rx/of nil) + ;; Validate refrence string + (cto/typography-composite-token-reference? token-value) (default-validate-token props) + ;; Validate composite token + :else + (-> props + (update :token-value + (fn [v] + (-> (or v {}) + (d/update-when :font-family #(if (string? %) (cto/split-font-family %) %))))) + (assoc :validators [check-empty-typography-token + check-typography-token-self-reference]) + (default-validate-token)))) (defn use-debonced-resolve-callback "Resolves a token values using `StyleDictionary`. @@ -247,25 +271,26 @@ (defonce form-token-cache-atom (atom nil)) -;; Component ------------------------------------------------------------------- +;; Form Component -------------------------------------------------------------- (mf/defc form* "Form component to edit or create a token of any token type. -Callback props: -validate-token: Function to validate and resolve an editing token, see `default-validate-token`. -on-value-resolve: Will be called when a token value is resolved - Used to sync external state (like color picker) -on-get-token-value: Custom function to get the input value from the dom - (As there might be multiple inputs passed for `custom-input-token-value`) - Can also be used to manipulate the value (E.g.: Auto-prepending # for hex colors) + Callback props: + validate-token: Function to validate and resolve an editing token, see `default-validate-token`. + on-value-resolve: Will be called when a token value is resolved + Used to sync external state (like color picker) + on-get-token-value: Custom function to get the input value from the dom + (As there might be multiple inputs passed for `custom-input-token-value`) + Can also be used to manipulate the value (E.g.: Auto-prepending # for hex colors) -Custom component props: -custom-input-token-value: Custom component for editing/displaying the token value -custom-input-token-value-props: Custom props passed to the custom-input-token-value merged with the default props" - [{:keys [token + Custom component props: + custom-input-token-value: Custom component for editing/displaying the token value + custom-input-token-value-props: Custom props passed to the custom-input-token-value merged with the default props" + [{:keys [is-create + token token-type - selected-token-set-name + selected-token-set-id action input-value-placeholder @@ -278,8 +303,7 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va custom-input-token-value custom-input-token-value-props] :or {validate-token default-validate-token}}] - (let [create? (not (instance? ctob/Token token)) - token (or token {:type token-type}) + (let [token (or token {:type token-type}) token-properties (dwta/get-token-properties token) tokens-in-selected-set (mf/deref refs/workspace-all-tokens-in-selected-set) @@ -292,10 +316,10 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va ;; Style dictionary resolver needs font families to be an array of strings (= :font-family (or (:type token) token-type)) - (update-in [(:name token) :value] ctt/split-font-family) + (update-in [(:name token) :value] cto/split-font-family) (= :typography (or (:type token) token-type)) - (d/update-in-when [(:name token) :font-family :value] ctt/split-font-family)) + (d/update-in-when [(:name token) :font-family :value] cto/split-font-family)) resolved-tokens (sd/use-resolved-tokens active-theme-tokens {:cache-atom form-token-cache-atom :interactive? true}) @@ -316,33 +340,26 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va warning-name-change? (deref warning-name-change*) token-name-ref (mf/use-var (:name token)) name-ref (mf/use-ref nil) - name-errors (mf/use-state nil) - - validate-name - (mf/use-fn - (mf/deps tokens-tree-in-selected-set) - (fn [value] - (let [schema (token-name-schema {:token token - :tokens-tree tokens-tree-in-selected-set})] - (m/explain schema (finalize-name value))))) + name-errors* (mf/use-state nil) + name-errors (deref name-errors*) on-blur-name (mf/use-fn - (mf/deps touched-name? warning-name-change?) + (mf/deps touched-name? warning-name-change? tokens-tree-in-selected-set) (fn [e] (let [value (dom/get-target-val e) - errors (validate-name value)] + errors (validate-token-name tokens-tree-in-selected-set value)] (when touched-name? (reset! warning-name-change* true)) - (reset! name-errors errors)))) + (reset! name-errors* errors)))) on-update-name-debounced (mf/use-fn - (mf/deps touched-name? validate-name) + (mf/deps touched-name? tokens-tree-in-selected-set) (uf/debounce (fn [token-name] - (let [errors (validate-name token-name)] + (let [errors (validate-token-name tokens-tree-in-selected-set token-name)] (when touched-name? - (reset! name-errors errors)))) + (reset! name-errors* errors)))) 300)) on-update-name @@ -356,7 +373,7 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va (on-update-name-debounced token-name)))) valid-name-field? (and - (not @name-errors) + (not name-errors) (valid-name? @token-name-ref)) ;; Value @@ -364,7 +381,12 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va value-ref (mf/use-ref (:value token)) token-resolve-result* (mf/use-state (get resolved-tokens (cft/token-identifier token))) - token-resolve-result (deref token-resolve-result*) + token-resolve-result (deref token-resolve-result*) + + clear-resolve-value + (mf/use-fn + (fn [] + (reset! token-resolve-result* nil))) set-resolve-value (mf/use-fn @@ -400,7 +422,6 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va (mf/use-fn (mf/deps on-update-value-debounced) (fn [next-value] - (dom/set-value! (mf/ref-val value-input-ref) next-value) (mf/set-ref-val! value-ref next-value) (on-update-value-debounced next-value))) @@ -412,19 +433,20 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va description-errors* (mf/use-state nil) description-errors (deref description-errors*) - validate-descripion (mf/use-fn #(m/explain token-description-schema %)) - on-update-description-debounced (mf/use-fn - (uf/debounce (fn [e] - (let [value (dom/get-target-val e) - errors (validate-descripion value)] - (reset! description-errors* errors))))) + on-update-description-debounced + (mf/use-fn + (uf/debounce (fn [e] + (let [value (dom/get-target-val e) + errors (validate-token-description value)] + (reset! description-errors* errors))))) + on-update-description (mf/use-fn (mf/deps on-update-description-debounced) (fn [e] (reset! description-ref (dom/get-target-val e)) (on-update-description-debounced e))) - valid-description-field? (not description-errors) + valid-description-field? (empty? description-errors) ;; Form disabled? (or (not valid-name-field?) @@ -433,7 +455,7 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va on-submit (mf/use-fn - (mf/deps create? validate-name validate-descripion token active-theme-tokens validate-token) + (mf/deps is-create tokens-tree-in-selected-set token active-theme-tokens validate-token) (fn [e] (dom/prevent-default e) ;; We have to re-validate the current form values before submitting @@ -442,13 +464,13 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va ;; and press enter before the next validations could return. (let [final-name (finalize-name @token-name-ref) valid-name? (try - (not (:errors (validate-name final-name))) + (empty? (:errors (validate-token-name tokens-tree-in-selected-set final-name))) (catch js/Error _ nil)) value (mf/ref-val value-ref) final-description @description-ref valid-description? (if final-description (try - (not (:errors (validate-descripion final-description))) + (empty? (:errors (validate-token-description final-description))) (catch js/Error _ nil)) true)] (when (and valid-name? valid-description?) @@ -460,7 +482,7 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va (rx/subs! (fn [valid-token] (st/emit! - (if create? + (if is-create (dwtl/create-token {:name final-name :type token-type :value (:value valid-token) @@ -475,13 +497,11 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va on-delete-token (mf/use-fn - (mf/deps selected-token-set-name) + (mf/deps selected-token-set-id) (fn [e] (dom/prevent-default e) (modal/hide!) - (st/emit! (dwtl/delete-token - (ctob/prefixed-set-path-string->set-name-string selected-token-set-name) - (:id token))))) + (st/emit! (dwtl/delete-token selected-token-set-id (:id token))))) on-cancel (mf/use-fn @@ -518,9 +538,10 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va ;; Update the value when editing an existing token ;; so the user doesn't have to interact with the form to validate the token (mf/use-effect - (mf/deps create? resolved-tokens token token-resolve-result set-resolve-value) + (mf/deps is-create token resolved-tokens token-resolve-result set-resolve-value) (fn [] - (when (and (not create?) + (when (and (not is-create) + (:value token) ;; Don't retrigger this effect when switching tabs on composite tokens (not token-resolve-result) resolved-tokens) (-> (get resolved-tokens @token-name-ref) @@ -531,7 +552,7 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va [:div {:class (stl/css :token-rows)} [:> heading* {:level 2 :typography "headline-medium" :class (stl/css :form-modal-title)} (if (= action "edit") - (tr "workspace.tokens.edit-token") + (tr "workspace.tokens.edit-token" token-type) (tr "workspace.tokens.create-token" token-type))] [:div {:class (stl/css :input-row)} @@ -543,21 +564,12 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va :variant "comfortable" :auto-focus true :default-value @token-name-ref - :hint-type (when (seq (:errors @name-errors)) "error") + :hint-type (when-not (empty? name-errors) "error") + :hint-message (first name-errors) :ref name-ref :on-blur on-blur-name :on-change on-update-name}]) - (for [error (->> (:errors @name-errors) - (map #(-> (assoc @name-errors :errors [%]) - (me/humanize))) - (map first))] - - [:> hint-message* {:key error - :message error - :type "error" - :id "token-name-hint"}]) - (when (and warning-name-change? (= action "edit")) [:div {:class (stl/css :warning-name-change-notification-wrapper)} [:> context-notification* @@ -577,8 +589,9 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va :on-update-value on-update-value :on-external-update-value on-external-update-value :custom-input-token-value-props custom-input-token-value-props - :token-resolve-result token-resolve-result}] - [:> input-tokens-value* + :token-resolve-result token-resolve-result + :clear-resolve-value clear-resolve-value}] + [:> input-token* {:placeholder placeholder :label label :default-value default-value @@ -593,6 +606,8 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va :max-length max-input-length :variant "comfortable" :default-value @description-ref + :hint-type (when-not (empty? description-errors) "error") + :hint-message (first description-errors) :on-blur on-update-description :on-change on-update-description}]] @@ -618,6 +633,132 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va :disabled disabled?} (tr "labels.save")]]]])) +;; Tabs Component -------------------------------------------------------------- + +(mf/defc composite-reference-input* + [{:keys [default-value on-blur on-update-value token-resolve-result reference-label reference-icon is-reference-fn]}] + [:> input-token* + {:aria-label (tr "labels.reference") + :placeholder reference-label + :icon reference-icon + :default-value (when (is-reference-fn default-value) default-value) + :on-blur on-blur + :on-change on-update-value + :token-resolve-result (when (or + (:errors token-resolve-result) + (string? (:value token-resolve-result))) + token-resolve-result)}]) + +(mf/defc composite-tabs* + [{:keys [default-value + on-update-value + on-external-update-value + on-value-resolve + clear-resolve-value + custom-input-token-value-props] + :rest props}] + (let [;; Active Tab State + {:keys [active-tab + composite-tab + is-reference-fn + reference-icon + reference-label + set-active-tab + title + update-composite-backup-value]} custom-input-token-value-props + reference-tab-active? (= :reference active-tab) + ;; Backup value ref + ;; Used to restore the previously entered value when switching tabs + ;; Uses ref to not trigger state updates during update + backup-state-ref (mf/use-var + (if reference-tab-active? + {:reference default-value} + {:composite default-value})) + default-value (get @backup-state-ref active-tab) + + on-toggle-tab + (mf/use-fn + (mf/deps active-tab on-external-update-value on-value-resolve clear-resolve-value) + (fn [] + (let [next-tab (if (= active-tab :composite) :reference :composite)] + ;; Clear the resolved value so it wont show up before the next-tab value has resolved + (clear-resolve-value) + ;; Restore the internal value from backup + (on-external-update-value (get @backup-state-ref next-tab)) + (set-active-tab next-tab)))) + + ;; Store updated value in backup-state-ref + on-update-value' + (mf/use-fn + (mf/deps on-update-value reference-tab-active? update-composite-backup-value) + (fn [e] + (if reference-tab-active? + (swap! backup-state-ref assoc :reference (dom/get-target-val e)) + (swap! backup-state-ref update :composite #(update-composite-backup-value % e))) + (on-update-value e)))] + [:div {:class (stl/css :typography-inputs-row)} + [:div {:class (stl/css :title-bar)} + [:div {:class (stl/css :title)} title] + [:& radio-buttons {:class (stl/css :listing-options) + :selected (if reference-tab-active? "reference" "composite") + :on-change on-toggle-tab + :name "reference-composite-tab"} + [:& radio-button {:icon deprecated-icon/layers + :value "composite" + :title (tr "workspace.tokens.individual-tokens") + :id "composite-opt"}] + [:& radio-button {:icon deprecated-icon/tokens + :value "reference" + :title (tr "workspace.tokens.use-reference") + :id "reference-opt"}]]] + [:div {:class (stl/css :typography-inputs)} + (if reference-tab-active? + [:> composite-reference-input* + (mf/spread-props props {:default-value default-value + :on-update-value on-update-value' + :reference-icon reference-icon + :reference-label reference-label + :is-reference-fn is-reference-fn})] + [:> composite-tab + (mf/spread-props props {:default-value default-value + :on-update-value on-update-value'})])]])) + +(mf/defc composite-form* + "Wrapper around form* that manages composite/reference tab state. + Takes the same props as form* plus a function to determine if a token value is a reference." + [{:keys [token is-reference-fn composite-tab reference-icon title update-composite-backup-value] :rest props}] + (let [active-tab* (mf/use-state (if (is-reference-fn (:value token)) :reference :composite)) + active-tab (deref active-tab*) + + custom-input-token-value-props + (mf/use-memo + (mf/deps active-tab composite-tab reference-icon title update-composite-backup-value is-reference-fn) + (fn [] + {:active-tab active-tab + :set-active-tab #(reset! active-tab* %) + :composite-tab composite-tab + :reference-icon reference-icon + :reference-label (tr "workspace.tokens.reference-composite") + :title title + :update-composite-backup-value update-composite-backup-value + :is-reference-fn is-reference-fn})) + + ;; Remove the value from a stored token when it doesn't match the tab type + ;; We need this to keep the form disabled when there's an existing value that doesn't match the tab type + token + (mf/use-memo + (mf/deps token active-tab is-reference-fn) + (fn [] + (let [token-tab-type (if (is-reference-fn (:value token)) :reference :composite)] + (cond-> token + (not= token-tab-type active-tab) (dissoc :value token)))))] + [:> form* + (mf/spread-props props {:token token + :custom-input-token-value composite-tabs* + :custom-input-token-value-props custom-input-token-value-props})])) + +;; Token Type Forms ------------------------------------------------------------ + ;; FIXME: this function has confusing name (defn- hex->value [hex] @@ -717,10 +858,11 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va color-value (-> (tinycolor/valid-color hex-value) (tinycolor/set-alpha (or alpha 1)) (tinycolor/->string format))] + (dom/set-value! (mf/ref-val input-ref) color-value) (on-external-update-value color-value))))] [:* - [:> input-tokens-value* + [:> input-token* {:placeholder placeholder :label label :default-value default-value @@ -773,7 +915,7 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va (let [current-font* (mf/use-state (or font (some-> (mf/ref-val input-ref) (dom/get-value) - (ctt/split-font-family) + (cto/split-font-family) (first) (fonts/find-font-family)))) current-font (deref current-font*)] @@ -783,8 +925,8 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va :on-close on-close-font-selector :full-size true}]])) -(mf/defc font-picker* - [{:keys [default-value input-ref on-blur on-update-value on-external-update-value token-resolve-result]}] +(mf/defc font-picker-combobox* + [{:keys [default-value label aria-label input-ref on-blur on-update-value on-external-update-value token-resolve-result placeholder]}] (let [font* (mf/use-state (fonts/find-font-family default-value)) font (deref font*) set-font (mf/use-fn @@ -808,7 +950,7 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va on-select-font (mf/use-fn - (mf/deps on-external-update-value set-font) + (mf/deps on-external-update-value set-font font) (fn [{:keys [family] :as font}] (when font (set-font font) @@ -830,10 +972,11 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va :variant "action" :type "button"}])] [:* - [:> input-tokens-value* - {:placeholder (tr "workspace.tokens.token-font-family-value-enter") - :label (tr "workspace.tokens.token-font-family-value") - :default-value default-value + [:> input-token* + {:placeholder (or placeholder (tr "workspace.tokens.token-font-family-value-enter")) + :label label + :aria-label aria-label + :default-value (or (:name font) default-value) :ref input-ref :on-blur on-blur :on-change on-update-value' @@ -852,10 +995,10 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va (mf/use-fn (fn [value] (when value - (ctt/join-font-family value))))] + (cto/join-font-family value))))] [:> form* - (mf/spread-props props {:token (when token (update token :value ctt/join-font-family)) - :custom-input-token-value font-picker* + (mf/spread-props props {:token (when token (update token :value cto/join-font-family)) + :custom-input-token-value font-picker-combobox* :on-value-resolve on-value-resolve :validate-token validate-font-family-token})])) @@ -879,37 +1022,54 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va (def ^:private typography-inputs #(d/ordered-map - :font-size - {:label "Font Size" - :placeholder (tr "workspace.tokens.token-value-enter")} :font-family {:label (tr "workspace.tokens.token-font-family-value") + :icon i/text-font-family :placeholder (tr "workspace.tokens.token-font-family-value-enter")} + :font-size + {:label "Font Size" + :icon i/text-font-size + :placeholder (tr "workspace.tokens.font-size-value-enter")} :font-weight {:label "Font Weight" + :icon i/text-font-weight :placeholder (tr "workspace.tokens.font-weight-value-enter")} + :line-height + {:label "Line Height" + :icon i/text-lineheight + :placeholder (tr "workspace.tokens.line-height-value-enter")} :letter-spacing {:label "Letter Spacing" - :placeholder (tr "workspace.tokens.token-value-enter")} + :icon i/text-letterspacing + :placeholder (tr "workspace.tokens.letter-spacing-value-enter-composite")} :text-case {:label "Text Case" + :icon i/text-mixed :placeholder (tr "workspace.tokens.text-case-value-enter")} :text-decoration {:label "Text Decoration" + :icon i/text-underlined :placeholder (tr "workspace.tokens.text-decoration-value-enter")})) -(mf/defc typography-inputs* +(mf/defc typography-value-inputs* [{:keys [default-value on-blur on-update-value token-resolve-result]}] - (let [typography-inputs (mf/use-memo typography-inputs) + (let [composite-token? (not (cto/typography-composite-token-reference? (:value token-resolve-result))) + typography-inputs (mf/use-memo typography-inputs) errors-by-key (sd/collect-typography-errors token-resolve-result)] [:div {:class (stl/css :nested-input-row)} - (for [[k {:keys [label placeholder]}] typography-inputs] - (let [value (get default-value k) - token-resolve-result - (-> {:resolved-value (let [v (get-in token-resolve-result [:resolved-value k])] - (when-not (str/empty? v) v)) - :errors (get errors-by-key k)} - (d/without-nils)) + (for [[token-type {:keys [label placeholder icon]}] typography-inputs] + (let [value (get default-value token-type) + resolved (get-in token-resolve-result [:resolved-value token-type]) + errors (get errors-by-key token-type) + + should-show? (or (and (some? resolved) + (not= value (str resolved))) + (seq errors)) + + token-prop (when (and composite-token? should-show?) + (d/without-nils + {:resolved-value (when-not (str/empty? resolved) resolved) + :errors errors})) input-ref (mf/use-ref) @@ -917,59 +1077,81 @@ custom-input-token-value-props: Custom props passed to the custom-input-token-va (mf/use-fn (mf/deps on-update-value) (fn [next-value] - (let [el (mf/ref-val input-ref)] - (dom/set-value! el next-value) - (on-update-value #js {:target el + (let [element (mf/ref-val input-ref)] + (dom/set-value! element next-value) + (on-update-value #js {:target element :tokenType :font-family})))) on-change (mf/use-fn + (mf/deps token-type) ;; Passing token-type via event to prevent deep function adapting & passing of type - (fn [e] - (-> (obj/set! e "tokenType" k) + (fn [event] + (-> (obj/set! event "tokenType" token-type) (on-update-value))))] - [:div {:class (stl/css :input-row)} - (case k + [:div {:key (str token-type) + :class (stl/css :input-row)} + (case token-type :font-family - [:> font-picker* - {:key (str k) - :label label + [:> font-picker-combobox* + {:aria-label label :placeholder placeholder :input-ref input-ref - :default-value (when value (ctt/join-font-family value)) + :default-value (when value (cto/join-font-family value)) :on-blur on-blur :on-update-value on-change :on-external-update-value on-external-update-value - :token-resolve-result (when (seq token-resolve-result) token-resolve-result)}] - [:> input-tokens-value* - {:key (str k) - :label label + :token-resolve-result token-prop}] + [:> input-token* + {:aria-label label :placeholder placeholder :default-value value :on-blur on-blur + :icon icon :on-change on-change - :token-resolve-result (when (seq token-resolve-result) token-resolve-result)}])]))])) + :token-resolve-result token-prop}])]))])) (mf/defc typography-form* [{:keys [token] :rest props}] (let [on-get-token-value - (mf/use-callback - (fn [e prev-value] + (mf/use-fn + (fn [e prev-composite-value] (let [token-type (obj/get e "tokenType") - input-value (dom/get-target-val e)] - (if (empty? input-value) - (dissoc prev-value token-type) - (assoc prev-value token-type input-value)))))] - [:> form* + input-value (dom/get-target-val e) + reference-value-input? (not token-type)] + (cond + reference-value-input? input-value + + (empty? input-value) (dissoc prev-composite-value token-type) + :else (assoc prev-composite-value token-type input-value))))) + + update-composite-backup-value + (mf/use-fn + (fn [prev-composite-value e] + (let [token-type (obj/get e "tokenType") + token-value (dom/get-target-val e) + token-value (cond-> token-value + (= :font-family token-type) (cto/split-font-family))] + (if (seq token-value) + (assoc prev-composite-value token-type token-value) + ;; Remove empty values so they don't retrigger validation when switching tabs + (dissoc prev-composite-value token-type)))))] + [:> composite-form* (mf/spread-props props {:token token - :custom-input-token-value typography-inputs* + :composite-tab typography-value-inputs* + :reference-icon i/text-typography + :is-reference-fn cto/typography-composite-token-reference? + :title (tr "labels.typography") :validate-token validate-typography-token - :on-get-token-value on-get-token-value})])) + :on-get-token-value on-get-token-value + :update-composite-backup-value update-composite-backup-value})])) (mf/defc form-wrapper* - [{:keys [token token-type] :as props}] - (let [token-type' (or (:type token) token-type)] + [{:keys [token token-type] :rest props}] + (let [token-type' (or (:type token) token-type) + props (mf/spread-props props {:token-type token-type' + :token token})] (case token-type' :color [:> color-form* props] :typography [:> typography-form* props] diff --git a/frontend/src/app/main/ui/workspace/tokens/management/create/form.scss b/frontend/src/app/main/ui/workspace/tokens/management/create/form.scss index 25d0d70198..08164ffa83 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/create/form.scss +++ b/frontend/src/app/main/ui/workspace/tokens/management/create/form.scss @@ -4,10 +4,12 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; .form-wrapper { - width: $s-384; + width: $sz-384; position: relative; } @@ -15,8 +17,8 @@ display: grid; grid-template-columns: auto auto; justify-content: end; - gap: $s-12; - padding-block-start: $s-8; + gap: var(--sp-m); + padding-block-start: var(--sp-s); } .with-delete { @@ -30,28 +32,50 @@ .token-rows { display: flex; flex-direction: column; - gap: $s-16; + gap: var(--sp-l); } .input-row { display: flex; flex-direction: column; - gap: $s-4; + gap: var(--sp-xs); } .nested-input-row { display: flex; flex-direction: column; - gap: $s-12; + gap: var(--sp-m); +} + +.typography-inputs-row { + display: flex; + flex-direction: column; + gap: var(--sp-m); +} + +.typography-inputs { + border-inline-start: $b-1 solid var(--color-accent-primary-muted); + padding-inline-start: var(--sp-m); +} + +.title-bar { + display: grid; + grid-template-columns: 1fr auto; +} +.title { + @include t.use-typography("body-small"); + color: var(--color-foreground-primary); + display: flex; + align-items: center; } .warning-name-change-notification-wrapper { - margin-block-start: $s-16; + margin-block-start: var(--sp-l); } .error { - padding: $s-4 $s-6; - margin-bottom: 0; + padding: var(--sp-xs) $sz-6; + margin-block-end: 0; color: var(--status-color-error-500); } @@ -77,5 +101,5 @@ inset: 0; // This padding from the modal should be shared as a variable // Need to set this or the font-select will cause scroll - bottom: $s-32; + bottom: var(--sp-xxxl); } diff --git a/frontend/src/app/main/ui/workspace/tokens/management/create/input_token_color_bullet.scss b/frontend/src/app/main/ui/workspace/tokens/management/create/input_token_color_bullet.scss index 855bbbd793..7ce04f34ca 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/create/input_token_color_bullet.scss +++ b/frontend/src/app/main/ui/workspace/tokens/management/create/input_token_color_bullet.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../../../../ds/_sizes.scss" as *; -@use "../../../../ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/_borders.scss" as *; .input-token-color-bullet { --bullet-size: var(--sp-l); diff --git a/frontend/src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs b/frontend/src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs index def747e6f8..9ab8d6f4ab 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs @@ -9,6 +9,7 @@ (:require [app.common.data.macros :as dm] [app.main.data.workspace.tokens.errors :as wte] + [app.main.data.workspace.tokens.format :as dwtf] [app.main.data.workspace.tokens.warnings :as wtw] [app.main.ui.ds.controls.utilities.hint-message :refer [hint-message*]] [app.main.ui.ds.controls.utilities.input-field :refer [input-field*]] @@ -18,9 +19,10 @@ [cuerdas.core :as str] [rumext.v2 :as mf])) -(def ^:private schema::input-tokens-value +(def ^:private schema::input-token [:map - [:label :string] + [:label {:optional true} [:maybe :string]] + [:aria-label {:optional true} [:maybe :string]] [:placeholder {:optional true} :string] [:value {:optional true} [:maybe :string]] [:class {:optional true} :string] @@ -41,7 +43,7 @@ (str/join "\n")) errors (->> (wte/humanize-errors errors) (str/join "\n")) - :else (tr "workspace.tokens.resolved-value" (or resolved-value result))) + :else (tr "workspace.tokens.resolved-value" (dwtf/format-token-value (or resolved-value result)))) type (cond empty-message? "hint" errors "error" @@ -53,28 +55,24 @@ :class (stl/css-case :resolved-value (not (or empty-message? (seq warnings) (seq errors)))) :type type}])) -(mf/defc input-tokens-value* - {::mf/props :obj - ::mf/forward-ref true - ::mf/schema schema::input-tokens-value} - [{:keys [class label placeholder value icon slot-start token-resolve-result] :rest props} ref] +(mf/defc input-token* + {::mf/forward-ref true + ::mf/schema schema::input-token} + [{:keys [class label token-resolve-result] :rest props} ref] (let [error (not (nil? (:errors token-resolve-result))) id (mf/use-id) input-ref (mf/use-ref) props (mf/spread-props props {:id id :type "text" :class (stl/css :input) - :placeholder placeholder - :value value :variant "comfortable" :hint-type (when error "error") - :slot-start slot-start - :icon icon :ref (or ref input-ref)})] [:* [:div {:class (dm/str class " " (stl/css-case :wrapper true :input-error error))} - [:> label* {:for id} label] + (when label + [:> label* {:for id} label]) [:> input-field* props]] (when token-resolve-result [:> token-value-hint* {:result token-resolve-result}])])) diff --git a/frontend/src/app/main/ui/workspace/tokens/management/create/input_tokens_value.scss b/frontend/src/app/main/ui/workspace/tokens/management/create/input_tokens_value.scss index 3a097cddc9..8b47b91bdd 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/create/input_tokens_value.scss +++ b/frontend/src/app/main/ui/workspace/tokens/management/create/input_tokens_value.scss @@ -4,11 +4,10 @@ // // Copyright (c) KALEIDOS INC -@use "../../../../ds/typography.scss" as *; -@use "../../../../ds/_borders.scss" as *; -@use "../../../../ds/_sizes.scss" as *; +@use "ds/typography.scss" as *; +@use "ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .wrapper { --label-color: var(--color-foreground-primary); @@ -28,6 +27,10 @@ .label { @include use-typography("body-small"); - @include textEllipsis; + @include deprecated.textEllipsis; color: var(--label-color); } + +.resolved-value { + white-space: pre; +} diff --git a/frontend/src/app/main/ui/workspace/tokens/management/create/modals.cljs b/frontend/src/app/main/ui/workspace/tokens/management/create/modals.cljs index 1ae3ba7c34..18c5ba0d57 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/create/modals.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/management/create/modals.cljs @@ -8,6 +8,7 @@ (:require-macros [app.main.style :as stl]) (:require [app.common.data.macros :as dm] + [app.common.types.tokens-lib :as ctob] [app.main.data.modal :as modal] [app.main.refs :as refs] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] @@ -68,7 +69,7 @@ (mf/defc token-update-create-modal {::mf/wrap-props false} - [{:keys [x y position token token-type action selected-token-set-name] :as _args}] + [{:keys [x y position token token-type action selected-token-set-id] :as _args}] (let [wrapper-style (use-viewport-position-style x y position (= token-type :color)) modal-size-large* (mf/use-state (= token-type :typography)) modal-size-large? (deref modal-size-large*) @@ -88,9 +89,10 @@ :icon i/close :variant "action" :aria-label (tr "labels.close")}] - [:> form-wrapper* {:token token + [:> form-wrapper* {:is-create (not (ctob/token? token)) + :token token :action action - :selected-token-set-name selected-token-set-name + :selected-token-set-id selected-token-set-id :token-type token-type :on-display-colorpicker update-modal-size}]])) diff --git a/frontend/src/app/main/ui/workspace/tokens/management/create/modals.scss b/frontend/src/app/main/ui/workspace/tokens/management/create/modals.scss index 770a503a4a..666bbab5f9 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/create/modals.scss +++ b/frontend/src/app/main/ui/workspace/tokens/management/create/modals.scss @@ -4,11 +4,11 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .token-modal-wrapper { @extend .modal-container-base; - @include menuShadow; + @include deprecated.menuShadow; position: absolute; width: auto; min-width: auto; @@ -16,12 +16,12 @@ overflow-y: auto; overflow-x: hidden; &.token-modal-large { - min-block-size: 38rem; + max-block-size: 95vh; } } .close-btn { position: absolute; - top: $s-6; - right: $s-6; + top: deprecated.$s-6; + right: deprecated.$s-6; } diff --git a/frontend/src/app/main/ui/workspace/tokens/management/group.cljs b/frontend/src/app/main/ui/workspace/tokens/management/group.cljs index dfdd2f202d..8bc0cd9b77 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/group.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/management/group.cljs @@ -81,15 +81,15 @@ (fn [event] (dom/stop-propagation event) (st/emit! (dwtl/set-token-type-section-open type true) - ;; FIXME: use dom/get-client-position - (modal/show (:key modal) - {:x (.-clientX ^js event) - :y (.-clientY ^js event) - :position :right - :fields (:fields modal) - :title title - :action "create" - :token-type type})))) + (let [pos (dom/get-client-position event)] + (modal/show (:key modal) + {:x (:x pos) + :y (:y pos) + :position :right + :fields (:fields modal) + :title title + :action "create" + :token-type type}))))) on-token-pill-click (mf/use-fn @@ -101,19 +101,20 @@ :shapes selected-shapes})))))] [:div {:on-click on-toggle-open-click :class (stl/css :token-section-wrapper)} - [:& cmm/asset-section {:icon (token-section-icon type) - :title title - :section :tokens - :assets-count (count tokens) - :open? is-open} - [:& cmm/asset-section-block {:role :title-button} + [:> cmm/asset-section* {:icon (token-section-icon type) + :title title + :section :tokens + :assets-count (count tokens) + :is-open is-open} + [:> cmm/asset-section-block* {:role :title-button} (when can-edit? [:> icon-button* {:on-click on-popover-open-click :variant "ghost" :icon i/add + :id (str "add-token-button-" title) :aria-label (tr "workspace.tokens.add-token" title)}])] (when is-open - [:& cmm/asset-section-block {:role :content} + [:> cmm/asset-section-block* {:role :content} [:div {:class (stl/css :token-pills-wrapper)} (for [token tokens] [:> token-pill* diff --git a/frontend/src/app/main/ui/workspace/tokens/management/token_pill.cljs b/frontend/src/app/main/ui/workspace/tokens/management/token_pill.cljs index 561b4b17a8..e93a69c2aa 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/token_pill.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/management/token_pill.cljs @@ -10,15 +10,16 @@ [app.main.style :as stl]) (:require [app.common.data :as d] - [app.common.files.helpers :as cfh] [app.common.files.tokens :as cft] + [app.common.path-names :as cpn] [app.common.types.token :as ctt] [app.main.data.workspace.tokens.application :as dwta] [app.main.data.workspace.tokens.color :as dwtc] + [app.main.data.workspace.tokens.format :as dwtf] [app.main.refs :as refs] - [app.main.ui.components.color-bullet :refer [color-bullet]] [app.main.ui.ds.foundations.assets.icon :refer [icon*] :as i] [app.main.ui.ds.foundations.utilities.token.token-status :refer [token-status-icon*]] + [app.main.ui.ds.utilities.swatch :refer [swatch*]] [app.util.dom :as dom] [app.util.i18n :refer [tr]] [clojure.set :as set] @@ -26,6 +27,7 @@ [rumext.v2 :as mf])) ;; Translation dictionaries + (def ^:private attribute-dictionary {:rotation "Rotation" :opacity "Opacity" @@ -74,20 +76,6 @@ :x :x :y :y}) -(def ^:private category-dictionary - {:stroke-width "Stroke Width" - :spacing "Spacing" - :sizing "Sizing" - :border-radius "Border Radius" - :x "X" - :y "Y" - :font-size "Font Size" - :font-family "Font Family" - :font-weight "Font Weight" - :letter-spacing "Letter Spacing" - :text-case "Text Case" - :text-decoration "Text Decoration"}) - ;; Helper functions (defn partially-applied-attr @@ -105,24 +93,11 @@ (str/join "\n" (map (fn [[category values]] (if (#{:x :y} category) - (dm/str "- " (category-dictionary category)) - (dm/str "- " (category-dictionary category) ": " + (dm/str "- " (dwtf/category-dictionary category)) + (dm/str "- " (dwtf/category-dictionary category) ": " (str/join ", " (map attribute-dictionary values)) "."))) grouped-values))) -(defn format-token-value [token-value] - (cond - (map? token-value) - (->> (map (fn [[k v]] (str "- " (category-dictionary k) ": " (format-token-value v))) token-value) - (str/join "\n") - (str "\n")) - - (sequential? token-value) - (str/join "," token-value) - - :else - (str token-value))) - (defn- generate-tooltip "Generates a tooltip for a given token" [is-viewer shape theme-token token half-applied no-valid-value ref-not-in-active-set] @@ -142,8 +117,8 @@ grouped-values (group-by dimensions-dictionary app-token-keys) base-title (dm/str "Token: " name "\n" - (tr "workspace.tokens.original-value" (format-token-value value)) "\n" - (tr "workspace.tokens.resolved-value" (format-token-value resolved-value)) + (tr "workspace.tokens.original-value" (dwtf/format-token-value value)) "\n" + (tr "workspace.tokens.resolved-value" (dwtf/format-token-value resolved-value)) (when (= (:type token) :number) (dm/str "\n" (tr "workspace.tokens.more-options"))))] @@ -323,7 +298,8 @@ :class (stl/css :token-pill-icon)}] color - [:& color-bullet {:color color :mini true}] + [:> swatch* {:background color + :size "small"}] status-icon? [:> token-status-icon* @@ -331,7 +307,7 @@ :class (stl/css :token-pill-icon)}]) (if contains-path? - (let [[first-part last-part] (cfh/split-by-last-period name)] + (let [[first-part last-part] (cpn/split-by-last-period name)] [:span {:class (stl/css :divided-name-wrapper) :aria-label name} [:span {:class (stl/css :first-name-wrapper)} first-part] diff --git a/frontend/src/app/main/ui/workspace/tokens/management/token_pill.scss b/frontend/src/app/main/ui/workspace/tokens/management/token_pill.scss index f6e276ecf5..e6df6d482e 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management/token_pill.scss +++ b/frontend/src/app/main/ui/workspace/tokens/management/token_pill.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/typography.scss" as *; -@use "../../../ds/borders.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as *; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; .token-pill { @include use-typography("code-font"); @@ -16,7 +16,7 @@ display: grid; grid-template-columns: auto 1fr; align-items: center; - gap: $s-6; + gap: $sz-6; border: $b-1 solid var(--token-pill-border); outline: $b-2 solid var(--token-pill-outline); height: var(--sp-xxl); @@ -40,7 +40,7 @@ } .divided-name-wrapper { - height: $s-16; + height: var(--sp-l); display: flex; align-items: center; white-space: nowrap; diff --git a/frontend/src/app/main/ui/workspace/tokens/sets.cljs b/frontend/src/app/main/ui/workspace/tokens/sets.cljs index be7ce5fbae..b46b9f0aba 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sets.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/sets.cljs @@ -15,8 +15,8 @@ [app.main.ui.workspace.tokens.sets.lists :refer [controlled-sets-list*]] [rumext.v2 :as mf])) -(defn- on-select-token-set-click [name] - (st/emit! (dwtl/set-selected-token-set-name name))) +(defn- on-select-token-set-click [id] + (st/emit! (dwtl/set-selected-token-set-id id))) (defn- on-toggle-token-set-click [name] (st/emit! (dwtl/toggle-token-set name))) diff --git a/frontend/src/app/main/ui/workspace/tokens/sets.scss b/frontend/src/app/main/ui/workspace/tokens/sets.scss index ca1e55d5b3..dee8bfe07b 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sets.scss +++ b/frontend/src/app/main/ui/workspace/tokens/sets.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/typography.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .sets-list { width: 100%; @@ -14,8 +14,8 @@ } .empty-sets-wrapper { - padding: $s-12; - padding-inline-start: $s-24; + padding: deprecated.$s-12; + padding-inline-start: deprecated.$s-24; color: var(--color-foreground-secondary); } @@ -29,57 +29,57 @@ } .set-item-container { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; width: 100%; - min-height: $s-32; + min-height: deprecated.$s-32; cursor: pointer; color: var(--layer-row-foreground-color); - padding-left: calc($s-24 * var(--tree-depth, 0) + $s-8); - border: $s-2 solid transparent; - gap: $s-2; + padding-left: calc(deprecated.$s-24 * var(--tree-depth, 0) + deprecated.$s-8); + border: deprecated.$s-2 solid transparent; + gap: deprecated.$s-2; &.dnd-over-bot { - border-bottom: $s-2 solid var(--layer-row-foreground-color-hover); + border-bottom: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } &.dnd-over-top { - border-top: $s-2 solid var(--layer-row-foreground-color-hover); + border-top: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } &.dnd-over { - border: $s-2 solid var(--layer-row-foreground-color-hover); + border: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } } .set-item-group { cursor: unset; - padding-left: calc($s-24 * var(--tree-depth, 0)); + padding-left: calc(deprecated.$s-24 * var(--tree-depth, 0)); gap: 0; } .set-item-group-collapse-button { cursor: pointer; width: auto; - height: $s-28; + height: deprecated.$s-28; } .set-name { - @include textEllipsis; + @include deprecated.textEllipsis; flex-grow: 1; - padding-left: $s-2; + padding-left: deprecated.$s-2; } .icon { flex-shrink: 0; display: flex; align-items: center; - width: $s-20; - height: $s-20; - padding-right: $s-4; + width: deprecated.$s-20; + height: deprecated.$s-20; + padding-right: deprecated.$s-4; } .root-icon { - margin-left: $s-8; + margin-left: deprecated.$s-8; } .checkbox-style { @@ -87,12 +87,12 @@ display: flex; justify-content: center; align-items: center; - width: $s-16; - height: $s-16; - margin-inline: $s-6; + width: deprecated.$s-16; + height: deprecated.$s-16; + margin-inline: deprecated.$s-6; background-color: var(--input-checkbox-background-color-rest); - border: $s-1 solid var(--input-checkbox-border-color-rest); - border-radius: $s-4; + border: deprecated.$s-1 solid var(--input-checkbox-border-color-rest); + border-radius: deprecated.$s-4; padding: 0; } @@ -102,7 +102,7 @@ } .checkbox-disabled { - border: $s-1 solid var(--color-background-quaternary); + border: deprecated.$s-1 solid var(--color-background-quaternary); background-color: var(--color-background-tertiary); } @@ -126,7 +126,7 @@ justify-content: center; align-items: center; width: 100%; - padding: $s-12; + padding: deprecated.$s-12; color: var(--color-foreground-secondary); } .selected-set { @@ -136,27 +136,27 @@ } .collapsabled-icon { - @include buttonStyle; - @include flexCenter; - height: $s-24; - border-radius: $br-8; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; + height: deprecated.$s-24; + border-radius: deprecated.$br-8; &:hover { color: var(--title-foreground-color-hover); } } .editing-node { - @include textEllipsis; - @include bodySmallTypography; - @include removeInputStyle; + @include deprecated.textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.removeInputStyle; - border: $s-1 solid var(--input-border-color-focus); - border-radius: $br-8; + border: deprecated.$s-1 solid var(--input-border-color-focus); + border-radius: deprecated.$br-8; color: var(--layer-row-foreground-color-focus); flex-grow: 1; - height: $s-28; + height: deprecated.$s-28; margin: 0; - padding-left: $s-6; + padding-left: deprecated.$s-6; &::placeholder { color: var(--layer-row-foreground-color-placeholder); diff --git a/frontend/src/app/main/ui/workspace/tokens/sets/context_menu.cljs b/frontend/src/app/main/ui/workspace/tokens/sets/context_menu.cljs index 00f0e47e86..b9cdb57e82 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sets/context_menu.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/sets/context_menu.cljs @@ -34,7 +34,7 @@ (mf/defc menu* {::mf/private true} - [{:keys [is-group id edition-id path]}] + [{:keys [is-group id path]}] (let [create-set-at-path (mf/use-fn (mf/deps path) #(st/emit! (dwtl/start-token-set-creation path))) @@ -42,18 +42,20 @@ (mf/use-fn (mf/deps id) (fn [] - (st/emit! (dwtl/start-token-set-edition edition-id)))) + (st/emit! (dwtl/start-token-set-edition id)))) on-duplicate (mf/use-fn (mf/deps is-group id) (fn [] - (st/emit! (dwtl/duplicate-token-set id is-group)))) + (st/emit! (dwtl/duplicate-token-set id)))) on-delete (mf/use-fn (mf/deps is-group path) - #(st/emit! (dwtl/delete-token-set-path is-group path)))] + (if is-group + #(st/emit! (dwtl/delete-token-set-group path)) + #(st/emit! (dwtl/delete-token-set id))))] [:ul {:class (stl/css :context-list)} (when is-group @@ -65,7 +67,7 @@ (mf/defc token-set-context-menu* [] - (let [{:keys [position is-group id edition-id path]} + (let [{:keys [position is-group id path]} (mf/deref ref:token-sets-context-menu) position-top @@ -86,5 +88,4 @@ :on-context-menu prevent-default} [:> menu* {:is-group is-group :id id - :edition-id edition-id :path path}]]])) diff --git a/frontend/src/app/main/ui/workspace/tokens/sets/context_menu.scss b/frontend/src/app/main/ui/workspace/tokens/sets/context_menu.scss index 12438545c8..1e36266233 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sets/context_menu.scss +++ b/frontend/src/app/main/ui/workspace/tokens/sets/context_menu.scss @@ -4,21 +4,21 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/typography.scss" as t; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as t; +@use "refactor/common-refactor.scss" as deprecated; .token-set-context-menu { position: absolute; - z-index: $z-index-4; + z-index: deprecated.$z-index-4; } .context-list { - @include menuShadow; + @include deprecated.menuShadow; display: grid; - width: $s-240; - padding: $s-4; - border-radius: $br-8; - border: $s-2 solid var(--panel-border-color); + width: deprecated.$s-240; + padding: deprecated.$s-4; + border-radius: deprecated.$br-8; + border: deprecated.$s-2 solid var(--panel-border-color); background-color: var(--menu-background-color); max-height: 100vh; overflow-y: auto; @@ -29,10 +29,10 @@ color: var(--menu-foreground-color); display: flex; align-items: center; - height: $s-28; + height: deprecated.$s-28; width: 100%; - padding: $s-6; - border-radius: $br-8; + padding: deprecated.$s-6; + border-radius: deprecated.$br-8; cursor: pointer; &:hover { diff --git a/frontend/src/app/main/ui/workspace/tokens/sets/helpers.cljs b/frontend/src/app/main/ui/workspace/tokens/sets/helpers.cljs index c05e2517ed..b4ad5e568f 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sets/helpers.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/sets/helpers.cljs @@ -32,5 +32,3 @@ (st/emit! (ptk/data-event ::ev/event {::ev/name "create-token-set" :name name}) (dwtl/create-token-set name)))) - - diff --git a/frontend/src/app/main/ui/workspace/tokens/sets/lists.cljs b/frontend/src/app/main/ui/workspace/tokens/sets/lists.cljs index 3b772f2009..89d5fa4895 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sets/lists.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/sets/lists.cljs @@ -21,19 +21,15 @@ [app.util.dom :as dom] [app.util.i18n :refer [tr]] [app.util.keyboard :as kbd] + [beicon.v2.core :as rx] [cuerdas.core :as str] + [potok.v2.core :as ptk] [rumext.v2 :as mf])) (defn- on-start-creation [] (st/emit! (dwtl/start-token-set-creation []))) -(defn- group-edition-id - "Prefix editing groups `edition-id` so it can be differentiated from sets with the same id." - [edition-id] - (str "group-" edition-id)) - - (mf/defc editing-label* {::mf/private true} [{:keys [default-value on-cancel on-submit]}] @@ -111,8 +107,8 @@ (mf/defc sets-tree-set-group* {::mf/private true} - [{:keys [id label tree-depth tree-path is-active is-selected is-draggable is-collapsed tree-index on-drop - on-toggle-collapse on-toggle is-editing on-start-edition on-reset-edition on-edit-submit]}] + [{:keys [id label is-editing is-active is-selected is-draggable is-collapsed path depth index + on-toggle on-drop on-start-edition on-reset-edition on-edit-submit on-toggle-collapse]}] (let [can-edit? (mf/use-ctx ctx/can-edit?) @@ -122,7 +118,7 @@ on-context-menu (mf/use-fn - (mf/deps is-editing id tree-path can-edit?) + (mf/deps is-editing id path can-edit?) (fn [event] (dom/prevent-default event) (dom/stop-propagation event) @@ -131,47 +127,46 @@ {:position (dom/get-client-position event) :is-group true :id id - :edition-id (group-edition-id id) - :path tree-path}))))) + :path path}))))) on-collapse-click (mf/use-fn (fn [event] (dom/prevent-default event) (dom/stop-propagation event) - (on-toggle-collapse tree-path))) + (on-toggle-collapse path))) on-double-click - (mf/use-fn (mf/deps id) #(on-start-edition (group-edition-id id))) + (mf/use-fn (mf/deps id) #(on-start-edition id)) on-checkbox-click (mf/use-fn - (mf/deps on-toggle tree-path can-edit?) - #(on-toggle tree-path)) + (mf/deps on-toggle path can-edit?) + #(on-toggle path)) on-edit-submit' (mf/use-fn - (mf/deps tree-path on-edit-submit can-edit?) - #(on-edit-submit tree-path %)) + (mf/deps path on-edit-submit can-edit?) + #(on-edit-submit path %)) on-drop (mf/use-fn - (mf/deps tree-index on-drop) + (mf/deps index on-drop) (fn [position data] - (on-drop tree-index position data))) + (on-drop index position data))) [dprops dref] (h/use-sortable :data-type "penpot/token-set" :on-drop on-drop - :data {:index tree-index + :data {:index index :is-group true} :detect-center? true - :draggable? is-draggable)] + :draggable? (and is-draggable (not is-editing)))] [:div {:ref dref :data-testid "tokens-set-group-item" - :style {"--tree-depth" tree-depth} + :style {"--tree-depth" depth} :class (stl/css-case :set-item-container true :set-item-group true :selected-set is-selected @@ -209,24 +204,23 @@ :arial-label (tr "workspace.tokens.select-set")}]])])) (mf/defc sets-tree-set* - [{:keys [id set label tree-depth tree-path tree-index is-selected is-active is-draggable is-editing - on-select on-drop on-toggle on-start-edition on-reset-edition on-edit-submit is-new]}] + [{:keys [id set label is-editing is-active is-selected is-draggable is-new path depth index + on-select on-toggle on-drop on-start-edition on-reset-edition on-edit-submit]}] - (let [set-name (ctob/get-name set) - can-edit? (mf/use-ctx ctx/can-edit?) + (let [can-edit? (mf/use-ctx ctx/can-edit?) on-click (mf/use-fn - (mf/deps is-editing tree-path) + (mf/deps is-editing on-select id) (fn [event] (dom/stop-propagation event) (when-not is-editing (when (fn? on-select) - (on-select set-name))))) + (on-select id))))) on-context-menu (mf/use-fn - (mf/deps is-editing id tree-path can-edit?) + (mf/deps is-editing id path can-edit?) (fn [event] (dom/prevent-default event) (dom/stop-propagation event) @@ -235,8 +229,7 @@ {:position (dom/get-client-position event) :is-group false :id id - :edition-id id - :path tree-path}))))) + :path path}))))) on-double-click (mf/use-fn @@ -247,11 +240,11 @@ on-checkbox-click (mf/use-fn - (mf/deps set-name on-toggle) + (mf/deps id on-toggle) (fn [event] (dom/stop-propagation event) (when (fn? on-toggle) - (on-toggle set-name)))) + (on-toggle (ctob/get-name set))))) on-edit-submit' (mf/use-fn @@ -260,25 +253,25 @@ on-drag (mf/use-fn - (mf/deps tree-path) + (mf/deps path) (fn [_] (when-not is-selected - (on-select tree-path)))) + (on-select path)))) on-drop (mf/use-fn - (mf/deps tree-index on-drop) + (mf/deps index on-drop) (fn [position data] - (on-drop tree-index position data))) + (on-drop index position data))) [dprops dref] (h/use-sortable :data-type "penpot/token-set" :on-drag on-drag :on-drop on-drop - :data {:index tree-index + :data {:index index :is-group false} - :draggable? is-draggable) + :draggable? (and is-draggable (not is-editing))) drop-over (get dprops :over)] @@ -286,7 +279,8 @@ [:div {:ref dref :role "button" :data-testid "tokens-set-item" - :style {"--tree-depth" tree-depth} + :id (str "token-set-item-" (str/join "/" path)) + :style {"--tree-depth" depth} :class (stl/css-case :set-item-container true :selected-set is-selected :dnd-over (= drop-over :center) @@ -300,7 +294,7 @@ [:> icon* {:icon-id i/document :class (stl/css-case :icon true - :root-icon (not tree-depth))}] + :root-icon (not depth))}] (if is-editing [:> editing-label* {:default-value label @@ -342,9 +336,9 @@ on-drop (mf/use-fn (mf/deps collapsed-paths) - (fn [tree-index position data] + (fn [index position data] (let [params {:from-index (:index data) - :to-index tree-index + :to-index index :position position :collapsed-paths collapsed-paths}] (if (:is-group data) @@ -358,79 +352,88 @@ (disj % path) (conj % path)))))] - (for [{:keys [id token-set index is-new is-group path parent-path depth] :as node} + (mf/with-effect [] + (let [sub (rx/subs! (fn [paths'] + (swap! collapsed-paths* (fn [paths] (apply disj paths paths')))) + (->> st/stream + (rx/filter (ptk/type? :expand-token-sets)) + (rx/map deref) + (rx/map :paths)))] + (fn [] + (rx/dispose! sub)))) + + (for [{:keys [token-set id index is-new is-group path depth] :as node} (ctob/sets-tree-seq token-sets {:skip-children-pred collapsed? :new-at-path new-path})] - (cond - ^boolean is-group - [:> sets-tree-set-group* - {:key index - :label (peek path) - :id id - :is-active (is-token-set-group-active path) - :is-selected false - :is-draggable is-draggable - :is-editing (= edition-id (group-edition-id id)) - :is-collapsed (collapsed? path) - :on-select on-select + (do + (cond + ^boolean is-group + [:> sets-tree-set-group* + {:key index + :id id + :label (peek path) + :is-editing (= edition-id id) + :is-active (is-token-set-group-active path) + :is-selected false + :is-draggable is-draggable + :is-collapsed (collapsed? path) - :tree-path path - :tree-depth depth - :tree-index index - :tree-parent-path parent-path + :path path + :depth depth + :index index - :on-drop on-drop - :on-start-edition on-start-edition - :on-reset-edition on-reset-edition - :on-edit-submit on-edit-submit-group - :on-toggle-collapse on-toggle-collapse - :on-toggle on-toggle-set-group}] + :on-toggle on-toggle-set-group + :on-drop on-drop + :on-start-edition on-start-edition + :on-reset-edition on-reset-edition + :on-edit-submit on-edit-submit-group + :on-toggle-collapse on-toggle-collapse}] - ^boolean is-new - [:> sets-tree-set* - {:key index - :set token-set - :label "" - :id id - :is-editing true - :is-active true - :is-selected true - :is-new true - :tree-path path - :tree-depth depth - :tree-index index - :tree-parent-path parent-path + ^boolean is-new + [:> sets-tree-set* + {:key index + :id id + :set token-set + :label "" + :is-editing true + :is-active true + :is-selected true + :is-draggable false + :is-new true - :on-drop on-drop - :on-reset-edition on-reset-edition - :on-edit-submit sets-helpers/on-create-token-set}] + :path path + :depth depth + :index index - :else - [:> sets-tree-set* - {:key index - :set token-set - :id id - :label (peek path) - :is-editing (= edition-id id) - :is-active (is-token-set-active id) - :is-selected (= selected id) - :is-draggable is-draggable - :on-select on-select - :tree-path path - :tree-depth depth - :tree-index index - :is-new false - :tree-parent-path parent-path - :on-toggle on-toggle-set - :edition-id edition-id - :on-start-edition on-start-edition - :on-drop on-drop - :on-reset-edition on-reset-edition - :on-edit-submit on-edit-submit-set}])))) + :on-drop on-drop + :on-reset-edition on-reset-edition + :on-edit-submit sets-helpers/on-create-token-set}] + + :else + [:> sets-tree-set* + {:key index + :id id + :set token-set + :label (peek path) + :is-editing (= edition-id id) + :is-active (is-token-set-active (ctob/get-name token-set)) + :is-selected (= selected id) + :is-draggable is-draggable + :is-new false + + :path path + :depth depth + :index index + + :on-select on-select + :on-toggle on-toggle-set + :on-drop on-drop + :on-start-edition on-start-edition + :on-reset-edition on-reset-edition + :on-edit-submit on-edit-submit-set}]))))) (mf/defc controlled-sets-list* - {::mf/props :obj} [{:keys [token-sets selected on-update-token-set diff --git a/frontend/src/app/main/ui/workspace/tokens/sets/lists.scss b/frontend/src/app/main/ui/workspace/tokens/sets/lists.scss index f0ba86f54d..dee8bfe07b 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sets/lists.scss +++ b/frontend/src/app/main/ui/workspace/tokens/sets/lists.scss @@ -4,8 +4,8 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/typography.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .sets-list { width: 100%; @@ -14,8 +14,8 @@ } .empty-sets-wrapper { - padding: $s-12; - padding-inline-start: $s-24; + padding: deprecated.$s-12; + padding-inline-start: deprecated.$s-24; color: var(--color-foreground-secondary); } @@ -29,57 +29,57 @@ } .set-item-container { - @include bodySmallTypography; + @include deprecated.bodySmallTypography; display: flex; align-items: center; width: 100%; - min-height: $s-32; + min-height: deprecated.$s-32; cursor: pointer; color: var(--layer-row-foreground-color); - padding-left: calc($s-24 * var(--tree-depth, 0) + $s-8); - border: $s-2 solid transparent; - gap: $s-2; + padding-left: calc(deprecated.$s-24 * var(--tree-depth, 0) + deprecated.$s-8); + border: deprecated.$s-2 solid transparent; + gap: deprecated.$s-2; &.dnd-over-bot { - border-bottom: $s-2 solid var(--layer-row-foreground-color-hover); + border-bottom: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } &.dnd-over-top { - border-top: $s-2 solid var(--layer-row-foreground-color-hover); + border-top: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } &.dnd-over { - border: $s-2 solid var(--layer-row-foreground-color-hover); + border: deprecated.$s-2 solid var(--layer-row-foreground-color-hover); } } .set-item-group { cursor: unset; - padding-left: calc($s-24 * var(--tree-depth, 0)); + padding-left: calc(deprecated.$s-24 * var(--tree-depth, 0)); gap: 0; } .set-item-group-collapse-button { cursor: pointer; width: auto; - height: $s-28; + height: deprecated.$s-28; } .set-name { - @include textEllipsis; + @include deprecated.textEllipsis; flex-grow: 1; - padding-left: $s-2; + padding-left: deprecated.$s-2; } .icon { flex-shrink: 0; display: flex; align-items: center; - width: $s-20; - height: $s-20; - padding-right: $s-4; + width: deprecated.$s-20; + height: deprecated.$s-20; + padding-right: deprecated.$s-4; } .root-icon { - margin-left: $s-8; + margin-left: deprecated.$s-8; } .checkbox-style { @@ -87,12 +87,12 @@ display: flex; justify-content: center; align-items: center; - width: $s-16; - height: $s-16; - margin-inline: $s-6; + width: deprecated.$s-16; + height: deprecated.$s-16; + margin-inline: deprecated.$s-6; background-color: var(--input-checkbox-background-color-rest); - border: $s-1 solid var(--input-checkbox-border-color-rest); - border-radius: $s-4; + border: deprecated.$s-1 solid var(--input-checkbox-border-color-rest); + border-radius: deprecated.$s-4; padding: 0; } @@ -102,7 +102,7 @@ } .checkbox-disabled { - border: $s-1 solid var(--color-background-quaternary); + border: deprecated.$s-1 solid var(--color-background-quaternary); background-color: var(--color-background-tertiary); } @@ -126,7 +126,7 @@ justify-content: center; align-items: center; width: 100%; - padding: $s-12; + padding: deprecated.$s-12; color: var(--color-foreground-secondary); } .selected-set { @@ -136,27 +136,27 @@ } .collapsabled-icon { - @include buttonStyle; - @include flexCenter; - height: $s-24; - border-radius: $br-8; + @include deprecated.buttonStyle; + @include deprecated.flexCenter; + height: deprecated.$s-24; + border-radius: deprecated.$br-8; &:hover { color: var(--title-foreground-color-hover); } } .editing-node { - @include textEllipsis; - @include bodySmallTypography; - @include removeInputStyle; + @include deprecated.textEllipsis; + @include deprecated.bodySmallTypography; + @include deprecated.removeInputStyle; - border: $s-1 solid var(--input-border-color-focus); - border-radius: $br-8; + border: deprecated.$s-1 solid var(--input-border-color-focus); + border-radius: deprecated.$br-8; color: var(--layer-row-foreground-color-focus); flex-grow: 1; - height: $s-28; + height: deprecated.$s-28; margin: 0; - padding-left: $s-6; + padding-left: deprecated.$s-6; &::placeholder { color: var(--layer-row-foreground-color-placeholder); diff --git a/frontend/src/app/main/ui/workspace/tokens/settings/menu.scss b/frontend/src/app/main/ui/workspace/tokens/settings/menu.scss index 40a297621c..ae5339a979 100644 --- a/frontend/src/app/main/ui/workspace/tokens/settings/menu.scss +++ b/frontend/src/app/main/ui/workspace/tokens/settings/menu.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/spacing.scss" as *; +@use "ds/spacing.scss" as *; -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .setting-modal-overlay { @extend .modal-overlay-base; diff --git a/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs b/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs index 3e8efc67d6..750049166b 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs @@ -35,16 +35,11 @@ (mf/defc token-sets-list* {::mf/private true} [{:keys [tokens-lib]}] - (let [;; FIXME: This is an inneficient operation just for being - ;; ability to check if there are some sets and lookup the - ;; first one when no set is selected, should be REFACTORED; is - ;; inneficient because instead of return the sets as-is (tree) - ;; it firstly makes it a plain seq from tree. - token-sets - (some-> tokens-lib (ctob/get-sets)) + (let [token-sets + (some-> tokens-lib (ctob/get-set-tree)) - selected-token-set-name - (mf/deref refs/selected-token-set-name) + selected-token-set-id + (mf/deref refs/selected-token-set-id) {:keys [token-set-edition-id token-set-new-path]} @@ -56,12 +51,12 @@ (when-not token-set-new-path [:> tsetslist/inline-add-button*]) - [:> h/sortable-container {} + [:> h/sortable-container* {} [:> tsets/sets-list* {:tokens-lib tokens-lib :new-path token-set-new-path :edition-id token-set-edition-id - :selected selected-token-set-name}]]))) + :selected selected-token-set-id}]]))) (mf/defc token-management-section* {::mf/private true} diff --git a/frontend/src/app/main/ui/workspace/tokens/sidebar.scss b/frontend/src/app/main/ui/workspace/tokens/sidebar.scss index bd6bacfe1f..a48adee402 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sidebar.scss +++ b/frontend/src/app/main/ui/workspace/tokens/sidebar.scss @@ -4,16 +4,16 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/typography.scss" as *; -@use "../../ds/spacing.scss" as *; -@import "refactor/common-refactor.scss"; +@use "ds/typography.scss" as *; +@use "ds/spacing.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .sidebar-wrapper { display: grid; grid-template-rows: auto 1fr auto; // Overflow on the bottom section can't be done without hardcoded values for the height // This has to be changed from the wrapping sidebar styles - height: calc(100vh - #{$s-92}); + height: calc(100vh - #{deprecated.$s-92}); overflow: hidden; } @@ -46,7 +46,7 @@ } .section-text-icon { - font-size: $fs-12; + font-size: deprecated.$fs-12; width: var(--sp-l); height: var(--sp-l); display: flex; @@ -76,7 +76,7 @@ display: flex; align-items: center; justify-content: end; - padding: $s-6 var(--sp-s); + padding: deprecated.$s-6 var(--sp-s); text-transform: uppercase; gap: var(--sp-s); background-color: var(--color-background-primary); @@ -86,10 +86,10 @@ .import-export-menu { @extend .menu-dropdown; - top: -#{$s-6}; + top: -#{deprecated.$s-6}; right: 0; translate: 0 -100%; - width: $s-192; + width: deprecated.$s-192; margin: 0; } @@ -119,13 +119,13 @@ position: absolute; left: 0; width: 100%; - padding: $s-3 0 $s-1 0; - height: $s-6; + padding: deprecated.$s-3 0 deprecated.$s-1 0; + height: deprecated.$s-6; cursor: ns-resize; z-index: 1; } .resize-handle-horiz { - border-bottom: $s-2 solid var(--resize-area-border-color); + border-bottom: deprecated.$s-2 solid var(--resize-area-border-color); cursor: ns-resize; } diff --git a/frontend/src/app/main/ui/workspace/tokens/themes.scss b/frontend/src/app/main/ui/workspace/tokens/themes.scss index e15e14a908..a96f9f341a 100644 --- a/frontend/src/app/main/ui/workspace/tokens/themes.scss +++ b/frontend/src/app/main/ui/workspace/tokens/themes.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../ds/typography.scss" as *; -@use "../../ds/_sizes" as *; -@use "../../ds/spacing.scss" as *; +@use "ds/typography.scss" as *; +@use "ds/_sizes" as *; +@use "ds/spacing.scss" as *; .themes-wrapper { padding: var(--sp-m) 0 0 var(--sp-m); diff --git a/frontend/src/app/main/ui/workspace/tokens/themes/create_modal.cljs b/frontend/src/app/main/ui/workspace/tokens/themes/create_modal.cljs index 2c9ac18e42..7eb31aa15b 100644 --- a/frontend/src/app/main/ui/workspace/tokens/themes/create_modal.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/themes/create_modal.cljs @@ -31,9 +31,34 @@ [app.util.i18n :refer [tr]] [app.util.keyboard :as k] [cuerdas.core :as str] + [malli.core :as m] + [malli.error :as me] [potok.v2.core :as ptk] [rumext.v2 :as mf])) +;; Schemas --------------------------------------------------------------------- + +(defn- theme-name-schema + "Generate a dynamic schema validation to check if a theme path derived from the name already exists at `tokens-tree`." + [{:keys [group theme-id tokens-lib]}] + (m/-simple-schema + {:type :token/name-exists + :pred (fn [name] + (if tokens-lib + (let [theme (ctob/get-theme-by-name tokens-lib group name)] + (or (nil? theme) + (= (ctob/get-id theme) theme-id))) + true)) ;; if still no library exists, cannot be duplicate + :type-properties {:error/fn #(tr "workspace.tokens.theme-name-already-exists")}})) + +(defn- validate-theme-name + [tokens-lib group theme-id name] + (let [schema (theme-name-schema {:tokens-lib tokens-lib :theme-id theme-id :group group}) + validation (m/explain schema (str/trim name))] + (me/humanize validation))) + +;; Form Component -------------------------------------------------------------- + (mf/defc empty-themes [{:keys [change-view]}] (let [create-theme @@ -78,7 +103,7 @@ (mf/defc themes-overview [{:keys [change-view]}] - (let [active-theme-ids (mf/deref refs/workspace-active-theme-paths) + (let [active-theme-paths (mf/deref refs/workspace-active-theme-paths) themes-groups (mf/deref refs/workspace-token-theme-tree-no-hidden) create-theme @@ -105,20 +130,20 @@ [:> icon* {:icon-id i/group :class (stl/css :group-title-icon)}] [:> text* {:as "span" :typography "body-medium" :class (stl/css :group-title-name)} group]]]) [:ul {:class (stl/css :theme-group-rows-wrapper)} - (for [[_ {:keys [group name] :as theme}] themes - :let [theme-id (ctob/theme-path theme) - selected? (some? (get active-theme-ids theme-id)) + (for [[_ {:keys [id name] :as theme}] themes + :let [theme-path (ctob/get-theme-path theme) + selected? (some? (get active-theme-paths theme-path)) delete-theme (fn [e] (dom/prevent-default e) (dom/stop-propagation e) - (st/emit! (dwtl/delete-token-theme group name))) + (st/emit! (dwtl/delete-token-theme id))) on-edit-theme (fn [e] (dom/prevent-default e) (dom/stop-propagation e) - (change-view :edit-theme {:theme-path [(:id theme) (:group theme) (:name theme)]}))]] - [:li {:key theme-id + (change-view :edit-theme {:theme-info [(:id theme) (:group theme) (:name theme)]}))]] + [:li {:key theme-path :class (stl/css :theme-row)} [:div {:class (stl/css :theme-switch-row)} @@ -126,7 +151,7 @@ [:div {:on-click (fn [e] (dom/prevent-default e) (dom/stop-propagation e) - (st/emit! (dwtl/toggle-token-theme-active? group name)))} + (st/emit! (dwtl/toggle-token-theme-active? id)))} [:& switch {:name (tr "workspace.tokens.theme-name" name) :on-change (constantly nil) :selected? selected?}]]] @@ -166,25 +191,36 @@ (mf/defc theme-inputs* [{:keys [theme on-change-field]}] - (let [theme-groups (mf/deref refs/workspace-token-theme-groups) + (let [tokens-lib (mf/deref refs/tokens-lib) + theme-groups (mf/deref refs/workspace-token-theme-groups) theme-name-ref (mf/use-ref (:name theme)) - options (map (fn [group] - {:label group - :id group}) - theme-groups) + options (map (fn [group] + {:label group + :id group}) + theme-groups) + current-group* (mf/use-state (:group theme)) + current-group (deref current-group*) + name-errors* (mf/use-state nil) + name-errors (deref name-errors*) on-update-group (mf/use-fn (mf/deps on-change-field) - #(on-change-field :group %)) + (fn [value] + (reset! current-group* value) + (on-change-field :group value))) on-update-name (mf/use-fn - (mf/deps on-change-field) + (mf/deps on-change-field tokens-lib current-group) (fn [event] - (let [value (-> event dom/get-target dom/get-value)] - (on-change-field :name value) - (mf/set-ref-val! theme-name-ref value))))] + (let [value (-> event dom/get-target dom/get-value) + errors (validate-theme-name tokens-lib current-group (ctob/get-id theme) value)] + (reset! name-errors* errors) + (mf/set-ref-val! theme-name-ref value) + (if (empty? errors) + (on-change-field :name value) + (on-change-field :name "")))))] [:div {:class (stl/css :edit-theme-inputs-wrapper)} [:div {:class (stl/css :group-input-wrapper)} @@ -202,6 +238,8 @@ :variant "comfortable" :default-value (mf/ref-val theme-name-ref) :auto-focus true + :hint-type (when-not (empty? name-errors) "error") + :hint-message (first name-errors) :on-change on-update-name}]]])) (mf/defc theme-modal-buttons* @@ -238,7 +276,7 @@ (let [tlib (-> (ctob/make-tokens-lib) (ctob/add-theme theme)) tlib (reduce ctob/add-set tlib sets)] - (ctob/activate-theme tlib (:group theme) (:name theme)))) + (ctob/activate-theme tlib (ctob/get-id theme)))) (mf/defc edit-create-theme* [{:keys [change-view theme on-save is-editing has-prev-view]}] @@ -285,7 +323,7 @@ (mf/use-fn (mf/deps current-theme on-back) (fn [] - (st/emit! (dwtl/delete-token-theme (:group current-theme) (:name current-theme))) + (st/emit! (dwtl/delete-token-theme (ctob/get-id current-theme))) (on-back))) ;; Sets tree handlers @@ -318,9 +356,9 @@ on-click-token-set (mf/use-fn (mf/deps on-toggle-token-set) - (fn [prefixed-set-path-str] - (let [set-name (ctob/prefixed-set-path-string->set-name-string prefixed-set-path-str)] - (on-toggle-token-set set-name))))] + (fn [set-id] + (let [set (ctob/get-set lib set-id)] + (on-toggle-token-set (ctob/get-name set)))))] [:div {:class (stl/css :themes-modal-wrapper)} [:> heading* {:level 2 :typography "headline-medium" :class (stl/css :themes-modal-title)} @@ -370,16 +408,16 @@ (mf/defc edit-theme [{:keys [state change-view]}] - (let [{:keys [theme-path]} state - [_ theme-group theme-name] theme-path - theme (mf/deref (refs/workspace-token-theme theme-group theme-name)) + (let [{:keys [theme-info]} state + [theme-id _ _] theme-info + theme (mf/deref (refs/workspace-token-theme theme-id)) has-prev-view (has-prev-view (:prev-type state)) on-save (mf/use-fn (mf/deps theme) (fn [theme'] - (st/emit! (dwtl/update-token-theme [(:group theme) (:name theme)] theme'))))] + (st/emit! (dwtl/update-token-theme (ctob/get-id theme) theme'))))] [:> edit-create-theme* {:change-view change-view @@ -414,12 +452,12 @@ state (deref state*) change-view (mf/use-fn - (fn [type & {:keys [theme-path]}] + (fn [type & {:keys [theme-info]}] (swap! state* (fn [current-state] (cond-> current-state :always (assoc :type type :prev-type (:type current-state)) - :theme-path (assoc :theme-path theme-path)))))) + :theme-info (assoc :theme-info theme-info)))))) component (case (:type state) :empty-themes empty-themes diff --git a/frontend/src/app/main/ui/workspace/tokens/themes/create_modal.scss b/frontend/src/app/main/ui/workspace/tokens/themes/create_modal.scss index 240eba8c6d..c1cc8b59a4 100644 --- a/frontend/src/app/main/ui/workspace/tokens/themes/create_modal.scss +++ b/frontend/src/app/main/ui/workspace/tokens/themes/create_modal.scss @@ -4,9 +4,9 @@ // // Copyright (c) KALEIDOS INC -@use "../../../ds/_sizes.scss" as *; +@use "ds/_sizes.scss" as *; -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .modal-overlay { @extend .modal-overlay-base; @@ -16,7 +16,7 @@ @extend .modal-container-base; width: 100%; - max-width: $s-512; + max-width: deprecated.$s-512; max-height: unset; user-select: none; } @@ -26,15 +26,14 @@ flex-direction: column; justify-content: center; align-items: center; - gap: $s-12; - padding: $s-72 0; + gap: deprecated.$s-12; + padding: deprecated.$s-72 0; } .themes-modal-wrapper { display: flex; flex-direction: column; - gap: $s-16; - max-height: $s-688; + gap: deprecated.$s-16; } .edit-theme-form { @@ -57,7 +56,7 @@ width: fit-content; display: grid; grid-template-columns: auto auto; - gap: $s-4; + gap: deprecated.$s-4; align-items: center; padding: 0; &:hover { @@ -69,7 +68,7 @@ display: flex; margin-left: auto; justify-content: flex-end; - gap: $s-6; + gap: deprecated.$s-6; } .edit-theme-footer { @@ -98,18 +97,18 @@ .create-theme-wrapper { display: flex; flex-direction: column; - gap: $s-24; + gap: deprecated.$s-24; } .close-btn { position: absolute; - top: $s-8; - right: $s-6; + top: deprecated.$s-8; + right: deprecated.$s-6; } .theme-group-label { color: var(--color-foreground-secondary); - margin: 0 0 $s-12 0; + margin: 0 0 deprecated.$s-12 0; padding: 0; } @@ -117,7 +116,7 @@ display: flex; align-items: center; justify-content: flex-start; - gap: $s-4; + gap: deprecated.$s-4; } .group-title-icon { @@ -126,33 +125,33 @@ .group-title-name { flex-grow: 1; - @include textEllipsis; + @include deprecated.textEllipsis; } .theme-group-rows-wrapper { display: flex; flex-direction: column; - gap: $s-6; + gap: deprecated.$s-6; margin: 0; } .theme-group-wrapper { display: flex; flex-direction: column; - margin-block-start: $s-6; + margin-block-start: deprecated.$s-6; overflow-y: auto; - gap: $s-32; + gap: deprecated.$s-32; } .theme-row { align-items: center; display: flex; justify-content: space-between; - gap: $s-16; + gap: deprecated.$s-16; } .theme-name-row { - @include textEllipsis; + @include deprecated.textEllipsis; flex-grow: 1; } @@ -163,13 +162,13 @@ .theme-actions-row { align-items: center; display: flex; - gap: $s-6; + gap: deprecated.$s-6; flex-shrink: 0; } .sets-count-button { - padding: $s-6; - padding-left: $s-12; + padding: deprecated.$s-6; + padding-left: deprecated.$s-12; } .label-wrapper { @@ -182,32 +181,32 @@ .edit-theme-wrapper { display: flex; flex-direction: column; - gap: $s-24; + gap: deprecated.$s-24; inline-size: 100%; } .sets-list-wrapper { - border: $s-1 solid color-mix(in hsl, var(--color-foreground-secondary) 30%, transparent); - border-radius: $s-8; + border: deprecated.$s-1 solid color-mix(in hsl, var(--color-foreground-secondary) 30%, transparent); + border-radius: deprecated.$s-8; overflow-y: auto; - max-height: $s-452; + max-height: deprecated.$s-452; } .sets-count-empty-button { text-transform: lowercase; - padding: $s-6; - padding-left: $s-12; + padding: deprecated.$s-6; + padding-left: deprecated.$s-12; } .group-input-wrapper { position: relative; display: flex; flex-direction: column; - gap: $s-4; + gap: deprecated.$s-4; } .edit-theme-inputs-wrapper { display: grid; grid-template-columns: 0.6fr 1fr; - gap: $s-12; + gap: deprecated.$s-12; } diff --git a/frontend/src/app/main/ui/workspace/tokens/themes/theme_selector.cljs b/frontend/src/app/main/ui/workspace/tokens/themes/theme_selector.cljs index bdd84cfed3..a4289545b1 100644 --- a/frontend/src/app/main/ui/workspace/tokens/themes/theme_selector.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/themes/theme_selector.cljs @@ -26,12 +26,12 @@ [{:keys [themes active-theme-paths on-close grouped?]}] (when (seq themes) [:ul {:class (stl/css :theme-options)} - (for [[_ {:keys [group name] :as theme}] themes - :let [theme-id (ctob/theme-path theme) + (for [[_ {:keys [id name] :as theme}] themes + :let [theme-id (ctob/get-theme-path theme) selected? (get active-theme-paths theme-id) select-theme (fn [e] (dom/stop-propagation e) - (st/emit! (dwtl/toggle-token-theme-active? group name)) + (st/emit! (dwtl/toggle-token-theme-active? id)) (on-close))]] [:li {:key theme-id :role "option" diff --git a/frontend/src/app/main/ui/workspace/tokens/themes/theme_selector.scss b/frontend/src/app/main/ui/workspace/tokens/themes/theme_selector.scss index 7819cfb620..867d65eafe 100644 --- a/frontend/src/app/main/ui/workspace/tokens/themes/theme_selector.scss +++ b/frontend/src/app/main/ui/workspace/tokens/themes/theme_selector.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .custom-select { --custom-select-border-color: var(--menu-background-color); @@ -15,13 +15,13 @@ display: grid; grid-template-columns: 1fr auto; align-items: center; - height: $s-32; + height: deprecated.$s-32; width: 100%; margin: 0; - padding: $s-8; - border-radius: $br-8; + padding: deprecated.$s-8; + border-radius: deprecated.$br-8; background-color: var(--custom-select-bg-color); - border: $s-1 solid var(--custom-select-border-color); + border: deprecated.$s-1 solid var(--custom-select-border-color); color: var(--custom-select-text-color); cursor: pointer; &:hover { @@ -41,9 +41,9 @@ } .group { - @include textEllipsis; + @include deprecated.textEllipsis; display: block; - padding: $s-8; + padding: deprecated.$s-8; color: var(--color-foreground-secondary); } @@ -57,14 +57,14 @@ } .dropdown-button { - @include flexCenter; + @include deprecated.flexCenter; color: var(--color-foreground-secondary); } .current-icon { - @include flexCenter; - width: $s-24; - padding-right: $s-4; + @include deprecated.flexCenter; + width: deprecated.$s-24; + padding-right: deprecated.$s-4; } .custom-select-dropdown { @@ -73,17 +73,18 @@ .separator { margin: 0; - height: $s-2; - border-block-start: $s-1 solid color-mix(in hsl, var(--color-foreground-secondary) 20%, transparent); + height: deprecated.$s-2; + border-block-start: deprecated.$s-1 solid + color-mix(in hsl, var(--color-foreground-secondary) 20%, transparent); } .custom-select-dropdown[data-direction="up"] { - bottom: $s-32; + bottom: deprecated.$s-32; top: auto; } .sub-item { - padding-left: $s-16; + padding-left: deprecated.$s-16; } .checked-element-button { @@ -105,7 +106,7 @@ } .check-icon { - @include flexCenter; + @include deprecated.flexCenter; color: var(--icon-foreground-primary); visibility: hidden; } @@ -120,11 +121,11 @@ } .current-label { - @include textEllipsis; + @include deprecated.textEllipsis; } .dropdown-portal { - --menu-max-height: #{$s-400}; + --menu-max-height: #{deprecated.$s-400}; @extend .new-scrollbar; position: absolute; diff --git a/frontend/src/app/main/ui/workspace/top_toolbar.scss b/frontend/src/app/main/ui/workspace/top_toolbar.scss index d9319525c3..53b534569e 100644 --- a/frontend/src/app/main/ui/workspace/top_toolbar.scss +++ b/frontend/src/app/main/ui/workspace/top_toolbar.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .main-toolbar { cursor: initial; @@ -14,36 +14,36 @@ display: flex; align-items: center; flex-direction: column; - height: $s-56; - padding: $s-8 $s-16; - border-radius: $s-8; - border: $s-2 solid var(--panel-border-color); - z-index: $z-index-3; + height: deprecated.$s-56; + padding: deprecated.$s-8 deprecated.$s-16; + border-radius: deprecated.$s-8; + border: deprecated.$s-2 solid var(--panel-border-color); + z-index: deprecated.$z-index-3; background-color: var(--color-background-primary); transition: top 0.3s, height 0.3s, opacity 0.3s; - --toolbar-position-y: #{$s-28}; + --toolbar-position-y: #{deprecated.$s-28}; --toolbar-offset-y: 0px; top: calc(var(--toolbar-position-y) + var(--toolbar-offset-y)); } .main-toolbar-no-rulers { --toolbar-position-y: 0px; - --toolbar-offset-y: #{$s-8}; + --toolbar-offset-y: #{deprecated.$s-8}; } .main-toolbar-hidden { - --toolbar-offset-y: -#{$s-4}; - height: $s-16; - z-index: $z-index-1; - border-radius: 0 0 $s-8 $s-8; + --toolbar-offset-y: -#{deprecated.$s-4}; + height: deprecated.$s-16; + z-index: deprecated.$z-index-1; + border-radius: 0 0 deprecated.$s-8 deprecated.$s-8; border-block-start: 0; .main-toolbar-options { - opacity: $op-0; + opacity: deprecated.$op-0; visibility: hidden; } } @@ -53,7 +53,7 @@ display: flex; align-items: center; margin: 0; - opacity: $op-10; + opacity: deprecated.$op-10; transition: opacity 0.3s ease; li { @@ -63,11 +63,11 @@ .main-toolbar-options-button { @extend .button-tertiary; - height: $s-36; - width: $s-36; + height: deprecated.$s-36; + width: deprecated.$s-36; flex-shrink: 0; - border-radius: $s-8; - margin: 0 $s-2; + border-radius: deprecated.$s-8; + margin: 0 deprecated.$s-2; svg { @extend .button-icon; @@ -80,20 +80,20 @@ } .toolbar-handler { - @include flexCenter; - @include buttonStyle; + @include deprecated.flexCenter; + @include deprecated.buttonStyle; position: absolute; left: 0; bottom: 0; - height: $s-12; + height: deprecated.$s-12; width: 100%; .toolbar-handler-btn { - height: $s-4; + height: deprecated.$s-4; width: 100%; - max-width: $s-64; + max-width: deprecated.$s-64; padding: 0; - border-radius: $s-4; + border-radius: deprecated.$s-4; background-color: var(--palette-handler-background-color); } } diff --git a/frontend/src/app/main/ui/workspace/viewport.cljs b/frontend/src/app/main/ui/workspace/viewport.cljs index f602191ac0..1837f32089 100644 --- a/frontend/src/app/main/ui/workspace/viewport.cljs +++ b/frontend/src/app/main/ui/workspace/viewport.cljs @@ -12,11 +12,13 @@ [app.common.files.helpers :as cfh] [app.common.geom.shapes :as gsh] [app.common.types.color :as clr] + [app.common.types.component :as ctk] [app.common.types.path :as path] [app.common.types.shape :as cts] [app.common.types.shape-tree :as ctt] [app.common.types.shape.layout :as ctl] [app.main.data.workspace.modifiers :as dwm] + [app.main.data.workspace.variants :as dwv] [app.main.features :as features] [app.main.refs :as refs] [app.main.store :as st] @@ -51,7 +53,7 @@ [app.main.ui.workspace.viewport.selection :as selection] [app.main.ui.workspace.viewport.snap-distances :as snap-distances] [app.main.ui.workspace.viewport.snap-points :as snap-points] - [app.main.ui.workspace.viewport.top-bar :refer [path-edition-bar* grid-edition-bar* view-only-bar*]] + [app.main.ui.workspace.viewport.top-bar :refer [grid-edition-bar* path-edition-bar* view-only-bar*]] [app.main.ui.workspace.viewport.utils :as utils] [app.main.ui.workspace.viewport.viewport-ref :refer [create-viewport-ref]] [app.main.ui.workspace.viewport.widgets :as widgets] @@ -261,7 +263,11 @@ single-select? (= (count selected-shapes) 1) - first-shape (first selected-shapes) + first-shape (first selected-shapes) + + show-add-variant? (and single-select? + (or (ctk/is-variant-container? first-shape) + (ctk/is-variant? first-shape))) show-padding? (and (nil? transform) @@ -288,7 +294,13 @@ (:y first-shape) (:y selected-frame)) - rule-area-size (/ rulers/ruler-area-size zoom)] + rule-area-size (/ rulers/ruler-area-size zoom) + + add-variant + (mf/use-fn + (mf/deps first-shape) + #(st/emit! + (dwv/add-new-variant (:id first-shape))))] (hooks/setup-dom-events zoom disable-paste in-viewport? read-only? drawing-tool path-drawing?) (hooks/setup-viewport-size vport viewport-ref) @@ -536,11 +548,11 @@ :alt? @alt? :shift? @shift?}]) - [:& widgets/frame-titles + [:> widgets/frame-titles* {:objects base-objects :selected selected :zoom zoom - :show-artboard-names? show-artboard-names? + :is-show-artboard-names show-artboard-names? :on-frame-enter on-frame-enter :on-frame-leave on-frame-leave :on-frame-select on-frame-select @@ -571,9 +583,8 @@ :focus focus}]) (when show-pixel-grid? - [:& widgets/pixel-grid - {:vbox vbox - :zoom zoom}]) + [:> widgets/pixel-grid* {:vbox vbox + :zoom zoom}]) (when show-snap-points? [:& snap-points/snap-points @@ -596,13 +607,17 @@ :page-id page-id}]) (when show-cursor-tooltip? - [:& widgets/cursor-tooltip - {:zoom zoom - :tooltip tooltip}]) + [:> widgets/cursor-tooltip* {:zoom zoom + :tooltip tooltip}]) (when show-selrect? - [:& widgets/selection-rect {:data selrect - :zoom zoom}]) + [:> widgets/selection-rect* {:data selrect + :zoom zoom}]) + + (when show-add-variant? + [:> widgets/button-add* {:shape first-shape + :zoom zoom + :on-click add-variant}]) (when show-presence? [:& presence/active-cursors diff --git a/frontend/src/app/main/ui/workspace/viewport.scss b/frontend/src/app/main/ui/workspace/viewport.scss index aa6c1789fd..89ebd06403 100644 --- a/frontend/src/app/main/ui/workspace/viewport.scss +++ b/frontend/src/app/main/ui/workspace/viewport.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@use "common/refactor/common-refactor.scss" as *; +@use "refactor/common-refactor.scss" as deprecated; .viewport { cursor: none; @@ -35,5 +35,5 @@ left: 0; bottom: 0; right: 0; - z-index: $z-index-1; + z-index: deprecated.$z-index-1; } diff --git a/frontend/src/app/main/ui/workspace/viewport/comments.scss b/frontend/src/app/main/ui/workspace/viewport/comments.scss index c1fc4cf573..2e6b283f86 100644 --- a/frontend/src/app/main/ui/workspace/viewport/comments.scss +++ b/frontend/src/app/main/ui/workspace/viewport/comments.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .workspace-comments-container { width: 100%; diff --git a/frontend/src/app/main/ui/workspace/viewport/gradients.cljs b/frontend/src/app/main/ui/workspace/viewport/gradients.cljs index 8de28cd740..9573efab01 100644 --- a/frontend/src/app/main/ui/workspace/viewport/gradients.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/gradients.cljs @@ -16,7 +16,6 @@ [app.common.math :as mth] [app.common.types.color :as cc] [app.common.types.fills :as types.fills] - [app.config :as cfg] [app.main.data.workspace.colors :as dc] [app.main.features :as features] [app.main.refs :as refs] @@ -134,8 +133,8 @@ handler-state (mf/use-state {:display? false :offset 0 :hover nil}) - cap-stops? (or (features/use-feature "render-wasm/v1") (contains? cfg/flags :frontend-binary-fills)) - can-add-stop? (if cap-stops? (< (count stops) types.fills/MAX-GRADIENT-STOPS) true) + render-wasm? (features/use-feature "render-wasm/v1") + can-add-stop? (if render-wasm? (< (count stops) types.fills/MAX-GRADIENT-STOPS) true) endpoint-on-pointer-down (fn [position event] @@ -525,8 +524,8 @@ shape (mf/deref shape-ref) state (mf/deref refs/colorpicker) gradient (:gradient state) - cap-stops? (or (features/use-feature "render-wasm/v1") (contains? cfg/flags :frontend-binary-fills)) - stops (if cap-stops? + render-wasm? (features/use-feature "render-wasm/v1") + stops (if render-wasm? (vec (take types.fills/MAX-GRADIENT-STOPS (:stops state))) (:stops state)) editing-stop (:editing-stop state)] diff --git a/frontend/src/app/main/ui/workspace/viewport/grid_layout_editor.scss b/frontend/src/app/main/ui/workspace/viewport/grid_layout_editor.scss index 5201ff7dfd..d0f1549cb1 100644 --- a/frontend/src/app/main/ui/workspace/viewport/grid_layout_editor.scss +++ b/frontend/src/app/main/ui/workspace/viewport/grid_layout_editor.scss @@ -4,7 +4,7 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .grid-track-marker { .marker-shape { @@ -12,7 +12,7 @@ } .marker-text { fill: var(--app-white); - font-size: calc($s-12 / var(--zoom)); + font-size: calc(deprecated.$s-12 / var(--zoom)); font-family: worksans; } } @@ -37,12 +37,12 @@ border: 0; color: var(--grid-editor-marker-text); font-family: worksans; - font-size: calc($fs-12 / var(--zoom)); + font-size: calc(deprecated.$fs-12 / var(--zoom)); font-weight: 400; margin: 0; - max-width: calc($s-60 / var(--zoom)); + max-width: calc(deprecated.$s-60 / var(--zoom)); padding: 0; - padding: calc($s-4 / var(--zoom)); + padding: calc(deprecated.$s-4 / var(--zoom)); text-align: center; &:focus { @@ -57,16 +57,16 @@ margin: 0; padding: 0; position: absolute; - top: calc($s-6 / var(--zoom)); - right: calc($s-20 / var(--zoom)); - width: calc($s-20 / var(--zoom)); - height: calc($s-20 / var(--zoom)); + top: calc(deprecated.$s-6 / var(--zoom)); + right: calc(deprecated.$s-20 / var(--zoom)); + width: calc(deprecated.$s-20 / var(--zoom)); + height: calc(deprecated.$s-20 / var(--zoom)); svg { position: absolute; top: 0; left: 0; - width: calc($s-16 / var(--zoom)); + width: calc(deprecated.$s-16 / var(--zoom)); height: auto; stroke: var(--grid-editor-marker-color); } @@ -84,7 +84,7 @@ .grid-plus-shape { fill: var(--grid-editor-plus-btn-background); stroke: var(--grid-editor-plus-btn-background); - stroke-width: calc($s-1 / var(--zoom)); + stroke-width: calc(deprecated.$s-1 / var(--zoom)); } .grid-plus-icon { @@ -112,44 +112,44 @@ .grid-actions { pointer-events: none; position: absolute; - top: $s-44; + top: deprecated.$s-44; left: 50%; - z-index: $z-index-20; + z-index: deprecated.$z-index-20; } .grid-actions-container { - @include flexRow; + @include deprecated.flexRow; background: var(--panel-background-color); - border-radius: $br-12; - box-shadow: 0px 0px $s-12 0px var(--menu-shadow-color); - gap: $s-8; - height: $s-48; + border-radius: deprecated.$br-12; + box-shadow: 0px 0px deprecated.$s-12 0px var(--menu-shadow-color); + gap: deprecated.$s-8; + height: deprecated.$s-48; margin-left: -50%; - padding: $s-8; + padding: deprecated.$s-8; cursor: initial; pointer-events: initial; - width: $s-512; + width: deprecated.$s-512; } .grid-actions-title { flex: 1; - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--color-foreground-secondary); - padding-left: $s-8; + padding-left: deprecated.$s-8; } .locate-btn { @extend .button-secondary; text-transform: uppercase; - padding: $s-8 $s-20; - font-size: $fs-11; + padding: deprecated.$s-8 deprecated.$s-20; + font-size: deprecated.$fs-11; } .done-btn { @extend .button-primary; text-transform: uppercase; - padding: $s-8 $s-20; - font-size: $fs-11; + padding: deprecated.$s-8 deprecated.$s-20; + font-size: deprecated.$fs-11; } .close-btn { diff --git a/frontend/src/app/main/ui/workspace/viewport/path_actions.scss b/frontend/src/app/main/ui/workspace/viewport/path_actions.scss index c5e5ecc1b2..94c86e6a8d 100644 --- a/frontend/src/app/main/ui/workspace/viewport/path_actions.scss +++ b/frontend/src/app/main/ui/workspace/viewport/path_actions.scss @@ -4,23 +4,23 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .sub-actions { cursor: initial; pointer-events: initial; position: absolute; - top: $s-12; + top: deprecated.$s-12; left: 50%; transform: translateX(-50%); display: flex; align-items: center; - height: $s-56; - padding: $s-8 $s-16; - border-radius: $s-8; - gap: $s-16; - border: $s-2 solid var(--panel-border-color); - z-index: $z-index-3; + height: deprecated.$s-56; + padding: deprecated.$s-8 deprecated.$s-16; + border-radius: deprecated.$s-8; + gap: deprecated.$s-16; + border: deprecated.$s-2 solid var(--panel-border-color); + z-index: deprecated.$z-index-3; background-color: var(--color-background-primary); transition: top 0.3s, @@ -33,20 +33,20 @@ display: flex; align-items: center; margin: 0; - opacity: $op-10; + opacity: deprecated.$op-10; transition: opacity 0.3s ease; } .topbar-btn { --pathbar-icon-color: var(--color-foreground-secondary); @extend .button-tertiary; - height: $s-36; - width: $s-36; + height: deprecated.$s-36; + width: deprecated.$s-36; flex-shrink: 0; background-color: transparent; - border-radius: $s-8; + border-radius: deprecated.$s-8; border: none; - margin: 0 $s-2; + margin: 0 deprecated.$s-2; &.is-toggled { --pathbar-icon-color: var(--button-radio-foreground-color-active); diff --git a/frontend/src/app/main/ui/workspace/viewport/presence.scss b/frontend/src/app/main/ui/workspace/viewport/presence.scss index 26e607a995..d71cd38e21 100644 --- a/frontend/src/app/main/ui/workspace/viewport/presence.scss +++ b/frontend/src/app/main/ui/workspace/viewport/presence.scss @@ -1,15 +1,21 @@ -@use "refactor/common-refactor.scss" as *; +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. +// +// Copyright (c) KALEIDOS INC + +@use "refactor/common-refactor.scss" as deprecated; .profile-name { width: fit-content; font-family: worksans; padding: 2px 12px; - border-radius: $br-4; + border-radius: deprecated.$br-4; display: flex; align-items: center; height: 20px; - font-size: $fs-12; - line-height: $lh-150; + font-size: deprecated.$fs-12; + line-height: deprecated.$lh-150; } .multiuser-cursor { diff --git a/frontend/src/app/main/ui/workspace/viewport/top_bar.scss b/frontend/src/app/main/ui/workspace/viewport/top_bar.scss index 9109d8e8ba..802dc32ab7 100644 --- a/frontend/src/app/main/ui/workspace/viewport/top_bar.scss +++ b/frontend/src/app/main/ui/workspace/viewport/top_bar.scss @@ -4,51 +4,51 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "refactor/common-refactor.scss" as deprecated; .viewport-actions, .viewport-actions-path { pointer-events: none; position: absolute; - --actions-toolbar-position-y: #{$s-28}; - --actions-toolbar-offset-y: #{$s-6}; + --actions-toolbar-position-y: #{deprecated.$s-28}; + --actions-toolbar-offset-y: #{deprecated.$s-6}; top: calc(var(--actions-toolbar-position-y) + var(--actions-toolbar-offset-y)); left: 50%; - z-index: $z-index-20; + z-index: deprecated.$z-index-20; } .viewport-actions-path { - z-index: $z-index-3; + z-index: deprecated.$z-index-3; } .viewport-actions-container { - @include flexRow; + @include deprecated.flexRow; background: var(--panel-background-color); - border-radius: $br-12; - box-shadow: 0 0 $s-12 0 var(--menu-shadow-color); - gap: $s-8; - height: $s-48; + border-radius: deprecated.$br-12; + box-shadow: 0 0 deprecated.$s-12 0 var(--menu-shadow-color); + gap: deprecated.$s-8; + height: deprecated.$s-48; margin-left: -50%; - padding: $s-8; + padding: deprecated.$s-8; cursor: initial; pointer-events: initial; - width: $s-400; - border: $s-2 solid var(--panel-border-color); + width: deprecated.$s-400; + border: deprecated.$s-2 solid var(--panel-border-color); } .viewport-actions-title { flex: 1; - font-size: $fs-12; + font-size: deprecated.$fs-12; color: var(--color-foreground-secondary); - padding-left: $s-8; + padding-left: deprecated.$s-8; } .done-btn { @extend .button-primary; text-transform: uppercase; - padding: $s-8 $s-20; - font-size: $fs-11; + padding: deprecated.$s-8 deprecated.$s-20; + font-size: deprecated.$fs-11; } .viewport-actions-no-rulers { diff --git a/frontend/src/app/main/ui/workspace/viewport/widgets.cljs b/frontend/src/app/main/ui/workspace/viewport/widgets.cljs index b017e7bd78..e494af80ef 100644 --- a/frontend/src/app/main/ui/workspace/viewport/widgets.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/widgets.cljs @@ -22,8 +22,8 @@ [app.main.store :as st] [app.main.streams :as ms] [app.main.ui.context :as ctx] + [app.main.ui.ds.foundations.assets.icon :as i :refer [icon*]] [app.main.ui.hooks :as hooks] - [app.main.ui.icons :as deprecated-icon] [app.main.ui.workspace.viewport.utils :as vwu] [app.util.debug :as dbg] [app.util.dom :as dom] @@ -32,7 +32,7 @@ [cuerdas.core :as str] [rumext.v2 :as mf])) -(mf/defc pixel-grid +(mf/defc pixel-grid* [{:keys [vbox zoom]}] [:g.pixel-grid [:defs @@ -53,8 +53,8 @@ :fill (str "url(#pixel-grid)") :style {:pointer-events "none"}}]]) -(mf/defc cursor-tooltip - [{:keys [zoom tooltip] :as props}] +(mf/defc cursor-tooltip* + [{:keys [zoom tooltip]}] (let [coords (some-> (hooks/use-rxsub ms/mouse-position) (gpt/divide (gpt/point zoom zoom))) pos-x (- (:x coords) 100) @@ -63,9 +63,9 @@ [:foreignObject {:width 200 :height 100 :style {:text-align "center"}} [:span tooltip]]])) -(mf/defc selection-rect +(mf/defc selection-rect* {:wrap [mf/memo]} - [{:keys [data zoom] :as props}] + [{:keys [data zoom]}] (when data [:rect.selection-rect {:x (:x data) @@ -83,14 +83,14 @@ {::mf/wrap [mf/memo #(mf/deferred % ts/raf)] ::mf/forward-ref true} - [{:keys [frame selected? zoom show-artboard-names? show-id? on-frame-enter - on-frame-leave on-frame-select grid-edition?]} external-ref] + [{:keys [frame zoom is-selected is-show-artboard-names is-show-id is-grid-edition + on-frame-enter on-frame-leave on-frame-select]} external-ref] (let [workspace-read-only? (mf/use-ctx ctx/workspace-read-only?) ;; Note that we don't use mf/deref to avoid a repaint dependency here objects (deref refs/workspace-page-objects) - color (if selected? + color (if is-selected (if (or (ctn/in-any-component? objects frame) (ctk/is-variant-container? frame)) "var(--assets-component-hightlight)" "var(--color-accent-tertiary)") @@ -134,7 +134,7 @@ is-variant? (:is-variant-container frame) text-width (* (:width frame) zoom) - show-icon? (and (or (:use-for-thumbnail frame) grid-edition? main-instance? is-variant?) + show-icon? (and (or (:use-for-thumbnail frame) is-grid-edition main-instance? is-variant?) (not (<= text-width 15))) text-pos-x (if show-icon? 15 0) @@ -182,8 +182,8 @@ (when (not (:hidden frame)) [:g.frame-title {:id (dm/str "frame-title-" (:id frame)) - :data-edit-grid grid-edition? - :transform (vwu/title-transform frame zoom grid-edition?) + :data-edit-grid is-grid-edition + :transform (vwu/title-transform frame zoom is-grid-edition) :pointer-events (when (:blocked frame) "none")} (when show-icon? [:svg {:x 0 @@ -193,12 +193,12 @@ :class "workspace-frame-icon" :style {:stroke color :fill "none"} - :visibility (if show-artboard-names? "visible" "hidden")} + :visibility (if is-show-artboard-names "visible" "hidden")} (cond (:use-for-thumbnail frame) [:use {:href "#icon-boards-thumbnail"}] - grid-edition? [:use {:href "#icon-grid"}] - main-instance? [:use {:href "#icon-component"}] - is-variant? [:use {:href "#icon-component"}])]) + is-grid-edition [:use {:href "#icon-grid"}] + main-instance? [:use {:href "#icon-component"}] + is-variant? [:use {:href "#icon-component"}])]) (if ^boolean edition? ;; Case when edition? is true @@ -206,12 +206,12 @@ :y -15 :width (max 0 (- text-width text-pos-x)) :height 22 - :class (stl/css :workspace-frame-label-wrapper) + :class (stl/css :frame-title-wrapper) :style {:fill color} - :visibility (if show-artboard-names? "visible" "hidden")} + :visibility (if is-show-artboard-names "visible" "hidden")} [:input {:type "text" - :class (stl/css :workspace-frame-label - :element-name-input) + :class (stl/css :frame-title-label + :frame-title-input) :style {:color color} :auto-focus true :on-key-down on-key-down @@ -223,10 +223,10 @@ :y -11 :width (max 0 (- text-width text-pos-x)) :height 20 - :class (stl/css :workspace-frame-label-wrapper) + :class (stl/css :frame-title-wrapper) :style {:fill color} - :visibility (if show-artboard-names? "visible" "hidden")} - [:div {:class (stl/css :workspace-frame-label) + :visibility (if is-show-artboard-names "visible" "hidden")} + [:div {:class (stl/css :frame-title-label) :style {:color color} :ref ref :on-pointer-down on-pointer-down @@ -234,31 +234,24 @@ :on-context-menu on-context-menu :on-pointer-enter on-pointer-enter :on-pointer-leave on-pointer-leave} - (if show-id? + (if is-show-id (dm/str (:id frame) " - " (:name frame)) (:name frame))]])]))) -(mf/defc frame-titles - {::mf/wrap-props false - ::mf/wrap [mf/memo]} - [props] - (let [objects (unchecked-get props "objects") - zoom (unchecked-get props "zoom") - selected (or (unchecked-get props "selected") #{}) - show-artboard-names? (unchecked-get props "show-artboard-names?") - on-frame-enter (unchecked-get props "on-frame-enter") - on-frame-leave (unchecked-get props "on-frame-leave") - on-frame-select (unchecked-get props "on-frame-select") - shapes (ctt/get-frames objects {:skip-copies? true}) - shapes (if (dbg/enabled? :shape-titles) - (into (set shapes) - (map (d/getf objects)) - selected) - shapes) - focus (unchecked-get props "focus") +(mf/defc frame-titles* + {::mf/wrap [mf/memo]} + [{:keys [objects zoom selected focus is-show-artboard-names + on-frame-enter on-frame-leave on-frame-select]}] + (let [selected (or selected #{}) + shapes (ctt/get-frames objects {:skip-copies? true}) + shapes (if (dbg/enabled? :shape-titles) + (into (set shapes) + (map (d/getf objects)) + selected) + shapes) - edition (mf/deref refs/selected-edition) - grid-edition? (ctl/grid-layout? objects edition)] + edition (mf/deref refs/selected-edition) + grid-edition? (ctl/grid-layout? objects edition)] [:g.frame-titles (for [{:keys [id parent-id] :as shape} shapes] @@ -268,17 +261,16 @@ (or (empty? focus) (contains? focus id))) [:& frame-title {:key (dm/str "frame-title-" id) :frame shape - :selected? (contains? selected id) :zoom zoom - :show-artboard-names? show-artboard-names? - :show-id? (dbg/enabled? :shape-titles) + :is-selected (contains? selected id) + :is-show-artboard-names is-show-artboard-names + :is-show-id (dbg/enabled? :shape-titles) + :is-grid-edition (and (= id edition) grid-edition?) :on-frame-enter on-frame-enter :on-frame-leave on-frame-leave - :on-frame-select on-frame-select - :grid-edition? (and (= id edition) grid-edition?)}]))])) + :on-frame-select on-frame-select}]))])) (mf/defc frame-flow* - {::mf/props :obj} [{:keys [flow frame is-selected zoom on-frame-enter on-frame-leave on-frame-select]}] (let [x (dm/get-prop frame :x) y (dm/get-prop frame :y) @@ -323,18 +315,18 @@ :width 100000 :height 24 :transform (vwu/text-transform pos zoom)} - [:div {:class (stl/css-case :flow-badge true - :selected is-selected)} - [:div {:class (stl/css :content) + [:div {:class (stl/css :frame-flow-badge-wrapper)} + [:div {:class (stl/css-case :frame-flow-badge-content true + :selected is-selected) :on-pointer-down on-pointer-down :on-double-click on-double-click :on-pointer-enter on-pointer-enter :on-pointer-leave on-pointer-leave} - deprecated-icon/play + [:> icon* {:icon-id i/play + :size "s"}] [:span flow-name]]]])) (mf/defc frame-flows* - {::mf/props :obj} [{:keys [flows objects zoom selected on-frame-enter on-frame-leave on-frame-select]}] [:g.frame-flows (for [[flow-id flow] flows] @@ -349,3 +341,39 @@ :on-frame-leave on-frame-leave :on-frame-select on-frame-select}]))]) +(mf/defc button-add* + [{:keys [shape zoom on-click]}] + (let [{:keys [x2 y2 height]} (:selrect shape) + + center-x (+ x2 (/ 22 zoom)) + center-y (- y2 (/ height 2)) + + rect-x (- center-x (/ 16 zoom)) + rect-y (- center-y (/ 16 zoom)) + rect-sz (/ 32 zoom) + rect-r (/ 8 zoom) + + icon-x (- center-x (/ 8 zoom)) + icon-y (- center-y (/ 8 zoom)) + icon-sz (/ 16 zoom) + + handle-click + (mf/use-fn + (mf/deps on-click) + #(when (fn? on-click) + (on-click)))] + + [:g {:class (stl/css :button-add-wrapper) + :on-click handle-click} + [:rect {:x rect-x + :y rect-y + :width rect-sz + :height rect-sz + :rx rect-r + :ry rect-r}] + [:use {:class (stl/css :button-add-icon) + :x icon-x + :y icon-y + :width icon-sz + :height icon-sz + :href "#icon-add"}]])) diff --git a/frontend/src/app/main/ui/workspace/viewport/widgets.scss b/frontend/src/app/main/ui/workspace/viewport/widgets.scss index 6df8e7a7d4..319888776c 100644 --- a/frontend/src/app/main/ui/workspace/viewport/widgets.scss +++ b/frontend/src/app/main/ui/workspace/viewport/widgets.scss @@ -4,72 +4,49 @@ // // Copyright (c) KALEIDOS INC -@import "refactor/common-refactor.scss"; +@use "ds/_borders.scss" as *; +@use "ds/_sizes.scss" as *; +@use "ds/colors.scss" as *; +@use "ds/typography.scss" as t; -.flow-element { - display: flex; - align-items: center; +.frame-flow-badge-wrapper { + --frame-flow-badge-background-color: var(--color-background-tertiary); + --frame-flow-badge-background-color-hover: var(--color-background-quaternary); + --frame-flow-badge-foreground-color: var(--color-foreground-secondary); + --frame-flow-badge-foreground-color-hover: var(--color-accent-primary); - .element-label { - } - - .flow-name { - cursor: pointer; - } - - & input.element-name { - background: transparent; - } -} - -.flow-badge { cursor: pointer; display: flex; - .content { - @include bodySmallTypography; - display: flex; - align-items: center; - height: $s-24; - border-radius: $br-6; - background-color: var(--flow-tag-background-color); - svg { - @extend .button-icon; - height: $s-24; - width: $s-12; - stroke: var(--icon-foreground); - margin: 0 $s-8; - } +} - span { - height: 100%; - display: flex; - align-items: center; - justify-content: center; - margin-right: $s-8; - color: var(--flow-tag-foreground-color); - } - } +.frame-flow-badge-content { + @include t.use-typography("body-small"); + display: flex; + align-items: center; + justify-content: center; + gap: var(--sp-xs); + border-radius: $br-6; + padding-inline-start: var(--sp-xs); + padding-inline-end: var(--sp-s); + height: var(--sp-xxl); + background-color: var(--frame-flow-badge-background-color); + color: var(--frame-flow-badge-foreground-color); - &.selected .content, - &:hover .content { - background-color: var(--flow-tag-background-color-hover); - svg { - stroke: var(--flow-tag-foreground-color-hover); - } - - span { - color: var(--flow-tag-foreground-color-hover); - } + &:hover, + &.selected { + --frame-flow-badge-foreground-color: var(--frame-flow-badge-foreground-color-hover); + --frame-flow-badge-background-color: var(--frame-flow-badge-background-color-hover); } } -.workspace-frame-label-wrapper { +.frame-title-wrapper { + --frame-title-input-border-color-focus: var(--color-accent-primary); + pointer-events: none; } -.workspace-frame-label { - font-size: $fs-12; - color: black; +.frame-title-label { + @include t.use-typography("body-small"); text-overflow: ellipsis; overflow: hidden; white-space: nowrap; @@ -77,16 +54,30 @@ pointer-events: all; } -.element-name-input { - @include removeInputStyle; - @include bodySmallTypography; - @include removeInputStyle; +.frame-title-input { + @include t.use-typography("body-small"); flex-grow: 1; - height: 20px; - margin: 0; - padding-left: $s-6; - border: $s-1 solid var(--input-border-color-focus); - color: var(--layer-row-foreground-color); width: 100%; max-width: initial; + background: none; + outline: none; + height: var(--sp-xl); + padding-inline-start: var(--sp-s); + border: $b-1 solid var(--frame-title-input-border-color-focus); +} + +.button-add-wrapper { + --button-add-background-color: var(--color-accent-action); + --button-add-background-color-hover: var(--color-accent-action-hover); + --button-add-icon-color: var(--color-static-white); + + cursor: pointer; + fill: var(--button-add-background-color); + &:hover { + --button-add-background-color: var(--button-add-background-color-hover); + } +} + +.button-add-icon { + stroke: var(--button-add-icon-color); } diff --git a/frontend/src/app/main/ui/workspace/viewport_wasm.cljs b/frontend/src/app/main/ui/workspace/viewport_wasm.cljs index 3ebfd80860..67e4a1d9cc 100644 --- a/frontend/src/app/main/ui/workspace/viewport_wasm.cljs +++ b/frontend/src/app/main/ui/workspace/viewport_wasm.cljs @@ -516,11 +516,11 @@ :alt? @alt? :shift? @shift?}]) - [:& widgets/frame-titles + [:> widgets/frame-titles* {:objects (with-meta objects-modified nil) :selected selected :zoom zoom - :show-artboard-names? show-artboard-names? + :is-show-artboard-names show-artboard-names? :on-frame-enter on-frame-enter :on-frame-leave on-frame-leave :on-frame-select on-frame-select @@ -551,9 +551,8 @@ :focus focus}]) (when show-pixel-grid? - [:& widgets/pixel-grid - {:vbox vbox - :zoom zoom}]) + [:> widgets/pixel-grid* {:vbox vbox + :zoom zoom}]) (when show-snap-points? [:& snap-points/snap-points @@ -576,13 +575,12 @@ :page-id page-id}]) (when show-cursor-tooltip? - [:& widgets/cursor-tooltip - {:zoom zoom - :tooltip tooltip}]) + [:> widgets/cursor-tooltip* {:zoom zoom + :tooltip tooltip}]) (when show-selrect? - [:& widgets/selection-rect {:data selrect - :zoom zoom}]) + [:> widgets/selection-rect* {:data selrect + :zoom zoom}]) (when show-presence? [:& presence/active-cursors diff --git a/frontend/src/app/main/worker.cljs b/frontend/src/app/main/worker.cljs index a310f566e8..aae9000556 100644 --- a/frontend/src/app/main/worker.cljs +++ b/frontend/src/app/main/worker.cljs @@ -21,7 +21,6 @@ :config {:public-uri cf/public-uri :build-data cf/build-date :version cf/version}}) - (set! instance worker))) (defn ask! @@ -34,6 +33,16 @@ (uw/ask! instance message transfer) (rx/empty)))) +(defn emit! + ([message] + (if instance + (uw/emit! instance message) + (rx/empty))) + ([message transfer] + (if instance + (uw/emit! instance message transfer) + (rx/empty)))) + (defn ask-buffered! ([message] (if instance diff --git a/frontend/src/app/plugins/shape.cljs b/frontend/src/app/plugins/shape.cljs index 73384ea344..4d1b71038e 100644 --- a/frontend/src/app/plugins/shape.cljs +++ b/frontend/src/app/plugins/shape.cljs @@ -11,6 +11,7 @@ [app.common.files.helpers :as cfh] [app.common.geom.rect :as grc] [app.common.geom.shapes :as gsh] + [app.common.path-names :as cpn] [app.common.record :as crc] [app.common.schema :as sm] [app.common.spec :as us] @@ -200,7 +201,7 @@ :set (fn [self value] (let [id (obj/get self "$id") - value (when (string? value) (-> value str/trim cfh/clean-path)) + value (when (string? value) (-> value str/trim cpn/clean-path)) valid? (and (some? value) (not (str/ends-with? value "/")) (not (str/blank? value)))] diff --git a/frontend/src/app/render_wasm/api.cljs b/frontend/src/app/render_wasm/api.cljs index f256350064..38326e410e 100644 --- a/frontend/src/app/render_wasm/api.cljs +++ b/frontend/src/app/render_wasm/api.cljs @@ -10,6 +10,7 @@ ["react-dom/server" :as rds] [app.common.data :as d :refer [not-empty?]] [app.common.data.macros :as dm] + [app.common.math :as mth] [app.common.types.fills :as types.fills] [app.common.types.fills.impl :as types.fills.impl] [app.common.types.path :as path] @@ -47,9 +48,11 @@ (def ^:const MODIFIER-U32-SIZE (/ MODIFIER-U8-SIZE 4)) (def ^:const MODIFIER-TRANSFORM-U8-OFFSET-SIZE 16) -(def ^:const GRID-LAYOUT-ROW-U8-SIZE 5) -(def ^:const GRID-LAYOUT-COLUMN-U8-SIZE 5) -(def ^:const GRID-LAYOUT-CELL-U8-SIZE 37) +(def ^:const GRID-LAYOUT-ROW-U8-SIZE 8) +(def ^:const GRID-LAYOUT-COLUMN-U8-SIZE 8) +(def ^:const GRID-LAYOUT-CELL-U8-SIZE 36) + +(def ^:const MAX_BUFFER_CHUNK_SIZE (* 256 1024)) (def dpr (if use-dpr? (if (exists? js/window) js/window.devicePixelRatio 1.0) 1.0)) @@ -170,11 +173,10 @@ [string] (+ (count string) 1)) + (defn- fetch-image [shape-id image-id] - (let [buffer-shape-id (uuid/get-u32 shape-id) - buffer-image-id (uuid/get-u32 image-id) - url (cf/resolve-file-media {:id image-id})] + (let [url (cf/resolve-file-media {:id image-id})] {:key url :callback #(->> (http/send! {:method :get :uri url @@ -182,23 +184,32 @@ (rx/map :body) (rx/mapcat wapi/read-file-as-array-buffer) (rx/map (fn [image] - ;; FIXME use bigger heap ptr size if it - ;; is possible (if image size modulo - ;; permits it) - (let [size (.-byteLength image) - offset (mem/alloc size) - heap (mem/get-heap-u8) - data (js/Uint8Array. image)] - (.set heap data offset) - (h/call wasm/internal-module "_store_image" - (aget buffer-shape-id 0) - (aget buffer-shape-id 1) - (aget buffer-shape-id 2) - (aget buffer-shape-id 3) - (aget buffer-image-id 0) - (aget buffer-image-id 1) - (aget buffer-image-id 2) - (aget buffer-image-id 3)) + (let [size (.-byteLength image) + padded-size (if (zero? (mod size 4)) size (+ size (- 4 (mod size 4)))) + total-bytes (+ 32 padded-size) ; UUID size + padded size + offset (mem/alloc->offset-32 total-bytes) + heap32 (mem/get-heap-u32) + data (js/Uint8Array. image) + padded (js/Uint8Array. padded-size)] + + ;; 1. Set shape id + (mem.h32/write-uuid offset heap32 shape-id) + + ;; 2. Set image id + (mem.h32/write-uuid (+ offset 4) heap32 image-id) + + ;; 3. Adjust padding on image data + (.set padded data) + (when (< size padded-size) + (dotimes [i (- padded-size size)] + (aset padded (+ size i) 0))) + + ;; 4. Set image data + (let [u32view (js/Uint32Array. (.-buffer padded)) + image-u32-offset (+ offset 8)] + (.set heap32 u32view image-u32-offset)) + + (h/call wasm/internal-module "_store_image") true))))})) (defn- get-fill-images @@ -309,15 +320,27 @@ (h/call wasm/internal-module "stringToUTF8" str offset size) (h/call wasm/internal-module "_set_shape_path_attrs" (count attrs)))) -;; FIXME: revisit on heap refactor is merged to use u32 instead u8 (defn set-shape-path-content + "Upload path content in chunks to WASM." [content] - (let [pdata (path/content content) - size (path/get-byte-size content) - offset (mem/alloc size) - heap (mem/get-heap-u8)] - (path/write-to pdata (.-buffer heap) offset) - (h/call wasm/internal-module "_set_shape_path_content"))) + (let [chunk-size (quot MAX_BUFFER_CHUNK_SIZE 4) + buffer-size (path/get-byte-size content) + padded-size (* 4 (mth/ceil (/ buffer-size 4))) + buffer (js/Uint8Array. padded-size)] + (path/write-to content (.-buffer buffer) 0) + (h/call wasm/internal-module "_start_shape_path_buffer") + (let [heapu32 (mem/get-heap-u32)] + (loop [offset 0] + (when (< offset padded-size) + (let [end (min padded-size (+ offset (* chunk-size 4))) + chunk (.subarray buffer offset end) + chunk-u32 (js/Uint32Array. chunk.buffer chunk.byteOffset (quot (.-length chunk) 4)) + offset-size (.-length chunk-u32) + heap-offset (mem/alloc->offset-32 (* 4 offset-size))] + (.set heapu32 chunk-u32 heap-offset) + (h/call wasm/internal-module "_set_shape_path_chunk_buffer") + (recur end))))) + (h/call wasm/internal-module "_set_shape_path_buffer"))) (defn set-shape-svg-raw-content [content] @@ -364,30 +387,19 @@ [bool-type] (h/call wasm/internal-module "_set_shape_bool_type" (sr/translate-bool-type bool-type))) -(defn- translate-blur-type - [blur-type] - (case blur-type - :layer-blur 1 - 0)) - (defn set-shape-blur [blur] - (let [type (-> blur :type sr/translate-blur-type) - hidden (:hidden blur) - value (:value blur)] - (h/call wasm/internal-module "_set_shape_blur" type hidden value))) + (if (some? blur) + (let [type (-> blur :type sr/translate-blur-type) + hidden (:hidden blur) + value (:value blur)] + (h/call wasm/internal-module "_set_shape_blur" type hidden value)) + (h/call wasm/internal-module "_clear_shape_blur"))) (defn set-shape-corners - [shape] - (let [r1 (get shape :r1) - r2 (get shape :r2) - r3 (get shape :r3) - r4 (get shape :r4)] - (h/call wasm/internal-module "_set_shape_corners" - (d/nilv r1 0) - (d/nilv r2 0) - (d/nilv r3 0) - (d/nilv r4 0)))) + [corners] + (let [[r1 r2 r3 r4] (map #(d/nilv % 0) corners)] + (h/call wasm/internal-module "_set_shape_corners" r1 r2 r3 r4))) (defn set-flex-layout [shape] @@ -464,13 +476,9 @@ dview (mem/get-data-view)] (reduce (fn [offset {:keys [type value]}] - ;; NOTE: because of the nature of the grid row data - ;; structure memory layout we can't use fully 32 bits - ;; alligned writes, so for heteregeneus writes we use - ;; the buffer abstraction (DataView) for perform - ;; surgical writes. (-> offset (mem/write-u8 dview (sr/translate-grid-track-type type)) + (+ 3) ;; padding (mem/write-f32 dview value) (mem/assert-written offset GRID-LAYOUT-ROW-U8-SIZE))) @@ -486,17 +494,11 @@ dview (mem/get-data-view)] (reduce (fn [offset {:keys [type value]}] - ;; NOTE: because of the nature of the grid column data - ;; structure memory layout we can't use fully 32 bits - ;; alligned writes, so for heteregeneus writes we use - ;; the buffer abstraction (DataView) for perform - ;; surgical writes. (-> offset (mem/write-u8 dview (sr/translate-grid-track-type type)) + (+ 3) ;; padding (mem/write-f32 dview value) (mem/assert-written offset GRID-LAYOUT-COLUMN-U8-SIZE))) - - offset entries) @@ -511,38 +513,17 @@ (reduce-kv (fn [offset _ cell] (let [shape-id (-> (get cell :shapes) first)] (-> offset - ;; row: [u8; 4], (mem/write-i32 dview (get cell :row)) - - ;; row_span: [u8; 4], (mem/write-i32 dview (get cell :row-span)) - - ;; column: [u8; 4], (mem/write-i32 dview (get cell :column)) - - ;; column_span: [u8; 4], (mem/write-i32 dview (get cell :column-span)) - ;; has_align_self: u8, - (mem/write-bool dview (some? (get cell :align-self))) - - ;; align_self: u8, - (mem/write-u8 dview (get cell :align-self)) - - ;; has_justify_self: u8, - (mem/write-bool dview (get cell :justify-self)) - - ;; justify_self: u8, + (mem/write-u8 dview (sr/translate-align-self (get cell :align-self))) (mem/write-u8 dview (sr/translate-justify-self (get cell :justify-self))) - ;; has_shape_id: u8, - ;; (.set heap (sr/bool->u8 (d/not-empty? (:shapes cell))) (+ current-offset 20)) - (mem/write-u8 dview (some? shape-id)) + ;; padding + (+ 2) - ;; shape_id_a: [u8; 4], - ;; shape_id_b: [u8; 4], - ;; shape_id_c: [u8; 4], - ;; shape_id_d: [u8; 4], (mem/write-uuid dview (d/nilv shape-id uuid/zero)) (mem/assert-written offset GRID-LAYOUT-CELL-U8-SIZE)))) @@ -596,7 +577,7 @@ (d/nilv max-w 0) has-min-w (d/nilv min-w 0) - (some? align-self) + (d/nilv align-self 0) is-absolute (d/nilv z-index)))) @@ -644,8 +625,11 @@ shadows)) (defn set-shape-text-content + "This function sets shape text content and returns a stream that loads the needed fonts asynchronously" [shape-id content] + (h/call wasm/internal-module "_clear_shape_text") + (set-shape-vertical-align (get content :vertical-align)) (let [paragraph-set (first (get content :children)) @@ -677,8 +661,12 @@ (let [updated-fonts (-> fonts (cond-> ^boolean emoji? (f/add-emoji-font)) - (f/add-noto-fonts langs))] - (f/store-fonts shape-id updated-fonts)))))) + (f/add-noto-fonts langs)) + result (f/store-fonts shape-id updated-fonts)] + + (h/call wasm/internal-module "_update_shape_text_layout") + + result))))) (defn set-shape-text [shape-id content] @@ -747,7 +735,8 @@ grow-type (get shape :grow-type) blur (get shape :blur) svg-attrs (get shape :svg-attrs) - shadows (get shape :shadow)] + shadows (get shape :shadow) + corners (map #(get shape %) [:r1 :r2 :r3 :r4])] (use-shape id) (set-parent-id parent-id) @@ -761,11 +750,10 @@ (set-shape-opacity opacity) (set-shape-hidden hidden) (set-shape-children children) - (set-shape-corners shape) + (set-shape-corners corners) + (set-shape-blur blur) (when (and (= type :group) masked) (set-masked masked)) - (when (some? blur) - (set-shape-blur blur)) (when (= type :bool) (set-shape-bool-type bool-type)) (when (and (some? content) @@ -803,6 +791,7 @@ (rx/subs! (fn [_] (clear-drawing-cache) (request-render "pending-finished") + (h/call wasm/internal-module "_update_shape_text_layout_for_all") (.dispatchEvent ^js js/document event)))) (do (clear-drawing-cache) @@ -1078,10 +1067,40 @@ (let [uri (cf/resolve-static-asset "js/render_wasm.js")] (->> (js/dynamicImport (str uri)) (p/mcat (fn [module] - (let [default (unchecked-get module "default")] + (let [default (unchecked-get module "default") + serializers #js{:blur-type (unchecked-get module "RawBlurType") + :blend-mode (unchecked-get module "RawBlendMode") + :bool-type (unchecked-get module "RawBoolType") + :font-style (unchecked-get module "RawFontStyle") + :flex-direction (unchecked-get module "RawFlexDirection") + :grid-direction (unchecked-get module "RawGridDirection") + :grow-type (unchecked-get module "RawGrowType") + :align-items (unchecked-get module "RawAlignItems") + :align-self (unchecked-get module "RawAlignSelf") + :align-content (unchecked-get module "RawAlignContent") + :justify-items (unchecked-get module "RawJustifyItems") + :justify-content (unchecked-get module "RawJustifyContent") + :justify-self (unchecked-get module "RawJustifySelf") + :wrap-type (unchecked-get module "RawWrapType") + :grid-track-type (unchecked-get module "RawGridTrackType") + :shadow-style (unchecked-get module "RawShadowStyle") + :stroke-style (unchecked-get module "RawStrokeStyle") + :stroke-cap (unchecked-get module "RawStrokeCap") + :shape-type (unchecked-get module "RawShapeType") + :constraint-h (unchecked-get module "RawConstraintH") + :constraint-v (unchecked-get module "RawConstraintV") + :sizing (unchecked-get module "RawSizing") + :vertical-align (unchecked-get module "RawVerticalAlign") + :fill-data (unchecked-get module "RawFillData") + :text-align (unchecked-get module "RawTextAlign") + :text-direction (unchecked-get module "RawTextDirection") + :text-decoration (unchecked-get module "RawTextDecoration") + :text-transform (unchecked-get module "RawTextTransform") + :segment-data (unchecked-get module "RawSegmentData")}] + (set! wasm/serializers serializers) (default)))) - (p/fmap (fn [module] - (set! wasm/internal-module module) + (p/fmap (fn [default] + (set! wasm/internal-module default) true)) (p/merr (fn [cause] (js/console.error cause) diff --git a/frontend/src/app/render_wasm/api/fonts.cljs b/frontend/src/app/render_wasm/api/fonts.cljs index 7bcb176d06..c6e1f668d8 100644 --- a/frontend/src/app/render_wasm/api/fonts.cljs +++ b/frontend/src/app/render_wasm/api/fonts.cljs @@ -8,6 +8,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] + [app.common.logging :as log] [app.common.uuid :as uuid] [app.config :as cf] [app.main.fonts :as fonts] @@ -98,6 +99,13 @@ (:style font-data) emoji? fallback?) + + (h/call wasm/internal-module "_update_shape_text_layout_for" + (aget shape-id-buffer 0) + (aget shape-id-buffer 1) + (aget shape-id-buffer 2) + (aget shape-id-buffer 3)) + true)) (defn- fetch-font @@ -107,7 +115,12 @@ :uri font-url :response-type :buffer}) (rx/map (fn [{:keys [body]}] - (store-font-buffer shape-id font-data body emoji? fallback?))))}) + (store-font-buffer shape-id font-data body emoji? fallback?))) + (rx/catch (fn [cause] + (log/error :hint "Could not fetch font" + :font-url font-url + :cause cause) + (rx/empty))))}) (defn- google-font-ttf-url [font-id font-variant-id] @@ -217,7 +230,6 @@ [shape-id fonts] (keep (fn [font] (store-font shape-id font)) fonts)) - (defn add-emoji-font [fonts] (conj fonts {:font-id "gfont-noto-color-emoji" @@ -275,7 +287,6 @@ :symbols-2 {:font-id "gfont-noto-sans-symbols-2" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true} :music {:font-id "gfont-noto-music" :font-variant-id "regular" :style 0 :weight 400 :is-fallback true}}) - (defn add-noto-fonts [fonts languages] (reduce (fn [acc lang] (if-let [font (get noto-fonts lang)] diff --git a/frontend/src/app/render_wasm/serializers.cljs b/frontend/src/app/render_wasm/serializers.cljs index cd5feb080f..306a768f8e 100644 --- a/frontend/src/app/render_wasm/serializers.cljs +++ b/frontend/src/app/render_wasm/serializers.cljs @@ -4,10 +4,12 @@ ;; ;; Copyright (c) KALEIDOS INC -(ns app.render-wasm.serializers - (:require - [app.common.uuid :as uuid] - [cuerdas.core :as str])) + (ns app.render-wasm.serializers + (:require + [app.common.data :as d] + [app.common.uuid :as uuid] + [app.render-wasm.wasm :as wasm] + [cuerdas.core :as str])) (defn u8 [value] @@ -56,37 +58,21 @@ (defn translate-shape-type [type] - (case type - :frame 0 - :group 1 - :bool 2 - :rect 3 - :path 4 - :text 5 - :circle 6 - :svg-raw 7 - :image 8)) + (let [values (unchecked-get wasm/serializers "shape-type") + default (unchecked-get values "rect")] + (d/nilv (unchecked-get values (d/name type)) default))) (defn translate-stroke-style [stroke-style] - (case stroke-style - :dotted 1 - :dashed 2 - :mixed 3 - 0)) + (let [values (unchecked-get wasm/serializers "stroke-style") + default (unchecked-get values "solid")] + (d/nilv (unchecked-get values (d/name stroke-style)) default))) (defn translate-stroke-cap [stroke-cap] - (case stroke-cap - :line-arrow 1 - :triangle-arrow 2 - :square-marker 3 - :circle-marker 4 - :diamond-marker 5 - :round 6 - :square 7 - 0)) - + (let [values (unchecked-get wasm/serializers "stroke-cap") + default (unchecked-get values "none")] + (d/nilv (unchecked-get values (d/name stroke-cap)) default))) (defn serialize-path-attrs [svg-attrs] @@ -99,164 +85,107 @@ (defn translate-blend-mode [blend-mode] - (case blend-mode - :normal 3 - :darken 16 - :multiply 24 - :color-burn 19 - :lighten 17 - :screen 14 - :color-dodge 18 - :overlay 15 - :soft-light 21 - :hard-light 20 - :difference 22 - :exclusion 23 - :hue 25 - :saturation 26 - :color 27 - :luminosity 28 - 3)) + (let [values (unchecked-get wasm/serializers "blend-mode") + default (unchecked-get values "normal")] + (d/nilv (unchecked-get values (d/name blend-mode)) default))) (defn translate-constraint-h [type] - (case type - :left 0 - :right 1 - :leftright 2 - :center 3 - :scale 4)) + (let [values (unchecked-get wasm/serializers "constraint-h") + default 5] ;; TODO: fix code in rust so we have a proper None variant + (d/nilv (unchecked-get values (d/name type)) default))) (defn translate-constraint-v [type] - (case type - :top 0 - :bottom 1 - :topbottom 2 - :center 3 - :scale 4)) + (let [values (unchecked-get wasm/serializers "constraint-v") + default 5] ;; TODO: fix code in rust so we have a proper None variant + (d/nilv (unchecked-get values (d/name type)) default))) (defn translate-bool-type [bool-type] - (case bool-type - :union 0 - :difference 1 - :intersection 2 - :exclude 3 - 0)) + (let [values (unchecked-get wasm/serializers "bool-type") + default (unchecked-get values "union")] + (d/nilv (unchecked-get values (d/name bool-type)) default))) + (defn translate-blur-type [blur-type] - (case blur-type - :layer-blur 1 - 0)) + (let [values (unchecked-get wasm/serializers "blur-type") + default (unchecked-get values "layer-blur")] + (d/nilv (unchecked-get values (d/name blur-type)) default))) (defn translate-layout-flex-dir [flex-dir] - (case flex-dir - :row 0 - :row-reverse 1 - :column 2 - :column-reverse 3)) + (let [values (unchecked-get wasm/serializers "flex-direction")] + (unchecked-get values (d/name flex-dir)))) + (defn translate-layout-grid-dir - [flex-dir] - (case flex-dir - :row 0 - :column 1)) + [grid-dir] + (let [values (unchecked-get wasm/serializers "grid-direction")] + (unchecked-get values (d/name grid-dir)))) (defn translate-layout-align-items [align-items] - (case align-items - :start 0 - :end 1 - :center 2 - :stretch 3 - 0)) + (let [values (unchecked-get wasm/serializers "align-items") + default (unchecked-get values "start")] + (d/nilv (unchecked-get values (d/name align-items)) default))) (defn translate-layout-align-content [align-content] - (case align-content - :start 0 - :end 1 - :center 2 - :space-between 3 - :space-around 4 - :space-evenly 5 - :stretch 6 - 6)) + (let [values (unchecked-get wasm/serializers "align-content") + default (unchecked-get values "stretch")] + (d/nilv (unchecked-get values (d/name align-content)) default))) (defn translate-layout-justify-items [justify-items] - (case justify-items - :start 0 - :end 1 - :center 2 - :stretch 3 - 0)) + (let [values (unchecked-get wasm/serializers "justify-items") + default (unchecked-get values "start")] + (d/nilv (unchecked-get values (d/name justify-items)) default))) (defn translate-layout-justify-content [justify-content] - (case justify-content - :start 0 - :end 1 - :center 2 - :space-between 3 - :space-around 4 - :space-evenly 5 - :stretch 6 - 6)) + (let [values (unchecked-get wasm/serializers "justify-content") + default (unchecked-get values "stretch")] + (d/nilv (unchecked-get values (d/name justify-content)) default))) (defn translate-layout-wrap-type [wrap-type] - (case wrap-type - :wrap 0 - :nowrap 1 - 1)) + (let [values (unchecked-get wasm/serializers "wrap-type") + default (unchecked-get values "nowrap")] + (d/nilv (unchecked-get values (d/name wrap-type)) default))) + (defn translate-grid-track-type [type] - (case type - :percent 0 - :flex 1 - :auto 2 - :fixed 3)) + (let [values (unchecked-get wasm/serializers "grid-track-type")] + (unchecked-get values (d/name type)))) (defn translate-layout-sizing - [value] - (case value - :fill 0 - :fix 1 - :auto 2 - 1)) + [sizing] + (let [values (unchecked-get wasm/serializers "sizing") + default (unchecked-get values "fix")] + (d/nilv (unchecked-get values (d/name sizing)) default))) (defn translate-align-self - [value] - (when value - (case value - :auto 0 - :start 1 - :end 2 - :center 3 - :stretch 4))) + [align-self] + (let [values (unchecked-get wasm/serializers "align-self") + default (unchecked-get values "none")] + (d/nilv (unchecked-get values (d/name align-self)) default))) (defn translate-justify-self - [value] - (when value - (case value - :auto 0 - :start 1 - :end 2 - :center 3 - :stretch 4))) + [justify-self] + (let [values (unchecked-get wasm/serializers "justify-self") + default (unchecked-get values "none")] + (d/nilv (unchecked-get values (d/name justify-self)) default))) (defn translate-shadow-style [style] - (case style - :drop-shadow 0 - :inner-shadow 1 - 0)) + (let [values (unchecked-get wasm/serializers "shadow-style") + default (unchecked-get values "drop-shadow")] + (d/nilv (unchecked-get values (d/name style)) default))) +;; TODO: Find/Create a Rust enum for this (defn translate-structure-modifier-type [type] (case type @@ -266,60 +195,52 @@ (defn translate-grow-type [grow-type] - (case grow-type - :auto-width 1 - :auto-height 2 - 0)) + (let [values (unchecked-get wasm/serializers "grow-type") + default (unchecked-get values "fixed")] + (d/nilv (unchecked-get values (d/name grow-type)) default))) (defn translate-vertical-align [vertical-align] - (case vertical-align - "top" 0 - "center" 1 - "bottom" 2 - 0)) + (let [values (unchecked-get wasm/serializers "vertical-align") + default (unchecked-get values "top")] + (d/nilv (unchecked-get values (d/name vertical-align)) default))) (defn translate-text-align [text-align] - (case text-align - "left" 0 - "center" 1 - "right" 2 - "justify" 3 - 0)) + (let [values (unchecked-get wasm/serializers "text-align") + default (unchecked-get values "left")] + (d/nilv (unchecked-get values (d/name text-align)) default))) + +;; TODO: Find/Create a Rust enum for this (defn translate-text-transform [text-transform] - (case text-transform - "none" 0 - "uppercase" 1 - "lowercase" 2 - "capitalize" 3 - nil 0 - 0)) + (let [values (unchecked-get wasm/serializers "text-transform") + default (unchecked-get values "none")] + (d/nilv (unchecked-get values (d/name text-transform)) default))) + (defn translate-text-decoration [text-decoration] - (case text-decoration - "none" 0 - "underline" 1 - "line-through" 2 - "overline" 3 - nil 0 - 0)) + (let [values (unchecked-get wasm/serializers "text-decoration") + default (unchecked-get values "none")] + (d/nilv (unchecked-get values (d/name text-decoration)) default))) (defn translate-text-direction [text-direction] - (case text-direction - "ltr" 0 - "rtl" 1 - nil 0 - 0)) + (let [values (unchecked-get wasm/serializers "text-direction") + default (unchecked-get values "ltr")] + (d/nilv (unchecked-get values (d/name text-direction)) default))) + (defn translate-font-style [font-style] - (case font-style - "normal" 0 - "regular" 0 - "italic" 1 - 0)) + (let [values (unchecked-get wasm/serializers "font-style") + default (unchecked-get values "normal")] + (case font-style + ;; NOTE: normal == regular! + ;; is it OK to keep those two values in our cljs model? + "normal" (unchecked-get values "normal") + "regular" (unchecked-get values "normal") + "italic" (unchecked-get values "italic") + default))) diff --git a/frontend/src/app/render_wasm/shape.cljs b/frontend/src/app/render_wasm/shape.cljs index c3ccefbec4..001a16842a 100644 --- a/frontend/src/app/render_wasm/shape.cljs +++ b/frontend/src/app/render_wasm/shape.cljs @@ -53,6 +53,10 @@ (-conj [coll entry] (impl-conj coll entry)) + c/IEmptyableCollection + (-empty [_] + (ShapeProxy. nil nil nil)) + c/IEquiv (-equiv [coll other] (c/equiv-map coll other)) @@ -62,7 +66,6 @@ (hash (into {} coll))) c/ISequential - c/ISeqable (-seq [_] (cons (map-entry :id id) @@ -146,11 +149,17 @@ :constraints-h (api/set-constraints-h v) :constraints-v (api/set-constraints-v v) - (:r1 :r2 :r3 :r4) - (api/set-shape-corners [(dm/get-prop shape :r1) - (dm/get-prop shape :r2) - (dm/get-prop shape :r3) - (dm/get-prop shape :r4)]) + :r1 + (api/set-shape-corners [v (dm/get-prop shape :r2) (dm/get-prop shape :r3) (dm/get-prop shape :r4)]) + + :r2 + (api/set-shape-corners [(dm/get-prop shape :r1) v (dm/get-prop shape :r3) (dm/get-prop shape :r4)]) + + :r3 + (api/set-shape-corners [(dm/get-prop shape :r1) (dm/get-prop shape :r2) v (dm/get-prop shape :r4)]) + + :r4 + (api/set-shape-corners [(dm/get-prop shape :r1) (dm/get-prop shape :r2) (dm/get-prop shape :r3) v]) :svg-attrs (when (= (:type shape) :path) diff --git a/frontend/src/app/render_wasm/wasm.cljs b/frontend/src/app/render_wasm/wasm.cljs index 542d4c49a1..7d7511d9ab 100644 --- a/frontend/src/app/render_wasm/wasm.cljs +++ b/frontend/src/app/render_wasm/wasm.cljs @@ -1,4 +1,5 @@ (ns app.render-wasm.wasm) (defonce internal-frame-id nil) -(defonce internal-module #js {}) \ No newline at end of file +(defonce internal-module #js {}) +(defonce serializers #js {}) \ No newline at end of file diff --git a/frontend/src/app/util/code_gen/style_css.cljs b/frontend/src/app/util/code_gen/style_css.cljs index 2e47e882ed..00d6ae7a94 100644 --- a/frontend/src/app/util/code_gen/style_css.cljs +++ b/frontend/src/app/util/code_gen/style_css.cljs @@ -17,7 +17,7 @@ [app.common.types.text :as types.text] [app.main.ui.shapes.text.styles :as sts] [app.util.code-gen.common :as cgc] - [app.util.code-gen.style-css-formats :refer [format-value format-shadow]] + [app.util.code-gen.style-css-formats :refer [format-value format-shadow->css]] [app.util.code-gen.style-css-values :refer [get-value]] [cuerdas.core :as str])) @@ -73,7 +73,10 @@ body { :transform :background :border - :border-radius + :border-start-start-radius + :border-start-end-radius + :border-end-start-radius + :border-end-end-radius :box-shadow :filter :opacity @@ -89,7 +92,10 @@ body { :gap :column-gap :row-gap - :padding + :padding-inline-start + :padding-inline-end + :padding-block-start + :padding-block-end :z-index ;; Flex related properties @@ -107,10 +113,18 @@ body { ;; Flex/grid self properties :flex-shrink :margin + :margin-block-start + :margin-block-end + :margin-inline-start + :margin-inline-end :max-height + :max-block-size :min-height + :min-block-size :max-width + :max-inline-size :min-width + :min-inline-size :align-self :justify-self @@ -318,4 +332,4 @@ body { (defn shadow->css [shadow] - (dm/str "box-shadow: " (format-shadow shadow {}))) + (dm/str "box-shadow: " (format-shadow->css shadow {}))) diff --git a/frontend/src/app/util/code_gen/style_css_formats.cljs b/frontend/src/app/util/code_gen/style_css_formats.cljs index 66e5d3b726..b2de3e7664 100644 --- a/frontend/src/app/util/code_gen/style_css_formats.cljs +++ b/frontend/src/app/util/code_gen/style_css_formats.cljs @@ -14,47 +14,47 @@ [cuerdas.core :as str])) (def css-formatters - {:left :position - :top :position - :width :size - :height :size - :min-width :size - :min-height :size - :max-width :size - :max-height :size - :background :color - :border :border - :border-radius :string-or-size-array - :border-width :border-width - :border-style :border-style - :box-shadow :shadows - :filter :blur - :gap :size-array - :row-gap :size-array - :column-gap :size-array - :padding :size-array - :margin :size-array - :grid-template-rows :tracks - :grid-template-columns :tracks}) + {:left :position + :top :position + :width :size + :height :size + :max-height :size + :max-block-size :size + :min-height :size + :min-block-size :size + :max-width :size + :max-inline-size :size + :min-width :size + :min-inline-size :size + :background :color + :border :border + :border-radius :string-or-size-array + :border-start-start-radius :string-or-size-array + :border-start-end-radius :string-or-size-array + :border-end-start-radius :string-or-size-array + :border-end-end-radius :string-or-size-array + :border-width :border-width + :border-style :border-style + :border-color :border-color + :box-shadow :shadows + :filter :blur + :gap :size-array + :row-gap :size-array + :column-gap :size-array + :padding :size-array + :padding-inline-start :size-array + :padding-inline-end :size-array + :padding-block-start :size-array + :padding-block-end :size-array + :margin :size-array + :margin-block-start :size-array + :margin-block-end :size-array + :margin-inline-start :size-array + :margin-inline-end :size-array + :grid-template-rows :tracks + :grid-template-columns :tracks}) -(defmulti format-value - (fn [property _value _options] (css-formatters property))) - -(defmethod format-value :position - [_ value _options] - (cond - (number? value) (fmt/format-pixels value) - :else value)) - -(defmethod format-value :size - [_ value _options] - (cond - (= value :fill) "100%" - (= value :auto) "auto" - (number? value) (fmt/format-pixels value) - :else value)) - -(defn format-color +(defn format-color-value "Format a color value to a CSS compatible string based on the given format." [value options] (let [format (get options :format :hex)] @@ -76,34 +76,59 @@ :else (uc/color->format->background value format)))) -(defmethod format-value :color - [_ value options] - (let [format (get options :format :hex)] - (format-color value (assoc options :format format)))) +(defn format-shadow->css + [{:keys [style offset-x offset-y blur spread color]} options] + (let [css-color (format-color-value color options)] + (dm/str + (if (= style :inner-shadow) "inset " "") + (str/fmt "%spx %spx %spx %spx %s" offset-x offset-y blur spread css-color)))) -(defmethod format-value :color-array - [_ value options] +(defn- format-position + [value] + (cond + (number? value) (fmt/format-pixels value) + :else value)) + +(defn- format-size + [value] + (cond + (= value :fill) "100%" + (= value :auto) "auto" + (number? value) (fmt/format-pixels value) + :else value)) + +(defn- format-color + [value options] + (let [format (get options :format :hex)] + (format-color-value value (assoc options :format format)))) + +(defn- format-color-array + [value options] (->> value - (map #(format-color % options)) + (map #(format-color-value % options)) (str/join ", "))) -(defmethod format-value :border - [_ {:keys [color style width]} options] +(defn- format-border + [{:keys [color style width]} options] (dm/fmt "% % %" (fmt/format-pixels width) (d/name style) - (format-color color options))) + (format-color-value color options))) -(defmethod format-value :border-style - [_ value _options] +(defn- format-border-style + [value] (d/name (:style value))) -(defmethod format-value :border-width - [_ value _options] +(defn- format-border-width + [value] (fmt/format-pixels (:width value))) -(defmethod format-value :size-array - [_ value _options] +(defn- format-border-color + [value options] + (format-color (:color value) options)) + +(defn- format-size-array + [value] (cond (and (coll? value) (d/not-empty? value)) (->> value @@ -113,8 +138,8 @@ (some? value) value)) -(defmethod format-value :string-or-size-array - [_ value _] +(defn format-string-or-size-array + [value] (cond (string? value) value @@ -127,12 +152,12 @@ (some? value) value)) -(defmethod format-value :keyword - [_ value _options] +(defn- format-keyword + [value] (d/name value)) -(defmethod format-value :tracks - [_ value _options] +(defn- format-tracks + [value] (->> value (map (fn [{:keys [type value]}] (case type @@ -142,29 +167,39 @@ (fmt/format-pixels value)))) (str/join " "))) -(defn format-shadow - [{:keys [style offset-x offset-y blur spread color]} options] - (let [css-color (format-color color options)] - (dm/str - (if (= style :inner-shadow) "inset " "") - (str/fmt "%spx %spx %spx %spx %s" offset-x offset-y blur spread css-color)))) - -(defmethod format-value :shadows - [_ value options] +(defn- format-shadow + [value options] (->> value - (map #(format-shadow % options)) + (map #(format-shadow->css % options)) (str/join ", "))) -(defmethod format-value :blur - [_ value _options] +(defn- format-blur + [value] (dm/fmt "blur(%)" (fmt/format-pixels value))) -(defmethod format-value :matrix - [_ value _options] +(defn- format-matrix + [value] (fmt/format-matrix value)) -(defmethod format-value :default - [_ value _options] - (if (keyword? value) - (d/name value) - value)) + +(defn format-value + "Get the appropriate value formatter function for a given CSS property." + [property value options] + (let [property (get css-formatters property)] + (case property + :position (format-position value) + :size (format-size value) + :color (format-color value options) + :color-array (format-color-array value options) + :border (format-border value options) + :border-style (format-border-style value) + :border-width (format-border-width value) + :border-color (format-border-color value options) + :size-array (format-size-array value) + :string-or-size-array (format-string-or-size-array value) + :keyword (format-keyword value) + :tracks (format-tracks value) + :shadow (format-shadow value options) + :blur (format-blur value) + :matrix (format-matrix value) + (if (keyword? value) (d/name value) value)))) diff --git a/frontend/src/app/util/code_gen/style_css_values.cljs b/frontend/src/app/util/code_gen/style_css_values.cljs index 13ee25bc83..cba1991599 100644 --- a/frontend/src/app/util/code_gen/style_css_values.cljs +++ b/frontend/src/app/util/code_gen/style_css_values.cljs @@ -24,27 +24,6 @@ :gradient fill-color-gradient :image fill-image}) -(defmulti get-value - (fn [property _shape _objects _options] property)) - -(defmethod get-value :position - [_ shape objects _] - (cond - (or (and (ctl/any-layout-immediate-child? objects shape) - (not (ctl/position-absolute? shape)) - (or (cfh/group-like-shape? shape) - (cfh/frame-shape? shape) - (cgc/svg-markup? shape))) - (cfh/root-frame? shape)) - :relative - - (and (ctl/any-layout-immediate-child? objects shape) - (not (ctl/position-absolute? shape))) - nil - - :else - :absolute)) - (defn get-shape-position [shape objects coord] @@ -64,24 +43,6 @@ shape-value (get selrect coord)] (- shape-value parent-value)))) -(defmethod get-value :left - [_ shape objects _] - (get-shape-position shape objects :x)) - -(defmethod get-value :top - [_ shape objects _] - (get-shape-position shape objects :y)) - -(defmethod get-value :flex - [_ shape objects _] - (let [parent (cfh/get-parent objects (:id shape))] - (when (and (ctl/flex-layout-immediate-child? objects shape) - (or (and (contains? #{:row :row-reverse} (:layout-flex-dir parent)) - (= :fill (:layout-item-h-sizing shape))) - (and (contains? #{:column :column-reverse} (:layout-flex-dir parent)) - (= :fill (:layout-item-v-sizing shape))))) - 1))) - (defn get-shape-size [shape objects type] (let [parent (cfh/get-parent objects (:id shape)) @@ -111,8 +72,78 @@ (some? (get shape type)) (get shape type)))) -(defmethod get-value :width - [_ shape objects options] +(defn get-stroke-data + [stroke] + (let [width (:stroke-width stroke) + style (:stroke-style stroke) + color {:color (:stroke-color stroke) + :opacity (:stroke-opacity stroke) + :gradient (:stroke-color-gradient stroke)}] + + (when (and (some? stroke) (not= :none (:stroke-style stroke))) + {:color color + :style style + :width width}))) + +(defn area-cell? + [{:keys [position area-name]}] + (and (= position :area) (d/not-empty? area-name))) + +(defn get-grid-coord + [shape objects prop span-prop] + (when (and (ctl/grid-layout-immediate-child? objects shape) + (not (ctl/position-absolute? shape))) + (let [parent (get objects (:parent-id shape)) + cell (ctl/get-cell-by-shape-id parent (:id shape))] + (when (and + (not (and (= (:position cell) :area) (d/not-empty? (:area-name cell)))) + (or (= (:position cell) :manual) + (> (:row-span cell) 1) + (> (:column-span cell) 1))) + (if (> (get cell span-prop) 1) + (dm/str (get cell prop) " / " (+ (get cell prop) (get cell span-prop))) + (get cell prop)))))) + +;; SHAPE VALUES + +(defn- get-position + [shape objects] + (cond + (or (and (ctl/any-layout-immediate-child? objects shape) + (not (ctl/position-absolute? shape)) + (or (cfh/group-like-shape? shape) + (cfh/frame-shape? shape) + (cgc/svg-markup? shape))) + (cfh/root-frame? shape)) + :relative + + (and (ctl/any-layout-immediate-child? objects shape) + (not (ctl/position-absolute? shape))) + nil + + :else + :absolute)) + +(defn- get-left-position + [shape objects] + (get-shape-position shape objects :x)) + +(defn- get-top-position + [shape objects] + (get-shape-position shape objects :y)) + +(defn- get-flex + [shape objects] + (let [parent (cfh/get-parent objects (:id shape))] + (when (and (ctl/flex-layout-immediate-child? objects shape) + (or (and (contains? #{:row :row-reverse} (:layout-flex-dir parent)) + (= :fill (:layout-item-h-sizing shape))) + (and (contains? #{:column :column-reverse} (:layout-flex-dir parent)) + (= :fill (:layout-item-v-sizing shape))))) + 1))) + +(defn- get-width + [shape objects options] (let [root? (contains? (:root-shapes options) (:id shape))] (if (and root? (ctl/any-layout? shape)) :fill @@ -120,22 +151,22 @@ (when-not (and (cfh/text-shape? shape) (= (:grow-type shape) :auto-width)) (get-shape-size shape objects :width))))) -(defmethod get-value :height - [_ shape objects options] +(defn- get-height + [shape objects options] (let [root? (contains? (:root-shapes options) (:id shape))] (when-not (and root? (ctl/any-layout? shape)) ;; Don't set fixed height for auto-height text shapes (when-not (and (cfh/text-shape? shape) (= (:grow-type shape) :auto-height)) (get-shape-size shape objects :height))))) -(defmethod get-value :flex-grow - [_ shape _ options] +(defn- get-flex-grow + [shape options] (let [root? (contains? (:root-shapes options) (:id shape))] (when (and root? (ctl/any-layout? shape)) 1))) -(defmethod get-value :transform - [_ shape objects _] +(defn- get-transform + [shape objects] (if (cgc/svg-markup? shape) (let [parent (get objects (:parent-id shape)) transform @@ -159,32 +190,19 @@ (dm/str "translate(-50%, -50%) " (d/nilv transform-str "")) transform-str)))) -(defmethod get-value :background - [_ {:keys [fills] :as shape} _ _] +(defn- get-background + [{:keys [fills] :as shape}] (let [single-fill? (= (count fills) 1)] (when (and (not (cgc/svg-markup? shape)) (not (cfh/group-shape? shape)) single-fill?) (fill->color (first fills))))) -(defn get-stroke-data - [stroke] - (let [width (:stroke-width stroke) - style (:stroke-style stroke) - color {:color (:stroke-color stroke) - :opacity (:stroke-opacity stroke) - :gradient (:stroke-color-gradient stroke)}] - - (when (and (some? stroke) (not= :none (:stroke-style stroke))) - {:color color - :style style - :width width}))) - -(defmethod get-value :border - [_ shape _ _] +(defn- get-border + [shape] (when-not (cgc/svg-markup? shape) (get-stroke-data (first (:strokes shape))))) -(defmethod get-value :border-radius - [_ {:keys [rx r1 r2 r3 r4] :as shape} _ _] +(defn- get-border-radius + [{:keys [rx r1 r2 r3 r4] :as shape}] (cond (cfh/circle-shape? shape) "50%" @@ -195,107 +213,148 @@ (every? some? [r1 r2 r3 r4]) [r1 r2 r3 r4])) -(defmethod get-value :border-style - [_ stroke _ _] +(defn- get-border-start-start-radius + [{:keys [_ r1 _ _ _] :as shape}] + (when (and r1 (not= r1 0)) + [r1])) + +(defn- get-border-start-end-radius + [{:keys [_ _ r2 _ _] :as shape}] + (when (and r2 (not= r2 0)) + [r2])) + +(defn- get-border-end-start-radius + [{:keys [_ _ _ r3 _] :as shape}] + (when (and r3 (not= r3 0)) + [r3])) + +(defn- get-border-end-end-radius + [{:keys [_ _ _ _ r4] :as shape}] + (when (and r4 (not= r4 0)) + [r4])) + +(defn- get-border-style + [stroke] (when-not (cgc/svg-markup? stroke) (get-stroke-data stroke))) -(defmethod get-value :border-width - [_ stroke _ _] +(defn- get-border-width + [stroke] (when-not (cgc/svg-markup? stroke) (get-stroke-data stroke))) -(defmethod get-value :box-shadow - [_ shape _ _] +(defn- get-border-color + [stroke] + (when-not (cgc/svg-markup? stroke) + (get-stroke-data stroke))) + +(defn- get-box-shadow + [shape] (when-not (cgc/svg-markup? shape) (:shadow shape))) -(defmethod get-value :filter - [_ shape _ _] +(defn- get-filter + [shape] (when-not (cgc/svg-markup? shape) (get-in shape [:blur :value]))) -(defmethod get-value :display - [_ shape _ _] +(defn- get-display + [shape] (cond (:hidden shape) "none" (ctl/flex-layout? shape) "flex" (ctl/grid-layout? shape) "grid")) -(defmethod get-value :opacity - [_ shape _ _] +(defn- get-opacity + [shape] (when (< (:opacity shape) 1) (:opacity shape))) -(defmethod get-value :overflow - [_ shape _ _] +(defn- get-overflow + [shape] (when (and (cfh/frame-shape? shape) (not (cgc/svg-markup? shape)) (not (:show-content shape))) "hidden")) -(defmethod get-value :flex-direction - [_ shape _ _] +(defn- get-flex-direction + [shape] (:layout-flex-dir shape)) -(defmethod get-value :align-items - [_ shape _ _] +(defn- get-align-items + [shape] (:layout-align-items shape)) -(defmethod get-value :align-content - [_ shape _ _] +(defn- get-align-content + [shape] (:layout-align-content shape)) -(defmethod get-value :justify-items - [_ shape _ _] +(defn- get-justify-items + [shape] (:layout-justify-items shape)) -(defmethod get-value :justify-content - [_ shape _ _] +(defn- get-justify-content + [shape] (:layout-justify-content shape)) -(defmethod get-value :flex-wrap - [_ shape _ _] +(defn- get-flex-wrap + [shape] (:layout-wrap-type shape)) -(defmethod get-value :gap - [_ shape _ _] +(defn- get-gap + [shape] (let [[g1 g2] (ctl/gaps shape)] (when (and (= g1 g2) (or (not= g1 0) (not= g2 0))) [g1]))) -(defmethod get-value :row-gap - [_ shape _ _] +(defn- get-row-gap + [shape] (let [[g1 g2] (ctl/gaps shape)] (when (and (not= g1 g2) (not= g1 0)) [g1]))) -(defmethod get-value :column-gap - [_ shape _ _] +(defn- get-column-gap + [shape] (let [[g1 g2] (ctl/gaps shape)] (when (and (not= g1 g2) (not= g2 0)) [g2]))) -(defmethod get-value :padding - [_ {:keys [layout-padding]} _ _] +(defn- get-padding + [{:keys [layout-padding]}] (when (some? layout-padding) (let [default-padding {:p1 0 :p2 0 :p3 0 :p4 0} {:keys [p1 p2 p3 p4]} (merge default-padding layout-padding)] (when (or (not= p1 0) (not= p2 0) (not= p3 0) (not= p4 0)) [p1 p2 p3 p4])))) -(defmethod get-value :grid-template-rows - [_ shape _ _] +(defn- get-padding-block-start + [{:keys [layout-padding]}] + (when (and (:p1 layout-padding) (not= (:p1 layout-padding) 0)) + [(:p1 layout-padding)])) + +(defn- get-padding-inline-end + [{:keys [layout-padding]}] + (when (and (:p2 layout-padding) (not= (:p2 layout-padding) 0)) + [(:p2 layout-padding)])) + +(defn- get-padding-block-end + [{:keys [layout-padding]}] + (when (and (:p3 layout-padding) (not= (:p3 layout-padding) 0)) + [(:p3 layout-padding)])) + +(defn- get-padding-inline-start + [{:keys [layout-padding]}] + (when (and (:p4 layout-padding) (not= (:p4 layout-padding) 0)) + [(:p4 layout-padding)])) + +(defn- get-grid-template-rows + [shape] (:layout-grid-rows shape)) -(defmethod get-value :grid-template-columns - [_ shape _ _] +(defn- get-grid-template-columns + [shape] (:layout-grid-columns shape)) -(defn area-cell? - [{:keys [position area-name]}] - (and (= position :area) (d/not-empty? area-name))) - -(defmethod get-value :grid-template-areas - [_ shape _ _] +(defn- get-grid-template-areas + [shape] (when (and (ctl/grid-layout? shape) (some area-cell? (vals (:layout-grid-cells shape)))) (let [result @@ -313,31 +372,16 @@ (str/join "\n"))] result))) -(defn get-grid-coord - [shape objects prop span-prop] - (when (and (ctl/grid-layout-immediate-child? objects shape) - (not (ctl/position-absolute? shape))) - (let [parent (get objects (:parent-id shape)) - cell (ctl/get-cell-by-shape-id parent (:id shape))] - (when (and - (not (and (= (:position cell) :area) (d/not-empty? (:area-name cell)))) - (or (= (:position cell) :manual) - (> (:row-span cell) 1) - (> (:column-span cell) 1))) - (if (> (get cell span-prop) 1) - (dm/str (get cell prop) " / " (+ (get cell prop) (get cell span-prop))) - (get cell prop)))))) - -(defmethod get-value :grid-column - [_ shape objects _] +(defn- get-grid-column + [shape objects] (get-grid-coord shape objects :column :column-span)) -(defmethod get-value :grid-row - [_ shape objects _] +(defn- get-grid-row + [shape objects] (get-grid-coord shape objects :row :row-span)) -(defmethod get-value :grid-area - [_ shape objects _] +(defn- get-grid-area + [shape objects] (when (and (ctl/grid-layout-immediate-child? objects shape) (not (ctl/position-absolute? shape))) (let [parent (get objects (:parent-id shape)) @@ -345,8 +389,8 @@ (when (and (= (:position cell) :area) (d/not-empty? (:area-name cell))) (str/replace (:area-name cell) " " "-"))))) -(defmethod get-value :flex-shrink - [_ shape objects _] +(defn- get-flex-shrink + [shape objects] (when (and (ctl/flex-layout-immediate-child? objects shape) (not (and (contains? #{:row :reverse-row} (:layout-flex-dir shape)) @@ -361,8 +405,8 @@ (not= :auto (:layout-item-v-sizing shape))) 0)) -(defmethod get-value :margin - [_ {:keys [layout-item-margin] :as shape} objects _] +(defn- get-margin + [{:keys [layout-item-margin] :as shape} objects] (when (ctl/any-layout-immediate-child? objects shape) (let [default-margin {:m1 0 :m2 0 :m3 0 :m4 0} @@ -370,8 +414,29 @@ (when (or (not= m1 0) (not= m2 0) (not= m3 0) (not= m4 0)) [m1 m2 m3 m4])))) -(defmethod get-value :z-index - [_ {:keys [layout-item-z-index] :as shape} objects _] +(defn- get-margin-block-start + [{:keys [layout-item-margin] :as shape} objects] + (when (and (ctl/any-layout-immediate-child? objects shape) (:m1 layout-item-margin) (not= (:m1 layout-item-margin) 0)) + [(:m1 layout-item-margin)])) + +(defn- get-margin-inline-end + [{:keys [layout-item-margin] :as shape} objects] + (when (and (ctl/any-layout-immediate-child? objects shape) (:m2 layout-item-margin) (not= (:m2 layout-item-margin) 0)) + [(:m2 layout-item-margin)])) + +(defn- get-margin-block-end + [{:keys [layout-item-margin] :as shape} objects] + (when (and (ctl/any-layout-immediate-child? objects shape) (:m3 layout-item-margin) (not= (:m3 layout-item-margin) 0)) + [(:m3 layout-item-margin)])) + +(defn- get-margin-inline-start + [{:keys [layout-item-margin] :as shape} objects] + (when (and (ctl/any-layout-immediate-child? objects shape) (:m4 layout-item-margin) (not= (:m4 layout-item-margin) 0)) + [(:m4 layout-item-margin)])) + + +(defn- get-z-index + [{:keys [layout-item-z-index] :as shape} objects] (cond (cfh/root-frame? shape) 0 @@ -379,29 +444,28 @@ (ctl/any-layout-immediate-child? objects shape) layout-item-z-index)) -(defmethod get-value :max-height - [_ shape objects _] +(defn- get-max-height + [shape objects] (cond (ctl/any-layout-immediate-child? objects shape) (:layout-item-max-h shape))) -(defmethod get-value :min-height - [_ shape objects _] +(defn- get-min-height + [shape objects] (cond (and (ctl/any-layout-immediate-child? objects shape) (some? (:layout-item-min-h shape))) (:layout-item-min-h shape) - (and (ctl/auto-height? shape) (cfh/frame-shape? shape) (not (:show-content shape))) (-> shape :selrect :height))) -(defmethod get-value :max-width - [_ shape objects _] +(defn- get-max-width + [shape objects] (cond (ctl/any-layout-immediate-child? objects shape) (:layout-item-max-w shape))) -(defmethod get-value :min-width - [_ shape objects _] +(defn- get-min-width + [shape objects] (cond (and (ctl/any-layout-immediate-child? objects shape) (some? (:layout-item-min-w shape))) (:layout-item-min-w shape) @@ -409,8 +473,8 @@ (and (ctl/auto-width? shape) (cfh/frame-shape? shape) (not (:show-content shape))) (-> shape :selrect :width))) -(defmethod get-value :align-self - [_ shape objects _] +(defn- get-align-self + [shape objects] (cond (ctl/flex-layout-immediate-child? objects shape) (:layout-item-align-self shape) @@ -421,8 +485,8 @@ align-self (:align-self cell)] (when (not= align-self :auto) align-self)))) -(defmethod get-value :justify-self - [_ shape objects _] +(defn- get-justify-self + [shape objects] (cond (ctl/grid-layout-immediate-child? objects shape) (let [parent (get objects (:parent-id shape)) @@ -430,11 +494,89 @@ justify-self (:justify-self cell)] (when (not= justify-self :auto) justify-self)))) -(defmethod get-value :grid-auto-flow - [_ shape _ _] +(defn- get-grid-auto-flow + [shape] (when (and (ctl/grid-layout? shape) (= (:layout-grid-dir shape) :column)) "column")) -(defmethod get-value :default - [property shape _ _] - (get shape property)) +(defn get-value + "Get the value for a given CSS property from a shape" + [property shape objects options] + (case property + ;; Positioning + :position (get-position shape objects) + :left (get-left-position shape objects) + :top (get-top-position shape objects) + :z-index (get-z-index shape objects) + :transform (get-transform shape objects) + + ;; Size + :width (get-width shape objects options) + :height (get-height shape objects options) + (:max-width :max-inline-size) (get-max-width shape objects) + (:min-width :min-inline-size) (get-min-width shape objects) + (:max-height :max-block-size) (get-max-height shape objects) + (:min-height :min-block-size) (get-min-height shape objects) + + ;; Spacing + :margin (get-margin shape objects) + :margin-block-start (get-margin-block-start shape objects) + :margin-inline-end (get-margin-inline-end shape objects) + :margin-block-end (get-margin-block-end shape objects) + :margin-inline-start (get-margin-inline-start shape objects) + :padding (get-padding shape) + :padding-block-start (get-padding-block-start shape) + :padding-inline-end (get-padding-inline-end shape) + :padding-block-end (get-padding-block-end shape) + :padding-inline-start (get-padding-inline-start shape) + + ;; Border & Background + :border (get-border shape) + :border-style (get-border-style shape) + :border-width (get-border-width shape) + :border-color (get-border-color shape) + :border-radius (get-border-radius shape) + :border-start-start-radius (get-border-start-start-radius shape) + :border-start-end-radius (get-border-start-end-radius shape) + :border-end-start-radius (get-border-end-start-radius shape) + :border-end-end-radius (get-border-end-end-radius shape) + :background (get-background shape) + + ;; Visual Effects + :opacity (get-opacity shape) + :box-shadow (get-box-shadow shape) + :filter (get-filter shape) + :overflow (get-overflow shape) + + ;; Display + :display (get-display shape) + + ;; Flexbox + :flex (get-flex shape objects) + :flex-grow (get-flex-grow shape options) + :flex-shrink (get-flex-shrink shape objects) + :flex-direction (get-flex-direction shape) + :flex-wrap (get-flex-wrap shape) + :align-items (get-align-items shape) + :align-content (get-align-content shape) + :align-self (get-align-self shape objects) + :justify-content (get-justify-content shape) + :justify-items (get-justify-items shape) + :justify-self (get-justify-self shape objects) + + ;; Grid + :grid-template-rows (get-grid-template-rows shape) + :grid-template-columns (get-grid-template-columns shape) + :grid-template-areas (get-grid-template-areas shape) + :grid-column (get-grid-column shape objects) + :grid-row (get-grid-row shape objects) + :grid-area (get-grid-area shape objects) + :grid-auto-flow (get-grid-auto-flow shape) + + ;; Spacing (Flex/Grid) + :gap (get-gap shape) + :row-gap (get-row-gap shape) + :column-gap (get-column-gap shape) + + ;; Default + (get shape property))) diff --git a/frontend/src/app/util/debug.cljs b/frontend/src/app/util/debug.cljs index d14f0793cf..3c449fd39f 100644 --- a/frontend/src/app/util/debug.cljs +++ b/frontend/src/app/util/debug.cljs @@ -4,7 +4,9 @@ ;; ;; Copyright (c) KALEIDOS INC -(ns app.util.debug) +(ns app.util.debug + (:require + [app.main.store :as st])) (defonce state (atom #{#_:events})) @@ -95,7 +97,19 @@ :gl-context ;; Show viewbox - :wasm-viewbox}) + :wasm-viewbox + + ;; Event times + :events-times}) + +(defn handle-change + [] + (set! st/*debug-events* (contains? @state :events)) + (set! st/*debug-events-time* (contains? @state :events-times))) + +(when *assert* + (handle-change) + (add-watch state :watcher handle-change)) (defn enable! [option] diff --git a/frontend/src/app/util/http.cljs b/frontend/src/app/util/http.cljs index aa7635c212..bf35ce96fd 100644 --- a/frontend/src/app/util/http.cljs +++ b/frontend/src/app/util/http.cljs @@ -13,6 +13,7 @@ [app.config :as cfg] [app.util.cache :as c] [app.util.globals :as globals] + [app.util.perf :as perf] [app.util.webapi :as wapi] [beicon.v2.core :as rx] [cuerdas.core :as str] @@ -51,7 +52,12 @@ (defn default-headers [] - {"x-frontend-version" (:full cfg/version)}) + {"x-frontend-version" (:full cfg/version) + "x-client" (str "penpot-frontend/" (:full cfg/version))}) + +;; Storage to save the average time of the requests +(defonce network-averages + (atom {})) (defn fetch [{:keys [method uri query headers body mode omit-default-headers credentials] @@ -87,17 +93,29 @@ :redirect "follow" :credentials credentials :referrerPolicy "no-referrer" - :signal signal}] + :signal signal} + + start (perf/timestamp)] (-> (js/fetch (str uri) params) - (p/then (fn [response] - (vreset! abortable? false) - (.next ^js subscriber response) - (.complete ^js subscriber))) - (p/catch (fn [err] - (vreset! abortable? false) - (when-not @unsubscribed? - (.error ^js subscriber err))))) + (p/then + (fn [response] + (vreset! abortable? false) + (.next ^js subscriber response) + (.complete ^js subscriber))) + (p/catch + (fn [err] + (vreset! abortable? false) + (when-not @unsubscribed? + (.error ^js subscriber err)))) + (p/finally + (fn [] + (let [{:keys [count average] :or {count 0 average 0}} (get @network-averages (:path uri)) + current-time (- (perf/timestamp) start) + average (+ (* average (/ count (inc count))) + (/ current-time (inc count))) + count (inc count)] + (swap! network-averages assoc (:path uri) {:count count :average average}))))) (fn [] (vreset! unsubscribed? true) (when @abortable? diff --git a/frontend/src/app/util/perf.cljs b/frontend/src/app/util/perf.cljs index f958ba34f5..868f2eb2b4 100644 --- a/frontend/src/app/util/perf.cljs +++ b/frontend/src/app/util/perf.cljs @@ -157,3 +157,15 @@ (let [p1 (now)] #(js/Math.floor (- (now) p1)))) +(defn measure-time-to-render [event] + (if (and (exists? js/globalThis) + (exists? (.-requestAnimationFrame js/globalThis)) + (exists? (.-scheduler js/globalThis)) + (exists? (.-postTask (.-scheduler js/globalThis)))) + (let [start (timestamp)] + (js/requestAnimationFrame + #(js/scheduler.postTask + (fn [] + (let [end (timestamp)] + (println (str "[" event "]" (- end start))))) + #js {"priority" "user-blocking"}))))) diff --git a/frontend/src/app/util/worker.cljs b/frontend/src/app/util/worker.cljs index f1b27cc7c6..bf1b44c30b 100644 --- a/frontend/src/app/util/worker.cljs +++ b/frontend/src/app/util/worker.cljs @@ -19,7 +19,7 @@ ([worker message] (send-message! worker message nil)) - ([worker {sender-id :sender-id :as message} {:keys [many?] :or {many? false}}] + ([worker {sender-id :sender-id :as message} {:keys [many? ignore-response?] :or {many? false ignore-response? false}}] (let [take-messages (fn [ob] (if many? @@ -34,11 +34,13 @@ (if (some? instance) (do (.postMessage instance data transfer) - (->> (:stream worker) - (rx/filter #(= (:reply-to %) sender-id)) - (take-messages) - (rx/filter (complement :dropped)) - (rx/map handle-response))) + (if (not ignore-response?) + (->> (:stream worker) + (rx/filter #(= (:reply-to %) sender-id)) + (take-messages) + (rx/filter (complement :dropped)) + (rx/map handle-response)) + (rx/empty))) (rx/empty))))) (defn ask! @@ -51,6 +53,17 @@ :payload message :transfer transfer}))) +(defn emit! + ([worker message] + (emit! worker message nil)) + ([worker message transfer] + (send-message! + worker + {:sender-id (uuid/next) + :payload message + :transfer transfer} + {:ignore-response? true}))) + (defn ask-many! ([worker message] (ask-many! worker message nil)) diff --git a/frontend/src/debug.cljs b/frontend/src/debug.cljs index aa3e4d09cb..b87b4220ca 100644 --- a/frontend/src/debug.cljs +++ b/frontend/src/debug.cljs @@ -32,6 +32,7 @@ [app.main.store :as st] [app.util.debug :as dbg] [app.util.dom :as dom] + [app.util.http :as http] [app.util.object :as obj] [app.util.timers :as timers] [beicon.v2.core :as rx] @@ -58,15 +59,27 @@ (defn enable! [option] (dbg/enable! option) - (when (= :events option) - (set! st/*debug-events* true)) + (case option + :events + (set! st/*debug-events* true) + + :events-times + (set! st/*debug-events-time* true) + + nil) (js* "app.main.reinit()")) (defn disable! [option] (dbg/disable! option) - (when (= :events option) - (set! st/*debug-events* false)) + (case option + :events + (set! st/*debug-events* false) + + :events-times + (set! st/*debug-events-time* false) + + nil) (js* "app.main.reinit()")) (defn ^:export toggle-debug @@ -278,14 +291,6 @@ ([shape-id show-ids show-touched] (dump-subtree' @st/state shape-id show-ids show-touched false)) ([shape-id show-ids show-touched show-modified] (dump-subtree' @st/state shape-id show-ids show-touched show-modified))) -(when *assert* - (defonce debug-subscription - (->> st/stream - (rx/filter ptk/event?) - (rx/filter (fn [s] (and (dbg/enabled? :events) - (not (debug-exclude-events (ptk/type s)))))) - (rx/subs! #(println "[stream]: " (ptk/repr-event %)))))) - (defn ^:export apply-changes "Takes a Transit JSON changes" [^string changes*] @@ -447,3 +452,7 @@ (defn ^:export set-shape-ref [id shape-ref] (st/emit! (set-shape-ref* id shape-ref))) + +(defn ^:export network-averages + [] + (.log js/console (clj->js @http/network-averages))) diff --git a/frontend/test/frontend_tests/logic/components_and_tokens.cljs b/frontend/test/frontend_tests/logic/components_and_tokens.cljs index 5afb4c902b..cdfb94a220 100644 --- a/frontend/test/frontend_tests/logic/components_and_tokens.cljs +++ b/frontend/test/frontend_tests/logic/components_and_tokens.cljs @@ -34,25 +34,26 @@ (-> (cthf/sample-file :file1) (ctht/add-tokens-lib) (ctht/update-tokens-lib #(-> % - (ctob/add-set (ctob/make-token-set :name "test-token-set")) + (ctob/add-set (ctob/make-token-set :id (cthi/new-id! :test-token-set) + :name "test-token-set")) (ctob/add-theme (ctob/make-token-theme :name "test-theme" :sets #{"test-token-set"})) (ctob/set-active-themes #{"/test-theme"}) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :test-token-1) - :name "test-token-1" - :type :border-radius - :value 25)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :test-token-2) - :name "test-token-2" - :type :border-radius - :value 50)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :test-token-3) - :name "test-token-3" - :type :border-radius - :value 75)))) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :test-token-1) + :name "test-token-1" + :type :border-radius + :value 25)) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :test-token-2) + :name "test-token-2" + :type :border-radius + :value 50)) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :test-token-3) + :name "test-token-3" + :type :border-radius + :value 75)))) (ctho/add-frame :frame1) (ctht/apply-token-to-shape :frame1 "test-token-1" [:r1 :r2 :r3 :r4] [:r1 :r2 :r3 :r4] 25))) @@ -206,7 +207,7 @@ store (ths/setup-store file) ;; ==== Action - events [(dwtl/set-selected-token-set-name "test-token-set") + events [(dwtl/set-selected-token-set-id (cthi/id :test-token-set)) (dwtl/update-token (cthi/id :test-token-1) {:name "test-token-1" :type :border-radius @@ -321,40 +322,41 @@ file (-> (cthf/sample-file :file1) (ctht/add-tokens-lib) (ctht/update-tokens-lib #(-> % - (ctob/add-set (ctob/make-token-set :name "test-token-set")) + (ctob/add-set (ctob/make-token-set :id (cthi/new-id! :test-token-set) + :name "test-token-set")) (ctob/add-theme (ctob/make-token-theme :name "test-theme" :sets #{"test-token-set"})) (ctob/set-active-themes #{"/test-theme"}) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :token-radius) - :name "token-radius" - :type :border-radius - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :token-rotation) - :name "token-rotation" - :type :rotation - :value 30)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :token-opacity) - :name "token-opacity" - :type :opacity - :value 0.7)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :token-stroke-width) - :name "token-stroke-width" - :type :stroke-width - :value 2)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :token-color) - :name "token-color" - :type :color - :value "#00ff00")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :id (cthi/new-id! :token-dimensions) - :name "token-dimensions" - :type :dimensions - :value 100)))) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :token-radius) + :name "token-radius" + :type :border-radius + :value 10)) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :token-rotation) + :name "token-rotation" + :type :rotation + :value 30)) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :token-opacity) + :name "token-opacity" + :type :opacity + :value 0.7)) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :token-stroke-width) + :name "token-stroke-width" + :type :stroke-width + :value 2)) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :token-color) + :name "token-color" + :type :color + :value "#00ff00")) + (ctob/add-token (cthi/id :test-token-set) + (ctob/make-token :id (cthi/new-id! :token-dimensions) + :name "token-dimensions" + :type :dimensions + :value 100)))) (ctho/add-frame :frame1) (ctht/apply-token-to-shape :frame1 "token-radius" [:r1 :r2 :r3 :r4] [:r1 :r2 :r3 :r4] 10) (ctht/apply-token-to-shape :frame1 "token-rotation" [:rotation] [:rotation] 30) @@ -368,7 +370,7 @@ store (ths/setup-store file) ;; ==== Action - events [(dwtl/set-selected-token-set-name "test-token-set") + events [(dwtl/set-selected-token-set-id (cthi/id :test-token-set)) (dwtl/update-token (cthi/id :token-radius) {:name "token-radius" :value 30}) @@ -396,7 +398,6 @@ (fn [new-state] (let [;; ==== Get file' (ths/get-file-from-state new-state) - frame1' (cths/get-shape file' :frame1) c-frame1' (cths/get-shape file' :c-frame1) tokens-frame1' (:applied-tokens c-frame1')] diff --git a/frontend/test/frontend_tests/logic/pasting_in_containers_test.cljs b/frontend/test/frontend_tests/logic/pasting_in_containers_test.cljs new file mode 100644 index 0000000000..ac69e1cafd --- /dev/null +++ b/frontend/test/frontend_tests/logic/pasting_in_containers_test.cljs @@ -0,0 +1,669 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) KALEIDOS INC +(ns frontend-tests.logic.pasting-in-containers-test + (:require + [app.common.test-helpers.components :as cthc] + [app.common.test-helpers.compositions :as ctho] + [app.common.test-helpers.files :as cthf] + [app.common.test-helpers.ids-map :as cthi] + [app.common.test-helpers.shapes :as cths] + [app.common.test-helpers.variants :as thv] + [app.common.types.component :as ctk] + [app.common.uuid :as uuid] + [app.main.data.workspace :as dw] + [app.main.data.workspace.selection :as dws] + [cljs.test :as t :include-macros true] + [cuerdas.core :as str] + [frontend-tests.helpers.pages :as thp] + [frontend-tests.helpers.state :as ths])) + +(t/use-fixtures :each + {:before thp/reset-idmap!}) + +;; Related .penpot file: common/test/cases/remove-swap-slots.penpot +(defn- setup-file + [] + ;; {:frame-red} [:name Frame1] # [Component :red] + ;; {:frame-blue} [:name Frame1] # [Component :blue] + ;; {:frame-green} [:name Frame1] # [Component :green] + ;; :red-copy-green [:name Frame1] @--> :frame-red + ;; {:frame-b1} [:name Frame1] # [Component :b1] + ;; :blue1 [:name Frame1, :swap-slot-label :red-copy] @--> :frame-blue + ;; :frame-yellow [:name Frame1] + ;; :green-copy [:name Frame1] @--> :frame-green + ;; :blue-copy-in-green-copy [:name Frame1, :swap-slot-label :red-copy-green] @--> :frame-blue + ;; {:frame-b2} [:name Frame1] # [Component :b2] + (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (ctho/add-frame :frame-red {:name "frame-red"}) + (ctho/add-frame :frame-blue :name "frame-blue") + (cthc/make-component :blue :frame-blue) + (ctho/add-frame :frame-green :name "frame-green") + (cthc/make-component :green :frame-green) + (cthc/instantiate-component :red :red-copy-green :parent-label :frame-green) + (ctho/add-frame :frame-b1) + (cthc/make-component :b1 :frame-b1) + (ctho/add-frame :frame-yellow :parent-label :frame-b1 :name "frame-yellow") + (cthc/instantiate-component :red :red-copy :parent-label :frame-b1) + (cthc/component-swap :red-copy :blue :blue1) + (cthc/instantiate-component :green :green-copy :parent-label :frame-b1 :children-labels [:red-copy-in-green-copy]) + (cthc/component-swap :red-copy-in-green-copy :blue :blue-copy-in-green-copy) + (ctho/add-frame :frame-b2) + (cthc/make-component :b2 :frame-b2))) + +(defn- find-copied-shape + ([original-shape page parent-id] + (find-copied-shape original-shape page parent-id false)) + ([original-shape page parent-id ignore-label?] + ;; copied shape has the same name, is in the specified parent, and doesn't have a label + ;; for restored components we can ignore the label part + (->> (vals (:objects page)) + (filter #(and (= (:name %) (:name original-shape)) + (= (:parent-id %) parent-id) + (or ignore-label? (str/starts-with? (cthi/label (:id %)) " (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (ctho/add-frame :frame-blue {:name "frame-blue"})) + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + frame-red (cths/get-shape file :frame-red) + frame-blue (cths/get-shape file :frame-blue) + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id frame-blue)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id frame-red)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + page' (cthf/current-page file') + frame-red' (cths/get-shape file' :frame-red) + frame-blue' (cths/get-shape file' :frame-blue) + copied-blue1' (find-copied-shape frame-blue' page' (:id frame-red'))] + + ;; ==== Check + (t/is (= (:parent-id copied-blue1') (:id frame-red'))))))))) + +(t/deftest copy-shape-to-component + "Coping a rect into a component results in a copy of the rect inside the component" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (cthc/make-component :red :frame-red) + (ctho/add-frame :frame-blue {:name "frame-blue"})) + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + frame-red (cths/get-shape file :frame-red) + frame-blue (cths/get-shape file :frame-blue) + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id frame-blue)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id frame-red)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + page' (cthf/current-page file') + frame-red' (cths/get-shape file' :frame-red) + frame-blue' (cths/get-shape file' :frame-blue) + copied-blue1' (find-copied-shape frame-blue' page' (:id frame-red'))] + + ;; ==== Check + (t/is (= (:parent-id copied-blue1') (:id frame-red'))))))))) + +(t/deftest copy-component-to-frame + "Coping a component c1 into a frame results in a copy of c1 inside the frame" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (ctho/add-frame :frame-blue {:name "frame-blue"}) + (cthc/make-component :blue :frame-blue)) + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + frame-red (cths/get-shape file :frame-red) + frame-blue (cths/get-shape file :frame-blue) + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id frame-blue)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id frame-red)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + page' (cthf/current-page file') + frame-red' (cths/get-shape file' :frame-red) + frame-blue' (cths/get-shape file' :frame-blue) + copied-blue1' (find-copied-shape frame-blue' page' (:id frame-red'))] + + ;; ==== Check + (t/is (= (:parent-id copied-blue1') (:id frame-red'))))))))) + +(t/deftest copy-component-to-component + "Coping a component c1 into the main of a component c2 results in a copy of c1 inside c2" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (cthc/make-component :red :frame-red) + (ctho/add-frame :frame-blue {:name "frame-blue"}) + (cthc/make-component :blue :frame-blue)) + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + frame-red (cths/get-shape file :frame-red) + frame-blue (cths/get-shape file :frame-blue) + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id frame-blue)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id frame-red)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + page' (cthf/current-page file') + frame-red' (cths/get-shape file' :frame-red) + frame-blue' (cths/get-shape file' :frame-blue) + copied-blue1' (find-copied-shape frame-blue' page' (:id frame-red'))] + + ;; ==== Check + (t/is (not (ctk/main-instance? copied-blue1'))) + (t/is (= (:parent-id copied-blue1') (:id frame-red'))))))))) + +(t/deftest cut-paste-component-to-component + "Cutting a component c1 and pasting it into the main of a component c2 results in a restored main of C1 on root, + because its not allowed to have a main inside a main" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (cthc/make-component :red :frame-red) + (ctho/add-frame :frame-blue {:name "frame-blue"}) + (cthc/make-component :blue :frame-blue)) + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + frame-red (cths/get-shape file :frame-red) + frame-blue (cths/get-shape file :frame-blue) + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id frame-blue)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id frame-blue)) + (dw/delete-selected) + (dws/select-shape (:id frame-red)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + page' (cthf/current-page file') + frame-red' (cths/get-shape file' :frame-red) + frame-blue' (cths/get-shape file' :frame-blue) + copied-blue1' (find-copied-shape frame-blue' page' (:id frame-red')) + copied-blue2' (find-copied-shape frame-blue' page' uuid/zero true)] + + ;; ==== Check + (t/is (nil? copied-blue1')) + (t/is (ctk/main-instance? copied-blue2')) + (t/is (= (:parent-id copied-blue2') uuid/zero)))))))) + +(t/deftest copy-variant-container-into-component + "Coping a variant container into the main of a component results in a new variant-container on root, + because its not allowed to have a variant container inside a main" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (cthc/make-component :red :frame-red) + (thv/add-variant :v01 :c01 :m01 :c02 :m02)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + root (cths/get-shape-by-id file uuid/zero) + frame-red (cths/get-shape file :frame-red) + v01 (cths/get-shape file :v01) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id v01)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id frame-red)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + root' (cths/get-shape-by-id file' uuid/zero) + frame-red' (cths/get-shape file' :frame-red) + root-children' (->> (:shapes root') + (map #(cths/get-shape-by-id file' %)))] + + ;; ==== Check + ;; The main shape of the component have no children + (t/is (= 0 (count (:shapes frame-red')))) + ;; Root had two children, now have 3 + (t/is (= 2 (count (:shapes root)))) + (t/is (= 3 (count (:shapes root')))) + ;; Two of the children of root are variant-containers + (t/is (= 2 (count (filter ctk/is-variant-container? root-children')))))))))) + +(t/deftest cut-paste-variant-container-into-component + "Cuting and pasting a variant container into the main of a component results in a new variant-container on root, + because its not allowed to have a variant container inside a main" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (cthc/make-component :red :frame-red) + (thv/add-variant :v01 :c01 :m01 :c02 :m02)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + root (cths/get-shape-by-id file uuid/zero) + frame-red (cths/get-shape file :frame-red) + v01 (cths/get-shape file :v01) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id v01)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id v01)) + (dw/delete-selected) + (dws/select-shape (:id frame-red)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + root' (cths/get-shape-by-id file' uuid/zero) + frame-red' (cths/get-shape file' :frame-red) + root-children' (->> (:shapes root') + (map #(cths/get-shape-by-id file' %)))] + + ;; ==== Check + ;; The main shape of the component have no children + (t/is (= 0 (count (:shapes frame-red')))) + ;; Root had two children, now it still have two (because we have cutted one of them, and then created a new one) + (t/is (= 2 (count (:shapes root)))) + (t/is (= 2 (count (:shapes root')))) + ;; One of the children of root is a variant-container + (t/is (= 1 (count (filter ctk/is-variant-container? root-children')))))))))) + +(t/deftest copy-variant-into-different-variant-container + "Coping a variant into a different variant-container creates a new variant inside that container" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (thv/add-variant :v01 :c01 :m01 :c02 :m02) + (thv/add-variant :v02 :c03 :m03 :c04 :m04)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + m01 (cths/get-shape file :m01) + v02 (cths/get-shape file :v02) + components (cthc/get-components file) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id m01)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id v02)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + v02' (cths/get-shape file' :v02) + components' (cthc/get-components file')] + + ;; ==== Check + ;; v02 had two children, now it have 3 + (t/is (= 2 (count (:shapes v02)))) + (t/is (= 3 (count (:shapes v02')))) + + ;;There was 4 components, now there are 5 + (t/is (= 4 (count components))) + (t/is (= 5 (count components'))))))))) + +(t/deftest copy-variant-into-variant-another-container + "Coping a variant into a variant of a different variant-container creates a copy of the variant inside" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (thv/add-variant :v01 :c01 :m01 :c02 :m02) + (thv/add-variant :v02 :c03 :m03 :c04 :m04)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + m01 (cths/get-shape file :m01) + v02 (cths/get-shape file :v02) + m03 (cths/get-shape file :m03) + components (cthc/get-components file) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id m01)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id m03)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + v02' (cths/get-shape file' :v02) + m03' (cths/get-shape file' :m03) + components' (cthc/get-components file')] + + ;; ==== Check + ;; v02 had two children, now it have still 2 + (t/is (= 2 (count (:shapes v02)))) + (t/is (= 2 (count (:shapes v02')))) + + ;; m03 had no children, now it have 1 + (t/is (= 0 (count (:shapes m03)))) + (t/is (= 1 (count (:shapes m03')))) + + ;;There was 4 components, now there is still 4 + (t/is (= 4 (count components))) + (t/is (= 4 (count components'))))))))) + +(t/deftest copy-variant-into-its-variant-container + "Coping a variant into its own variant-container creates a new variant inside that container" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (thv/add-variant :v01 :c01 :m01 :c02 :m02)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + m01 (cths/get-shape file :m01) + v01 (cths/get-shape file :v01) + components (cthc/get-components file) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id m01)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id v01)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + v01' (cths/get-shape file' :v01) + components' (cthc/get-components file')] + + ;; ==== Check + ;; v01 had two children, now it have 3 + (t/is (= 2 (count (:shapes v01)))) + (t/is (= 3 (count (:shapes v01')))) + + ;;There was 2 components, now there are 3 + (t/is (= 2 (count components))) + (t/is (= 3 (count components'))))))))) + +(t/deftest copy-variant-into-itself + "Coping a variant into itself creates a new variant inside its container" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (thv/add-variant :v01 :c01 :m01 :c02 :m02)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + m01 (cths/get-shape file :m01) + v01 (cths/get-shape file :v01) + components (cthc/get-components file) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id m01)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id m01)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + v01' (cths/get-shape file' :v01) + components' (cthc/get-components file')] + + ;; ==== Check + ;; v01 had two children, now it have 3 + (t/is (= 2 (count (:shapes v01)))) + (t/is (= 3 (count (:shapes v01')))) + + ;;There was 2 components, now there are 3 + (t/is (= 2 (count components))) + (t/is (= 3 (count components'))))))))) + +(t/deftest copy-variant-into-a-brother + "Coping a variant into a brother variant creates a new variant inside its container" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (thv/add-variant :v01 :c01 :m01 :c02 :m02)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + m01 (cths/get-shape file :m01) + m02 (cths/get-shape file :m02) + v01 (cths/get-shape file :v01) + components (cthc/get-components file) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id m01)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id m02)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + v01' (cths/get-shape file' :v01) + components' (cthc/get-components file')] + + ;; ==== Check + ;; v01 had two children, now it have 3 + (t/is (= 2 (count (:shapes v01)))) + (t/is (= 3 (count (:shapes v01')))) + + ;;There was 2 components, now there are 3 + (t/is (= 2 (count components))) + (t/is (= 3 (count components'))))))))) + +(t/deftest copy-component-into-a-variant-container + "Coping a component into a variant-container creates a new variant inside that container" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (cthc/make-component :red :frame-red) + (thv/add-variant :v01 :c01 :m01 :c02 :m02)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + frame-red (cths/get-shape file :frame-red) + v01 (cths/get-shape file :v01) + components (cthc/get-components file) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id frame-red)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id v01)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + v01' (cths/get-shape file' :v01) + components' (cthc/get-components file')] + + ;; ==== Check + ;; v01 had two children, now it have 3 + (t/is (= 2 (count (:shapes v01)))) + (t/is (= 3 (count (:shapes v01')))) + + ;;There was 3 components, now there are 4 + (t/is (= 3 (count components))) + (t/is (= 4 (count components'))))))))) + +(t/deftest copy-component-into-a-variant + "Coping a component into a variant creates a copy of the component inside the variant" + (t/async + done + (let [;; ==== Setup + file (-> (cthf/sample-file :file1) + (ctho/add-frame :frame-red {:name "frame-red"}) + (cthc/make-component :red :frame-red) + (thv/add-variant :v01 :c01 :m01 :c02 :m02)) + + store (ths/setup-store file) + + ;; ==== Action + page (cthf/current-page file) + frame-red (cths/get-shape file :frame-red) + v01 (cths/get-shape file :v01) + m01 (cths/get-shape file :m01) + components (cthc/get-components file) + + features #{} + version 67 + + pdata (thp/simulate-copy-shape #{(:id frame-red)} (:objects page) {(:id file) file} page file features version) + + events + [(dws/select-shape (:id m01)) + (dw/paste-shapes pdata)]] + + (ths/run-store + store done events + (fn [new-state] + (let [;; ==== Get + file' (ths/get-file-from-state new-state) + v01' (cths/get-shape file' :v01) + m01' (cths/get-shape file' :m01) + components' (cthc/get-components file')] + + ;; ==== Check + ;; v01 had two children, now it have still 2 + (t/is (= 2 (count (:shapes v01)))) + (t/is (= 2 (count (:shapes v01')))) + + ;; m01 had no children, now it have 1 + (t/is (= 0 (count (:shapes m01)))) + (t/is (= 1 (count (:shapes m01')))) + + ;;There was 3 components, now there are still 3 + (t/is (= 3 (count components))) + (t/is (= 3 (count components'))))))))) \ No newline at end of file diff --git a/frontend/test/frontend_tests/runner.cljs b/frontend/test/frontend_tests/runner.cljs index 9c8db535e6..11dc224dfa 100644 --- a/frontend/test/frontend_tests/runner.cljs +++ b/frontend/test/frontend_tests/runner.cljs @@ -9,6 +9,7 @@ [frontend-tests.logic.copying-and-duplicating-test] [frontend-tests.logic.frame-guides-test] [frontend-tests.logic.groups-test] + [frontend-tests.logic.pasting-in-containers-test] [frontend-tests.plugins.context-shapes-test] [frontend-tests.tokens.import-export-test] [frontend-tests.tokens.logic.token-actions-test] @@ -37,6 +38,7 @@ 'frontend-tests.logic.copying-and-duplicating-test 'frontend-tests.logic.frame-guides-test 'frontend-tests.logic.groups-test + 'frontend-tests.logic.pasting-in-containers-test 'frontend-tests.plugins.context-shapes-test 'frontend-tests.tokens.import-export-test 'frontend-tests.tokens.logic.token-actions-test diff --git a/frontend/test/frontend_tests/tokens/context_menu_test.cljs b/frontend/test/frontend_tests/tokens/context_menu_test.cljs index 5341bf52b8..5037b69043 100644 --- a/frontend/test/frontend_tests/tokens/context_menu_test.cljs +++ b/frontend/test/frontend_tests/tokens/context_menu_test.cljs @@ -2,6 +2,7 @@ (:require [app.common.test-helpers.compositions :as tho] [app.common.test-helpers.files :as thf] + [app.common.test-helpers.ids-map :as thi] [app.common.test-helpers.shapes :as ths] [app.common.test-helpers.tokens :as tht] [app.common.types.tokens-lib :as ctob] @@ -16,38 +17,38 @@ (ctob/add-theme (ctob/make-token-theme :name "test-theme" :sets #{"test-token-set"})) (ctob/set-active-themes #{"/test-theme"}) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token-radius" - :type :border-radius - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token-color" - :type :color - :value "red")) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token-spacing" - :type :spacing - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token-sizing" - :type :sizing - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token-rotation" - :type :rotation - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token-opacity" - :type :opacity - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token-dimensions" - :type :dimensions - :value 10)) - (ctob/add-token-in-set "test-token-set" - (ctob/make-token :name "token-number" - :type :number - :value 10)))) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token-radius" + :type :border-radius + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token-color" + :type :color + :value "red")) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token-spacing" + :type :spacing + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token-sizing" + :type :sizing + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token-rotation" + :type :rotation + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token-opacity" + :type :opacity + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token-dimensions" + :type :dimensions + :value 10)) + (ctob/add-token (thi/id :test-token-set) + (ctob/make-token :name "token-number" + :type :number + :value 10)))) ;; app.main.data.workspace.tokens.application/generic-attributes (tho/add-group :group1) ;; app.main.data.workspace.tokens.application/rect-attributes diff --git a/frontend/test/frontend_tests/tokens/import_export_test.cljs b/frontend/test/frontend_tests/tokens/import_export_test.cljs index c0482d43f7..362b92e5ae 100644 --- a/frontend/test/frontend_tests/tokens/import_export_test.cljs +++ b/frontend/test/frontend_tests/tokens/import_export_test.cljs @@ -24,8 +24,8 @@ (dwti/import-file-stream "core") (rx/subs! (fn [tokens-lib] (t/is (instance? ctob/TokensLib tokens-lib)) - (t/is (= "red" (-> (ctob/get-set tokens-lib "core") - (ctob/token-by-name "color") + (t/is (= "red" (-> tokens-lib + (ctob/get-token-by-name "core" "color") (:value)))) (done)))))))) diff --git a/frontend/test/frontend_tests/tokens/logic/token_actions_test.cljs b/frontend/test/frontend_tests/tokens/logic/token_actions_test.cljs index 9a694dd33c..3f7c83007d 100644 --- a/frontend/test/frontend_tests/tokens/logic/token_actions_test.cljs +++ b/frontend/test/frontend_tests/tokens/logic/token_actions_test.cljs @@ -47,9 +47,12 @@ (-> (ctob/make-tokens-lib) (ctob/add-theme (ctob/make-token-theme :name "Theme A" :sets #{"Set A"})) (ctob/set-active-themes #{"/Theme A"}) - (ctob/add-set (ctob/make-token-set :name "Set A")) - (ctob/add-token-in-set "Set A" (ctob/make-token border-radius-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token reference-border-radius-token)))))) + (ctob/add-set (ctob/make-token-set :id (cthi/new-id! :set-a) + :name "Set A")) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token border-radius-token)) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token reference-border-radius-token)))))) (t/deftest test-apply-token (t/testing "applies token to shape and updates shape attributes to resolved value" @@ -190,8 +193,10 @@ file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] #(-> % - (ctob/add-token-in-set "Set A" (ctob/make-token color-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token color-alpha-token))))) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token color-token)) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token color-alpha-token))))) store (ths/setup-store file) rect-1 (cths/get-shape file :rect-1) rect-2 (cths/get-shape file :rect-2) @@ -248,7 +253,8 @@ :type :dimensions} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token dimensions-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token dimensions-token)))) store (ths/setup-store file) rect-1 (cths/get-shape file :rect-1) events [(dwta/apply-token {:shape-ids [(:id rect-1)] @@ -280,7 +286,8 @@ (ctho/add-frame :frame-1) (ctho/add-frame :frame-2 {:layout :grid}) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token spacing-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token spacing-token)))) store (ths/setup-store file) frame-1 (cths/get-shape file :frame-1) frame-2 (cths/get-shape file :frame-2) @@ -319,7 +326,8 @@ :type :sizing} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token sizing-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token sizing-token)))) store (ths/setup-store file) rect-1 (cths/get-shape file :rect-1) events [(dwta/apply-token {:shape-ids [(:id rect-1)] @@ -356,9 +364,12 @@ file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] #(-> % - (ctob/add-token-in-set "Set A" (ctob/make-token opacity-float)) - (ctob/add-token-in-set "Set A" (ctob/make-token opacity-percent)) - (ctob/add-token-in-set "Set A" (ctob/make-token opacity-invalid))))) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token opacity-float)) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token opacity-percent)) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token opacity-invalid))))) store (ths/setup-store file) rect-1 (cths/get-shape file :rect-1) rect-2 (cths/get-shape file :rect-2) @@ -404,7 +415,8 @@ :type :rotation} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token rotation-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token rotation-token)))) store (ths/setup-store file) rect-1 (cths/get-shape file :rect-1) events [(dwta/apply-token {:shape-ids [(:id rect-1)] @@ -434,7 +446,8 @@ :stroke-opacity 1, :stroke-width 5}]}}) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token stroke-width-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token stroke-width-token)))) store (ths/setup-store file) rect-with-stroke (cths/get-shape file :rect-1) rect-without-stroke (cths/get-shape file :rect-2) @@ -465,7 +478,8 @@ :type :font-size} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token font-size-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token font-size-token)))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -499,7 +513,8 @@ :type :number} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token line-height-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token line-height-token)))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -533,7 +548,8 @@ :type :letter-spacing} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token letter-spacing-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token letter-spacing-token)))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -567,7 +583,8 @@ :type :font-family} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token font-family-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token font-family-token)))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -601,7 +618,8 @@ :type :text-case} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token text-case-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token text-case-token)))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -635,7 +653,8 @@ :type :text-decoration} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token text-decoration-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token text-decoration-token)))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -669,7 +688,8 @@ :type :font-weight} file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token font-weight-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token font-weight-token)))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -795,7 +815,8 @@ {:frame-params {:layout :grid}}) (ctho/add-rect :rect-regular) (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token spacing-token)))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token spacing-token)))) store (ths/setup-store file) frame-layout (cths/get-shape file :frame-layout) rect-in-layout (cths/get-shape file :rect-in-layout) @@ -838,7 +859,8 @@ file (setup-file-with-tokens) file (-> file (update-in [:data :tokens-lib] - #(ctob/add-token-in-set % "Set A" (ctob/make-token color-token))) + #(ctob/add-token % (cthi/id :set-a) + (ctob/make-token color-token))) (cths/add-sample-library-color :color1 {:name "Test color" :color "#abcdef"}) (cths/update-shape :rect-1 :fills @@ -874,6 +896,7 @@ :value {:font-size "24px" :font-weight "bold" :font-family [(:font-id txt/default-text-attrs) "Arial" "sans-serif"] + :line-height "24px" :letter-spacing "2" :text-case "uppercase" :text-decoration "underline"} @@ -881,9 +904,9 @@ file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] #(-> % - (ctob/add-token-in-set "Set A" (ctob/make-token font-size-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token font-family-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token typography-token))))) + (ctob/add-token (cthi/id :set-a) (ctob/make-token font-size-token)) + (ctob/add-token (cthi/id :set-a) (ctob/make-token font-family-token)) + (ctob/add-token (cthi/id :set-a) (ctob/make-token typography-token))))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -895,7 +918,6 @@ (fn [new-state] (let [file' (ths/get-file-from-state new-state) text-1' (cths/get-shape file' :text-1) - text-1' (def text-1' text-1') style-text-blocks (->> (:content text-1') (txt/content->text+styles) (remove (fn [[_ text]] (str/empty? (str/trim text)))) @@ -909,6 +931,7 @@ (t/is (= (:font-size style-text-blocks) "24")) (t/is (= (:font-weight style-text-blocks) "700")) + (t/is (= (:line-height style-text-blocks) 1)) (t/is (= (:font-family style-text-blocks) "sourcesanspro")) (t/is (= (:letter-spacing style-text-blocks) "2")) (t/is (= (:text-transform style-text-blocks) "uppercase")) @@ -931,9 +954,9 @@ file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] #(-> % - (ctob/add-token-in-set "Set A" (ctob/make-token font-size-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token font-family-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token typography-token))))) + (ctob/add-token (cthi/id :set-a) (ctob/make-token font-size-token)) + (ctob/add-token (cthi/id :set-a) (ctob/make-token font-family-token)) + (ctob/add-token (cthi/id :set-a) (ctob/make-token typography-token))))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -972,8 +995,8 @@ file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] #(-> % - (ctob/add-token-in-set "Set A" (ctob/make-token font-size-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token typography-token))))) + (ctob/add-token (cthi/id :set-a) (ctob/make-token font-size-token)) + (ctob/add-token (cthi/id :set-a) (ctob/make-token typography-token))))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -1006,8 +1029,8 @@ file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] #(-> % - (ctob/add-token-in-set "Set A" (ctob/make-token font-size-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token typography-token))))) + (ctob/add-token (cthi/id :set-a) (ctob/make-token font-size-token)) + (ctob/add-token (cthi/id :set-a) (ctob/make-token typography-token))))) store (ths/setup-store file) text-1 (cths/get-shape file :text-1) events [(dwta/apply-token {:shape-ids [(:id text-1)] @@ -1043,9 +1066,12 @@ file (-> (setup-file-with-tokens) (update-in [:data :tokens-lib] #(-> % - (ctob/add-token-in-set "Set A" (ctob/make-token font-size-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token line-height-token)) - (ctob/add-token-in-set "Set A" (ctob/make-token letter-spacing-token)))) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token font-size-token)) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token line-height-token)) + (ctob/add-token (cthi/id :set-a) + (ctob/make-token letter-spacing-token)))) (cths/add-sample-typography :typography1 {:name "Test typography"})) content {:type "root" :children [{:type "paragraph-set" diff --git a/frontend/test/frontend_tests/tokens/logic/token_data_test.cljs b/frontend/test/frontend_tests/tokens/logic/token_data_test.cljs index 0329d05f1f..3314d88d7c 100644 --- a/frontend/test/frontend_tests/tokens/logic/token_data_test.cljs +++ b/frontend/test/frontend_tests/tokens/logic/token_data_test.cljs @@ -7,7 +7,9 @@ (ns frontend-tests.tokens.logic.token-data-test (:require [app.common.test-helpers.files :as cthf] + [app.common.test-helpers.ids-map :as cthi] [app.common.types.tokens-lib :as ctob] + [app.common.uuid :as uuid] [app.main.data.workspace.tokens.library-edit :as dwtl] [cljs.test :as t :include-macros true] [frontend-tests.helpers.pages :as thp] @@ -26,42 +28,97 @@ (-> (setup-file) (assoc-in [:data :tokens-lib] (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "Set A")))))) + (ctob/add-set (ctob/make-token-set :id (cthi/new-id! :test-token-set) + :name "Set A")))))) + +(t/deftest add-set + (t/async + done + (let [file (setup-file-with-token-lib) + store (ths/setup-store file) + events [(dwtl/create-token-set "Set B")]] + + (tohs/run-store-async + store done events + (fn [new-state] + (let [file' (ths/get-file-from-state new-state) + tokens-lib' (toht/get-tokens-lib file') + sets' (ctob/get-sets tokens-lib') + set-b' (ctob/get-set-by-name tokens-lib' "Set B")] + + (t/testing "Token lib contains two sets" + (t/is (= (count sets') 2)) + (t/is (some? set-b'))))))))) + +(t/deftest rename-set + (t/async + done + (let [file (setup-file-with-token-lib) + store (ths/setup-store file) + tokens-lib (toht/get-tokens-lib file) + set-a (ctob/get-set-by-name tokens-lib "Set A") + events [(dwtl/update-token-set (ctob/rename set-a "Set A updated") + "Set A updated")]] + + (tohs/run-store-async + store done events + (fn [new-state] + (let [file' (ths/get-file-from-state new-state) + tokens-lib' (toht/get-tokens-lib file') + sets' (ctob/get-sets tokens-lib') + set-a' (ctob/get-set-by-name tokens-lib' "Set A updated")] + + (t/testing "Set has been renamed" + (t/is (= (count sets') 1)) + (t/is (some? set-a'))))))))) (t/deftest duplicate-set (t/async done (let [file (setup-file-with-token-lib) store (ths/setup-store file) - events [(dwtl/duplicate-token-set "Set A" false)]] + events [(dwtl/duplicate-token-set (cthi/id :test-token-set))]] (tohs/run-store-async store done events (fn [new-state] (let [file' (ths/get-file-from-state new-state) token-lib (toht/get-tokens-lib file') - sets (ctob/get-sets token-lib) - set (ctob/get-set token-lib "Set A")] + sets (ctob/get-sets token-lib)] (t/testing "Token lib contains two sets" - (t/is (= (count sets) 2)) - (t/is (some? set))))))))) + (t/is (= (count sets) 2))))))))) (t/deftest duplicate-non-exist-set (t/async done (let [file (setup-file-with-token-lib) store (ths/setup-store file) - events [(dwtl/duplicate-token-set "Set B" false)]] + events [(dwtl/duplicate-token-set (uuid/next))]] (tohs/run-store-async store done events (fn [new-state] (let [file' (ths/get-file-from-state new-state) token-lib (toht/get-tokens-lib file') - sets (ctob/get-sets token-lib) - set (ctob/get-set token-lib "Set B")] + sets (ctob/get-sets token-lib)] (t/testing "Token lib contains one set" - (t/is (= (count sets) 1)) - (t/is (nil? set))))))))) \ No newline at end of file + (t/is (= (count sets) 1)))))))) + + (t/deftest delete-set + (t/async + done + (let [file (setup-file-with-token-lib) + store (ths/setup-store file) + events [(dwtl/delete-token-set (cthi/id :test-token-set))]] + + (tohs/run-store-async + store done events + (fn [new-state] + (let [file' (ths/get-file-from-state new-state) + tokens-lib' (toht/get-tokens-lib file') + sets' (ctob/get-sets tokens-lib')] + + (t/testing "Set has been deleted" + (t/is (= (count sets') 0)))))))))) \ No newline at end of file diff --git a/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs b/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs index 745321d79c..2341d7baf6 100644 --- a/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs +++ b/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs @@ -6,6 +6,7 @@ (ns frontend-tests.tokens.style-dictionary-test (:require + [app.common.test-helpers.ids-map :as cthi] [app.common.types.tokens-lib :as ctob] [app.main.data.style-dictionary :as sd] [beicon.v2.core :as rx] @@ -16,22 +17,28 @@ done (t/testing "resolves tokens using style-dictionary from a ids map" (let [tokens (-> (ctob/make-tokens-lib) - (ctob/add-set (ctob/make-token-set :name "core")) - (ctob/add-token-in-set "core" (ctob/make-token {:name "borderRadius.sm" - :value "12px" - :type :border-radius})) - (ctob/add-token-in-set "core" (ctob/make-token {:value "{borderRadius.sm} * 2" - :name "borderRadius.md-with-dashes" - :type :border-radius})) - (ctob/add-token-in-set "core" (ctob/make-token {:name "borderRadius.large" - :value "123456789012345" - :type :border-radius})) - (ctob/add-token-in-set "core" (ctob/make-token {:name "borderRadius.largePx" - :value "123456789012345px" - :type :border-radius})) - (ctob/add-token-in-set "core" (ctob/make-token {:name "borderRadius.largeFn" - :value "{borderRadius.sm} * 200000000" - :type :border-radius})) + (ctob/add-set (ctob/make-token-set :id (cthi/new-id! :core-set) + :name "core")) + (ctob/add-token (cthi/id :core-set) + (ctob/make-token {:name "borderRadius.sm" + :value "12px" + :type :border-radius})) + (ctob/add-token (cthi/id :core-set) + (ctob/make-token {:value "{borderRadius.sm} * 2" + :name "borderRadius.md-with-dashes" + :type :border-radius})) + (ctob/add-token (cthi/id :core-set) + (ctob/make-token {:name "borderRadius.large" + :value "123456789012345" + :type :border-radius})) + (ctob/add-token (cthi/id :core-set) + (ctob/make-token {:name "borderRadius.largePx" + :value "123456789012345px" + :type :border-radius})) + (ctob/add-token (cthi/id :core-set) + (ctob/make-token {:name "borderRadius.largeFn" + :value "{borderRadius.sm} * 200000000" + :type :border-radius})) (ctob/get-all-tokens))] (-> (sd/resolve-tokens tokens) (rx/sub! diff --git a/frontend/test/frontend_tests/tokens/token_form_test.cljs b/frontend/test/frontend_tests/tokens/token_form_test.cljs index d42a325b0f..61ac67d934 100644 --- a/frontend/test/frontend_tests/tokens/token_form_test.cljs +++ b/frontend/test/frontend_tests/tokens/token_form_test.cljs @@ -12,15 +12,15 @@ (t/deftest test-valid-token-name-schema ;; Allow regular namespace token names - (t/is (some? (m/validate wtf/valid-token-name-schema "Foo"))) - (t/is (some? (m/validate wtf/valid-token-name-schema "foo"))) - (t/is (some? (m/validate wtf/valid-token-name-schema "FOO"))) - (t/is (some? (m/validate wtf/valid-token-name-schema "Foo.Bar.Baz"))) + (t/is (some? (m/validate wtf/well-formed-token-name-schema "Foo"))) + (t/is (some? (m/validate wtf/well-formed-token-name-schema "foo"))) + (t/is (some? (m/validate wtf/well-formed-token-name-schema "FOO"))) + (t/is (some? (m/validate wtf/well-formed-token-name-schema "Foo.Bar.Baz"))) ;; Allow trailing tokens - (t/is (nil? (m/validate wtf/valid-token-name-schema "Foo.Bar.Baz...."))) + (t/is (nil? (m/validate wtf/well-formed-token-name-schema "Foo.Bar.Baz...."))) ;; Disallow multiple separator dots - (t/is (nil? (m/validate wtf/valid-token-name-schema "Foo..Bar.Baz"))) + (t/is (nil? (m/validate wtf/well-formed-token-name-schema "Foo..Bar.Baz"))) ;; Disallow any special characters - (t/is (nil? (m/validate wtf/valid-token-name-schema "Hey Foo.Bar"))) - (t/is (nil? (m/validate wtf/valid-token-name-schema "Hey😈Foo.Bar"))) - (t/is (nil? (m/validate wtf/valid-token-name-schema "Hey%Foo.Bar")))) + (t/is (nil? (m/validate wtf/well-formed-token-name-schema "Hey Foo.Bar"))) + (t/is (nil? (m/validate wtf/well-formed-token-name-schema "Hey😈Foo.Bar"))) + (t/is (nil? (m/validate wtf/well-formed-token-name-schema "Hey%Foo.Bar")))) diff --git a/frontend/text-editor/src/index.html b/frontend/text-editor/src/index.html index b53cd0a7d5..0dd8d4bbd8 100644 --- a/frontend/text-editor/src/index.html +++ b/frontend/text-editor/src/index.html @@ -528,8 +528,16 @@ Module._init_shapes_pool(1); setupInteraction(canvas); + canvas.addEventListener('click', (e) => { + console.log('click', e.type, e); + useShape(uuid); + const caretPosition = Module._get_caret_position_at(e.offsetX, e.offsetY); + console.log('caretPosition', caretPosition); + }) + storeFonts(fonts) + console.log("text shape", uuid); useShape(uuid); Module._set_parent(0, 0, 0, 0); Module._set_shape_type(5); diff --git a/frontend/text-editor/src/wasm/lib.js b/frontend/text-editor/src/wasm/lib.js index 76289e1c78..dc64c5951a 100644 --- a/frontend/text-editor/src/wasm/lib.js +++ b/frontend/text-editor/src/wasm/lib.js @@ -471,6 +471,7 @@ export function updateTextShape(root, fonts) { Module._set_shape_text_content(); } + Module._update_shape_text_layout(); } export function addTextShape(text, fonts) { diff --git a/frontend/text-editor/vite.config.js b/frontend/text-editor/vite.config.js index a6e7b4daf4..34d8e7cdfc 100644 --- a/frontend/text-editor/vite.config.js +++ b/frontend/text-editor/vite.config.js @@ -1,12 +1,61 @@ -import { resolve } from "node:path"; +import path from "node:path"; +import fs from 'node:fs/promises'; import { defineConfig } from "vite"; -import { coverageConfigDefaults } from "vitest/config" +import { coverageConfigDefaults } from "vitest/config"; + +async function waitFor(timeInMillis) { + return new Promise(resolve => + setTimeout(_ => resolve(), timeInMillis) + ); +} + +const wasmWatcherPlugin = (options = {}) => { + return { + name: "vite-wasm-watcher-plugin", + configureServer(server) { + server.watcher.add("../resources/public/js/render_wasm.wasm") + server.watcher.add("../resources/public/js/render_wasm.js") + server.watcher.on("change", async (file) => { + if (file.includes("../resources/")) { + // If we copy the files immediately, we end + // up with an empty .js file (I don't know why). + await waitFor(100) + // copy files. + await fs.copyFile( + path.resolve(file), + path.resolve('./src/wasm/', path.basename(file)) + ) + console.log(`${file} changed`); + } + }); + + server.watcher.on("add", async (file) => { + if (file.includes("../resources/")) { + await fs.copyFile( + path.resolve(file), + path.resolve("./src/wasm/", path.basename(file)), + ); + console.log(`${file} added`); + } + }); + + server.watcher.on("unlink", (file) => { + if (file.includes("../resources/")) { + console.log(`${file} removed`); + } + }); + }, + }; +}; export default defineConfig({ + plugins: [ + wasmWatcherPlugin() + ], root: "./src", resolve: { alias: { - "~": resolve("./src"), + "~": path.resolve("./src"), }, }, build: { diff --git a/frontend/translations/af.po b/frontend/translations/af.po index 95e25b1f3f..045c5e0b00 100644 --- a/frontend/translations/af.po +++ b/frontend/translations/af.po @@ -144,7 +144,7 @@ msgstr "Skep 'n rekening" msgid "auth.sidebar-tagline" msgstr "Die oopbron-oplossing vir ontwerp en prototipering." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Diensbepalings" @@ -163,7 +163,7 @@ msgstr "Ons het 'n verifikasie-e-pos aan gestuur" msgid "branding-illustrations-marketing-pieces" msgstr "...handelsmerk, illustrasies, bemarkingsstukke, ens." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publiseer" @@ -235,7 +235,7 @@ msgstr "Deel prototipes" msgid "common.share-link.view-all" msgstr "Kies Alles" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Depubliseer" @@ -349,7 +349,7 @@ msgstr "Die token sal verval op %s" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "Die token het nie 'n verval datum nie" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Voeg by as Gedeelde Biblioteek" @@ -357,27 +357,27 @@ msgstr "Voeg by as Gedeelde Biblioteek" msgid "dashboard.change-email" msgstr "Verander e-pos" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopieer)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Skep 'n nuwe span" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Jou Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Verwyder span" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Laai Penpot-lêer (.penpot) af" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Laai standaardlêer af (.svg + .json)" @@ -393,7 +393,7 @@ msgstr "Dupliseer %s lêers" msgid "dashboard.export-binary-multi" msgstr "Laai %s Penpot lêers (.penpot) af" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Voer borde as PDF uit" diff --git a/frontend/translations/ar.po b/frontend/translations/ar.po index bf4dcdc00d..3b865e6a30 100644 --- a/frontend/translations/ar.po +++ b/frontend/translations/ar.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: \"Mahmoud A. Rabo\" \n" -"Language-Team: Arabic " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Alejandro Alonso \n" +"Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -147,7 +147,7 @@ msgstr "إنشاء حساب" msgid "auth.sidebar-tagline" msgstr "الحل (مفتوح المصدر) للتصميم والنمذجة." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "شروط الخدمة" @@ -164,7 +164,7 @@ msgstr "لقد أرسلنا رسالة تحقق إلى بريدك الالكتر msgid "branding-illustrations-marketing-pieces" msgstr "...علامة تجارية، رسوم توضيحية، قطع تسويقية، إلخ." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "أنشر" @@ -240,7 +240,7 @@ msgstr "مشاركة النماذج" msgid "common.share-link.view-all" msgstr "اختر الكل" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "إلغاء النشر" @@ -302,7 +302,7 @@ msgstr "تم إنشاء رمز الوصول بنجاح." msgid "dashboard.access-tokens.empty.add-one" msgstr "اضغط على الزر \"إنشاء رمز جديد\" لإنشاء واحد." -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "أضف كمكتبة مشتركة" @@ -310,27 +310,27 @@ msgstr "أضف كمكتبة مشتركة" msgid "dashboard.change-email" msgstr "تغيير البريد الإلكتروني" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(نسخة)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "إنشاء فريق جديد" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Penpot الخاص بك" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "حذف الفريق" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "تنزيل ملف Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "تنزيل ملف قياسي (.svg + .json)" @@ -346,7 +346,7 @@ msgstr "تكرير %s الملفات" msgid "dashboard.export-binary-multi" msgstr "تنزيل ملفات ٪s Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "صدر اللوحة الفنية الى ملف PDF…" @@ -362,7 +362,7 @@ msgstr "تصدير %s الملفات" msgid "dashboard.export-multiple.selected" msgstr "%s من %s عناصر مختارة" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "استخراج" @@ -530,11 +530,11 @@ msgstr "تحميل البيانات للخادم (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "تحميل الملف: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "قم بدعوة للفريق" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "ترك الفريق" @@ -546,7 +546,7 @@ msgstr "المكتبات & القوالب" msgid "dashboard.libraries-and-templates.explore" msgstr "استعرض المزيد منهم وتعلم كيف تساهم" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "حدثت مشكلة في استيراد النموذج. لم يتم استيراد النموذج." @@ -578,7 +578,7 @@ msgstr "الانتقال إلى فريق آخر" msgid "dashboard.new-file" msgstr "+ ملف جديد" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "ملف جديد" @@ -586,7 +586,7 @@ msgstr "ملف جديد" msgid "dashboard.new-project" msgstr "+ مشروع جديد" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "مشروع جديد" @@ -594,7 +594,7 @@ msgstr "مشروع جديد" msgid "dashboard.no-matches-for" msgstr "لم يتم العثور على مطابقات ل \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "ستظهر المشاريع المثبتة هنا" @@ -610,7 +610,7 @@ msgstr "تم التحقق من عنوان بريدك الإلكتروني بنج msgid "dashboard.notifications.password-saved" msgstr "تم حفظ كلمة المرور بنجاح!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s الأعضاء" @@ -626,7 +626,7 @@ msgstr "الخيارات" msgid "dashboard.password-change" msgstr "تغيير كلمة المرور" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "تثبيت / إلغاء التثبيت" @@ -647,7 +647,7 @@ msgstr "إزالة كمكتبة مشتركة" msgid "dashboard.save-settings" msgstr "حفظ الإعدادات" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "بحث…" @@ -683,7 +683,7 @@ msgstr "تم تكرار ملفك بنجاح" msgid "dashboard.success-duplicate-project" msgstr "تم نسخ مشروعك بنجاح" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "تم نقل ملفك بنجاح" @@ -695,15 +695,15 @@ msgstr "تم نقل الملفات بنجاح" msgid "dashboard.success-move-project" msgstr "تم نقل مشروعك بنجاح" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "معلومات الفريق" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "أعضاء الفريق" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "مشاريع الفريق" @@ -719,7 +719,7 @@ msgstr "نتائج البحث" msgid "dashboard.type-something" msgstr "اكتب لإظهار نتائج البحث" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "الغاء نشر المكتبة" @@ -727,19 +727,19 @@ msgstr "الغاء نشر المكتبة" msgid "dashboard.update-settings" msgstr "تحديث الإعدادات" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "نشط" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "عندما يتم تشغيل هذا الخطاف ، سيتم تسليم تفاصيل الحدث" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "نوع المحتوى" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "إنشاء الرد التلقائي على الويب" @@ -755,7 +755,7 @@ msgstr "البريد الالكتروني" msgid "dashboard.your-name" msgstr "اسمك" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Penpot الخاص بك" @@ -771,11 +771,11 @@ msgstr "إنتباه" msgid "ds.component-subtitle" msgstr "عناصر سيتم تحديثها:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "إلغاء الأمر" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "حسنا" @@ -815,11 +815,11 @@ msgstr "متم التحقق من صحة البريد الإلكتروني" msgid "errors.email-as-password" msgstr "لا يمكنك استخدام بريدك الإلكتروني ككلمة مرور" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "يحتوي البريد الإلكتروني «%s» على العديد من تقارير الارتداد الدائم." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "تم الإبلاغ عن البريد الإلكتروني «٪ s» كبريد عشوائي أو مرتد بشكل دائم." @@ -833,7 +833,7 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "الميزة '٪ s' غير مدعومة." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "حدث خطأ ما." @@ -878,7 +878,7 @@ msgstr "يبدو أن محتويات الصورة لا تتطابق مع امت msgid "errors.media-type-not-allowed" msgstr "يبدو أن هذه ليست صورة صالحة." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "يحتوي الملف الشخصي الذي تدعوه على رسائل بريد إلكتروني مكتومة (تقارير البريد " @@ -898,7 +898,7 @@ msgstr "يجب ألا تقل كلمة المرور عن 8 أحرف" msgid "errors.profile-blocked" msgstr "هذا الملف الشخصي محظور" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "يحتوي ملفك الشخصي على رسائل بريد إلكتروني مكتومة (تقارير البريد المزعجة أو " @@ -908,15 +908,15 @@ msgstr "" msgid "errors.registration-disabled" msgstr "التسجيل معطل حاليا." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "أعضاء غير كافيين لمغادرة الفريق ، ربما تريد حذفه." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "العضو الذي تحاول تعيينه غير موجود." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "لا يمكن للمالك مغادرة الفريق ، يجب إعادة تعيين دور المالك." @@ -928,23 +928,23 @@ msgstr "حدث خطأ غير متوقع." msgid "errors.unexpected-token" msgstr "رمز غير معروف" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "خطأ في الاتصال ، عنوان إلكتروني لا يمكن الوصول إليه" -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "آخر تسليم لم يكن ناجحًا." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "نفذ الوقت" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "خطأ غير متوقع في التحقق" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "حالة غير متوقعة٪ s" @@ -1006,19 +1006,19 @@ msgstr "حدث خطأ" msgid "inspect.attributes.blur" msgstr "الضبابية" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "تفتيش قيمة الطمس" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "تفتيش صفات اللون" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLAتتفتيش صفات اللون" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBAفتش اللون" @@ -1026,7 +1026,7 @@ msgstr "RGBAفتش اللون" msgid "inspect.attributes.fill" msgstr "املأ" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "تحميل صورة المصدر" @@ -1116,67 +1116,70 @@ msgstr "صلب" msgid "inspect.attributes.stroke.width" msgstr "عرض" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "صياغة الحروف" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "عائلة الخط" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "حجم الخط" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "نوع الخط" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "وزن الخط" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "تباعد الحروف" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "ارتفاع الخط" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "زخرفة النص" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "لا شئ" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "مسطر" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "تغيير النص" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "حالة العنوان" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "أحرف صغيرة" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "لا شئ" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "الأحرف الكبيرة" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "إذا كنت تريد معرفة المزيد عن فحص التصميم ، فتفضل بزيارة مركز مساعدة لPenpot" @@ -1236,7 +1239,7 @@ msgstr "نص" msgid "inspect.tabs.info" msgstr "معلومات" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "الاختصارات" @@ -1248,11 +1251,11 @@ msgstr "إقبل" msgid "labels.add-custom-font" msgstr "إضافة خط مخصص" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "مشرف" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "الكل" @@ -1275,19 +1278,19 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "مدخل خاطأ" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "الغاء" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "غلق" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "تعليقات" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "مجتمع" @@ -1295,7 +1298,7 @@ msgstr "مجتمع" msgid "labels.confirm-password" msgstr "تأكيد كلمة المرور" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "استمر" @@ -1307,7 +1310,7 @@ msgstr "تابع مع" msgid "labels.continue-with-penpot" msgstr "يمكنك المتابعة مع حساب Penpot" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "انشاء" @@ -1327,7 +1330,7 @@ msgstr "خطوط مخصصة" msgid "labels.dashboard" msgstr "لوحة التحكم" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "حذف" @@ -1339,7 +1342,7 @@ msgstr "حذف التعليق" msgid "labels.delete-comment-thread" msgstr "حذف موضوع" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "حذف الدعوة" @@ -1347,11 +1350,11 @@ msgstr "حذف الدعوة" msgid "labels.delete-multi-files" msgstr "حذف %s ملفات" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "المسودات" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "تعديل" @@ -1359,15 +1362,15 @@ msgstr "تعديل" msgid "labels.edit-file" msgstr "تعديل ملف" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "محرر" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "منتهي الصلاحية" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "استخراج" @@ -1391,15 +1394,15 @@ msgstr "موفري الخط" msgid "labels.font-variants" msgstr "الأنماط" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "الخطوط" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "مستودع Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "إعطاء ملاحظات" @@ -1407,11 +1410,11 @@ msgstr "إعطاء ملاحظات" msgid "labels.go-back" msgstr "الرجوع للخلف" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "مركز المساعدة" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "إخفاء التعليقات التي تم حلها" @@ -1427,7 +1430,7 @@ msgstr "شيء سيء حدث الرجاء إعادة محاولة العملية msgid "labels.internal-error.main-message" msgstr "خطأ داخلي" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "الدعوات" @@ -1435,7 +1438,7 @@ msgstr "الدعوات" msgid "labels.language" msgstr "اللغة" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "المكتبات والقوالب" @@ -1443,15 +1446,15 @@ msgstr "المكتبات والقوالب" msgid "labels.log-or-sign" msgstr "تسجيل الدخول أو الاشتراك" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "تسجيل خروج" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "عضو" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "الأعضاء" @@ -1459,11 +1462,11 @@ msgstr "الأعضاء" msgid "labels.new-password" msgstr "كلمة مرور جديدة" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "ليس لديك أي إشعارات تعليق معلقة" -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "لا توجد دعوات." @@ -1476,7 +1479,7 @@ msgstr "قد لا تكون هذه الصفحة موجودة أو ليس لديك msgid "labels.not-found.main-message" msgstr "عفواً!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "0 ملف" @@ -1496,7 +1499,7 @@ msgstr[3] "بعض" msgstr[4] "العديد" msgstr[5] "غير ذلك" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "0" @@ -1519,7 +1522,7 @@ msgstr "خاصة بك" msgid "labels.or" msgstr "أو" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "مالك" @@ -1527,7 +1530,7 @@ msgstr "مالك" msgid "labels.password" msgstr "كلمة المرور" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "قيد الانتظار" @@ -1535,11 +1538,11 @@ msgstr "قيد الانتظار" msgid "labels.profile" msgstr "الملف الشخصي" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "المشاريع" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "ملاحظات الإصدار" @@ -1548,11 +1551,11 @@ msgstr "ملاحظات الإصدار" msgid "labels.remove" msgstr "إزالة" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "إزالة العضو" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "اعاده تسميه" @@ -1560,7 +1563,7 @@ msgstr "اعاده تسميه" msgid "labels.rename-team" msgstr "إعادة تسمية الفريق" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "إعادة إرسال الدعوة" @@ -1568,11 +1571,11 @@ msgstr "إعادة إرسال الدعوة" msgid "labels.retry" msgstr "أعد المحاولة" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "دور" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "حفظ" @@ -1596,7 +1599,7 @@ msgstr "نحن في صيانة مبرمجة لأنظمتنا." msgid "labels.service-unavailable.main-message" msgstr "الخدمة غير متوفرة" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "إعدادات" @@ -1604,11 +1607,11 @@ msgstr "إعدادات" msgid "labels.share-prototype" msgstr "مشاركة النموذج الأولي" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "المكتبات المشتركة" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "إظهار كافة التعليقات" @@ -1616,15 +1619,15 @@ msgstr "إظهار كافة التعليقات" msgid "labels.show-comments-list" msgstr "قائمة التعليقات" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "إظهار تعليقاتك فقط" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "الحالة" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "الدروس" @@ -1648,7 +1651,7 @@ msgstr "تحميل الخطوط المخصصة" msgid "labels.uploading" msgstr "جارٍ الرفع …" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "مشاهد" @@ -1656,11 +1659,11 @@ msgstr "مشاهد" msgid "labels.write-new-comment" msgstr "كتابة تعليق جديد" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(أنت)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "حسابك" @@ -1778,11 +1781,11 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا الخط؟ لن ي msgid "modals.delete-font.title" msgstr "حذف الخط" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "هل أنت متأكد أنك تريد حذف هذه الصفحة؟" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "حذف الصفحة" @@ -1798,49 +1801,49 @@ msgstr "هل أنت متأكد أنك تريد حذف هذا المشروع؟" msgid "modals.delete-project-confirm.title" msgstr "حذف المشروع" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "حذف الفريق" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "هل أنت متأكد أنك تريد حذف هذا الفريق؟ سيتم حذف جميع المشاريع والملفات " "المرتبطة بالفريق نهائيًا." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "حذف الفريق" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "حذف عضو" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "هل أنت متأكد أنك تريد حذف هذا العضو من الفريق؟" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "حذف العضو" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "إرسال دعوة" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "رسائل البريد الإلكتروني، مفصولة بفواصل" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "ادعُ الأعضاء إلى الفريق" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "نظرًا لأنك العضو الوحيد في هذا الفريق ، فسيتم حذف الفريق مع مشاريعه وملفاته." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "هل أنت متأكد أنك تريد مغادرة فريق %s ؟" @@ -1866,37 +1869,37 @@ msgstr "حدد عضوا للترقية" msgid "modals.leave-and-reassign.title" msgstr "حدد عضوا للترقية" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "ترك الفريق" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "هل أنت متأكد أنك تريد مغادرة هذا الفريق؟" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "مغادرة الفريق" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "كمية الدفع" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "رقى" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "إذا قمت بنقل الملكية ، فسوف تقوم بتغيير دورك إلى المسؤول ، وستفقد بعض " "الأذونات على هذا الفريق. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "هل أنت متأكد أنك تريد ترقية هذا المستخدم إلى مالك؟" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "الترقية إلى مالك" @@ -1937,25 +1940,25 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "تحديث المكونات في مكتبة مشتركة" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "تحديث المكون" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "إلغاﺀ" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "أنت على وشك تحديث مكون في مكتبة مشتركة. قد يؤثر هذا على الملفات الأخرى التي " "تستخدمها." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "تحديث المكون في المكتبة المشتركة" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "تم إرسال الدعوة بنجاح" @@ -2045,7 +2048,7 @@ msgstr "دعوة أعضاء" msgid "onboarding.choice.team-up.invite-members-info" msgstr "تذكر أن تشمل الجميع. المطورين والمصممين والمديرين ... التنوع يضيف :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "دعوة مع الدور:" @@ -2111,445 +2114,445 @@ msgstr "Penpotأهلا بك في" msgid "profile.recovery.go-to-login" msgstr "اذهب إلى تسجيل الدخول" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "مكرر" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "الأساسيات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "لوحة القيادة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "مشاهد" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "مساحة العمل" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "محاذاة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "تعديل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "عام" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "عام" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "القائمة الرئيسية" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "تعديل الطبقات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "التنقل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "التنقل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "التنقل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "اللوحات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "مسارات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "الأشكال" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "أدوات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "تكبير" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "تكبير" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "تعليقات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "إضافة عقدة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "محاذاة لأسفل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "محاذاة المركز أفقيًا" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "محاذاة اليسار" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "محاذاة اليمين" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "‌محاذاة الأعلى" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "محاذاة المركز عموديًا" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "إنشاء لوحة من الاختيار" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "فرق منطقي" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "استبعاد منطقي" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "تقاطع منطقي" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "الاتحاد المنطقي" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "أرسل إلى الخلف" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "إرسال إلى الوراء" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "ثابر للأمام" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "أحضر إلى الأمام" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "مسح التراجع" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "إنسخ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "أضف جديد" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "إقطع" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "تصغير" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "حذف" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "حذف العقدة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "إفصل المكون" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "منحنى" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "الشكل البيضاوي" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "لوحة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "أرسم المسار" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "المسار" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "مستطيل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "نص" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "كرر" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "إلغي" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "تصدير الأشكال" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "تكبير لتناسب الجميع" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "قلب أفقيًا" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "قلب عموديًا" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "إنتقل إلى المسودات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "إذهب إلى المكتبات المشتركة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "بحث" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "مجموعة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "وزع أفقيًا" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "إظهار / إخفاء واجهة المستخدم" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "تكبير" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "إدراج صورة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "ربط العقد" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "إصنع زاوية" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "إصنع منحنى" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "قناع" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "دمج العقد" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "تحرك" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "تحرك بسرعة لأسفل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "تحرك يسارا بسرعة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "تحرك يميناً بسرعة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "تحرك للأعلى بسرعة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "نقل العقدة" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "تحرك لأسفل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "تحرك يساراً" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "تحرك يميناً" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "تحرك للأعلى" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "اللوحة التالية" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "لا يوجد إختصارات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "ضبط التعتيم على 100٪" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "اضبط التعتيم على 10٪" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "اضبط التعتيم على 20٪" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "اضبط التعتيم على 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "اضبط التعتيم على 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "اضبط التعتيم على 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "اضبط التعتيم على 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "اضبط التعتيم على 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "اضبط التعتيم على 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "اضبط التعتيم على 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "أداة انتقاء اللون" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "إذهب إلى لوحة المعلومات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "تبديل الطبقات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "أضف\\أزل ثني التخطيط" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "قفل\\فتح" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "قفل النسب" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "تبديل لوحة النص" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "أظهر\\أخف" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "تبديل أسلوب التكبير" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "الخط التحتي" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "الغاء" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "فك التجميع" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "كشف القناع" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "النشر عموديا" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "تنقيص عدسة التكبير" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "زيادة عدسة التكبير" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "كبر المحدد" @@ -2601,19 +2604,19 @@ msgstr "كلمة المرور - Penpot" msgid "title.settings.profile" msgstr "واجهة الحساب - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "الدعوات - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "أعضاء الفريق - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "إعدادات - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "خطافات الويب - %s - Penpot" @@ -2686,39 +2689,39 @@ msgstr "أطهر التفاعلات بالنقر" msgid "viewer.header.sitemap" msgstr "خريطة الموقع" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "محاذاة المركز الأفقي" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "محاذاة المركز الأفقي (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "توزيع المسافات الأفقية (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "محاذاة لليسار (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "محاذاة لليمين (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "محاذاة للأسفل (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "محاذاة للمركز العمودي (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "توزيع التباعد الرئسي (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "محاذاة أعلى (%s)" @@ -2727,31 +2730,31 @@ msgstr "محاذاة أعلى (%s)" msgid "workspace.assets.assets" msgstr "أصول" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "كل الأصول" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "الألوان" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "عناصر" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "إيجاد مجموعة" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "\"ستسمى عناصرك تلقائيا ك\"اسم مجموعة\" \"اسم عنصر" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "امسح" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "انسخ" @@ -2759,7 +2762,7 @@ msgstr "انسخ" msgid "workspace.assets.duplicate-main" msgstr "انسخ الأصل" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "التحرير" @@ -2768,15 +2771,15 @@ msgstr "التحرير" msgid "workspace.assets.graphics" msgstr "رسومات" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "مجموعة" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "اسم المجموعة" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "المكتبة المحلية" @@ -2788,15 +2791,15 @@ msgstr "الأصل غير موجود" msgid "workspace.assets.open-library" msgstr "افتح ملف المكتب" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "إعادة تسمية" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "إعادة تسمية المجموعة" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "الخث عن أصل" @@ -2816,7 +2819,7 @@ msgstr[5] "" msgid "workspace.assets.shared-library" msgstr "مكتبة مشتركة" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "الطباعة" @@ -2841,7 +2844,7 @@ msgstr "تباعد الحروف" msgid "workspace.assets.typography.line-height" msgstr "طول الخط" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "أسلوب خط النص" @@ -2853,7 +2856,7 @@ msgstr "أسلوب خط النص" msgid "workspace.assets.typography.text-transform" msgstr "تحويل النص" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "فك التجميع" @@ -2861,7 +2864,7 @@ msgstr "فك التجميع" msgid "workspace.focus.focus-mode" msgstr "وضع التركيز" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "تعطيل التركيز" @@ -2881,11 +2884,11 @@ msgstr "الانحدار الخطي" msgid "workspace.gradients.radial" msgstr "الانحدار الشعاعي" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "إبطال المحاذاة الدينماكية" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Disable proportional scale" @@ -2894,19 +2897,19 @@ msgstr "Disable proportional scale" msgid "workspace.header.menu.disable-scale-text" msgstr "إبطال المقياس النسبي" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "إبطال الفرقعة للخ\\وط الإرشادية" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "إبطال الفرقعة للبكسل" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "تككين المحاذاة الدينماكية" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "تمكين المقياس النسبي" @@ -2915,87 +2918,87 @@ msgstr "تمكين المقياس النسبي" msgid "workspace.header.menu.enable-scale-text" msgstr "تمكين نص المقياس" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "الفرقعة للخطوط الإرشادية" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "تمكين الفرقعة للبكسل" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "إخفاء أسماء البورد" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "إخفاء لون اللوحة" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "إخفاء تشبيك اللوحة" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "إخفاء المسطرات" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "إخفاء لوحة أسلوب خط" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "التحرير" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "الملف" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "المساعدة و المعلومة" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "التفضيلات" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "المنظر" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "إعادة" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "حدد الجميع" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "أظهر أسماء البورد" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "أظهر لون اللوحة" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Show pixel grid" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "أظهر المسطرات" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "أظهر لوخة أسلوب الخط" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "الإلغاء" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "إعادة ضبط" @@ -3016,11 +3019,11 @@ msgstr "حفظ الملف" msgid "workspace.header.unsaved" msgstr "تغييرات غير محفوظة" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "وضع العرض (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "تكبير" @@ -3032,7 +3035,7 @@ msgstr "مقياس الملأ" msgid "workspace.header.zoom-fit" msgstr "تقليص المقياس للتناسب" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "التكبير لتناسب الجميع" @@ -3040,7 +3043,7 @@ msgstr "التكبير لتناسب الجميع" msgid "workspace.header.zoom-full-screen" msgstr "تكبير الشاشة" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "تكبير" @@ -3053,10 +3056,6 @@ msgstr "تحرير التشبيك" msgid "workspace.libraries.add" msgstr "الإضافة" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s الألوان" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "لا يوجد أنماط اللون في مكتبتك" @@ -3083,31 +3082,23 @@ msgstr "الألوان المؤخرة" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB مكملات" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "حفظ أسلوب اللون" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s العناصر" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "مكتبة الملف" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s الرسومات" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "المكتبات في هذا الملف" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "المكتبات" @@ -3116,63 +3107,59 @@ msgstr "المكتبات" msgid "workspace.libraries.library" msgstr "المكتبة" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "تحديث المكتبة" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "لا يوجد مكتبات مشتركة تحتاج إلى تحديث" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "لا يوجد ما يطابق هذا “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "البحث في المكتبات المشتركة" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "مكتبات مشتركة" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "كتابات عديدة" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "إلغاء روابط كل الكتابات" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s الكتابات" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "التحديث" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "رؤية جميع التغييرات" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "التحديثات" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "انقر على زر +لإضافة التفاعلات" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "الطمس" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "تطميس المجموعة" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "تطميس المحدد" @@ -3180,31 +3167,31 @@ msgstr "تطميس المحدد" msgid "workspace.options.canvas-background" msgstr "خلفية اللوحة القماشية" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "محتوى المقطع" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "العنصر" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "حاشية" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "النسخ" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "إنشاء حاشية" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "تحرير حاشية" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "أصل" @@ -3248,7 +3235,7 @@ msgstr "أعلى" msgid "workspace.options.constraints.topbottom" msgstr "أعلى و أسفل" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "تصميم" @@ -3261,7 +3248,7 @@ msgstr "تصدير" msgid "workspace.options.export-multiple" msgstr "تحديد المصدر" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "لاحقة" @@ -3269,7 +3256,7 @@ msgstr "لاحقة" msgid "workspace.options.exporting-complete" msgstr "تم التصدير" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "جاري التصدير…" @@ -3281,11 +3268,11 @@ msgstr "Export failed" msgid "workspace.options.exporting-object-slow" msgstr "التصدير بطيء بشكل غير متوقع" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "الملأ" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "إضافة المخطط" @@ -3294,15 +3281,15 @@ msgstr "إضافة المخطط" msgid "workspace.options.flows.flow-start" msgstr "إضافة المخطط" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "جاري التخطيط" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "تلقائي" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "أعمدة" @@ -3311,7 +3298,7 @@ msgstr "أعمدة" msgid "workspace.options.grid.grid-title" msgstr "تشبيك" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "لون" @@ -3320,15 +3307,15 @@ msgstr "لون" msgid "workspace.options.grid.params.columns" msgstr "أعمدة" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "مزراب" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "طول" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "هامش" @@ -3337,7 +3324,7 @@ msgstr "هامش" msgid "workspace.options.grid.params.rows" msgstr "صفوف" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "تعيين كافتراضي" @@ -3351,143 +3338,143 @@ msgstr "حجم" msgid "workspace.options.grid.params.type" msgstr "نوع" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "أسفل" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "وسط" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "شمال" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "يمين" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "تمديد" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "أعلى" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "استعمل الإفتراضي" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "عرض" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "صفوف" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "مربع" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "ملأ المجموعة" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "ضرب المجموعة" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "طول" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspectفحص" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "فعل" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "بعد التأخير" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "الرسومات المتحركة" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "تذوب" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "لا شيء" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "دفع" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "انزلاق" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "تلقائي" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "إضافة تراكب الخلفية" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "عطل إذا نقر في الخارج" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "إغلاق التراكب" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "إغلاق التراكب: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "تأخير" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "وجهة" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "مدة" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "تخفيف" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "خفف" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "خفف داخل" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "خفف داخل و خارج" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "خفف خارج" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "خطي" @@ -3496,47 +3483,47 @@ msgstr "خطي" msgid "workspace.options.interaction-in" msgstr "داخل" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "إدخال الفأرة" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "إخراج الفأرة" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "القوائم" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "الإنتقال الى" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "انتقال الى: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(غير مهيء)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "تأثير الإزاحة" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "بعد النقر" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "فتح التراكب" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "فتح التراكب: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "رابط مفتوح" @@ -3545,147 +3532,147 @@ msgstr "رابط مفتوح" msgid "workspace.options.interaction-out" msgstr "خارج" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "المركز السفلي" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "اأسفل اليسار" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "أسفل اليمين" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "مركز" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "يدوي" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "المركز العلوي" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "أعلى اليسار" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "أعلى اليمين" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "موضع" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "حفظ موضع التمرير" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "الشاشة السابقة" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "بالنسبة الى" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "الذات" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "تبديل التراكب" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "تبديل التراكب: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "مشغل" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "الرابط المفتوح" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "حين التحوم" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "حين الضغط" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "التفاعلات" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "اللون" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "احتراق اللون" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "انقاص كثافة اللون" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "أغمق" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "الفارق" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "الإستبعاد" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "ضوء الثابت" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "مسحة" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "تفتيح" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "لمعان" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "تضاعف" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "عادي" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "تراكب" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "التشبع" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "شاشة" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "ضوء خافت" @@ -3709,19 +3696,19 @@ msgstr "الطبقات المحددة" msgid "workspace.options.layout-item.advanced-ops" msgstr "خيارات متقدمة" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "أقصى ارتفاع" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "أقصى عرض" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "الحد الأدنو للارتفاع" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "الحد الأدنى للعرض" @@ -3835,15 +3822,15 @@ msgstr "التباعد بين" msgid "workspace.options.layout.top" msgstr "أعلى" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "المزيد من الألوان" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "المزيد من ألوان المكتبة" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "العتامة" @@ -3852,27 +3839,27 @@ msgstr "العتامة" msgid "workspace.options.position" msgstr "الموضع" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "النموذج المبدئي" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "نصف القطر" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "أسفل اليسار" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "أسفل اليمين" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "أعلى الشمال" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "أعلى اليمين" @@ -3884,7 +3871,7 @@ msgstr "مؤخر" msgid "workspace.options.retry" msgstr "أعد المحاولة" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "دوران" @@ -3892,27 +3879,27 @@ msgstr "دوران" msgid "workspace.options.search-font" msgstr "البخث عن نوع الخط" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "اختر الشكل أو اللوحة لجر الإتصال الى لوحة أو شكل آخر" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "الألوان المختارة" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "اختر نوع الملأ" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "ضرب الإختيار" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "تطميس" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "لون الظل" @@ -3924,47 +3911,48 @@ msgstr "إسقاط الظل" msgid "workspace.options.shadow-options.inner-shadow" msgstr "التظليل الداخلي" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "الانتشار" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "الظل" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "ظل المجموعة" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "ظلال الإختيار" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "أظهر في المصدر" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "أظهر في وضع العرض" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "مقاس" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "الإعدادات المسبقة للحجم" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "ضرب" @@ -3973,7 +3961,7 @@ msgstr "ضرب" msgid "workspace.options.stroke-cap.circle-marker" msgstr "معلم الدائرة" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "الدائرة" @@ -3982,7 +3970,7 @@ msgstr "الدائرة" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "معلم الماس" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "الماس" @@ -3991,19 +3979,19 @@ msgstr "الماس" msgid "workspace.options.stroke-cap.line-arrow" msgstr "سهم الخط" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "سهم" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "لا شيء" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "دائري" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "مربع" @@ -4012,7 +4000,7 @@ msgstr "مربع" msgid "workspace.options.stroke-cap.square-marker" msgstr "معلم المربع" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "مستطيل" @@ -4021,75 +4009,75 @@ msgstr "مستطيل" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "سهم المثلث" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "المثلث" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "لون الضرب" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "عرض الضرب" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "مركز" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "متقطع" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "منقط" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "داخل" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "مختلط" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "خارج" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "صلب" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "محاذاة الأسفل" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "محاذاة الوسط" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "محاذاة أعلى" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "الإرتفاع التلقائي" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "العرض التلقائي" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "مثبت" @@ -4111,35 +4099,35 @@ msgstr "أحرف صغيرة" msgid "workspace.options.text-options.none" msgstr "لا شيء" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "الإضراب من خلال(%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "محاذاة المركز" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "تعديل" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "محاذاة" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "محاذاة اليمين" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "نص" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "نص للمجموعة" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "نص الإختيار" @@ -4148,7 +4136,7 @@ msgstr "نص الإختيار" msgid "workspace.options.text-options.titlecase" msgstr "Title case" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "تسطير (%s)" @@ -4157,19 +4145,19 @@ msgstr "تسطير (%s)" msgid "workspace.options.text-options.uppercase" msgstr "الأحرف الكبيرة" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "استعمل زر التشغيل أعلاه لتشغيل منظر النموذج المبدئي." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "عرض" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X محور" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y محور" @@ -4233,7 +4221,7 @@ msgstr "أرسل الى الخلف" msgid "workspace.shape.menu.copy" msgstr "انسخ" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "إنشاء تعليق توضيحي" @@ -4241,11 +4229,11 @@ msgstr "إنشاء تعليق توضيحي" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "تحديد محتوى اللوحة" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "إنشاء نعصر" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "إنشاء عناصر جديدة" @@ -4253,7 +4241,7 @@ msgstr "إنشاء عناصر جديدة" msgid "workspace.shape.menu.cut" msgstr "قطع" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "حذف" @@ -4261,15 +4249,15 @@ msgstr "حذف" msgid "workspace.shape.menu.delete-flow-start" msgstr "حذف المخطط" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "فصل المثال" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "فصل الامثلة" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "الفارق" @@ -4281,11 +4269,11 @@ msgstr "ينسخ" msgid "workspace.shape.menu.edit" msgstr "تحرير" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "استبعاد" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "تسطيح" @@ -4318,19 +4306,19 @@ msgstr "انتقل الى ملف العنصر الأصلي" msgid "workspace.shape.menu.group" msgstr "مجموعة" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "إخفاء" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "أظهر أو إخف UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "التفاعلات" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "إغلاق" @@ -4338,7 +4326,7 @@ msgstr "إغلاق" msgid "workspace.shape.menu.mask" msgstr "قناع" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "معجون" @@ -4350,11 +4338,11 @@ msgstr "طريق" msgid "workspace.shape.menu.remove-flex" msgstr "إزالة تخطيط المنحنى" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "إعادة ضبط التجاوزات" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "استعادة العنصر الرئيسي" @@ -4362,15 +4350,15 @@ msgstr "استعادة العنصر الرئيسي" msgid "workspace.shape.menu.select-layer" msgstr "اختيار الطبقة" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "العرض" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "العرض في لوحة الاصول" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "أظهر المكون الرئيسي" @@ -4383,6 +4371,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "تعيين كصورة مصغرة" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "تحويل الى المسار" @@ -4390,11 +4379,11 @@ msgstr "تحويل الى المسار" msgid "workspace.shape.menu.ungroup" msgstr "فك التجميع" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "اتحاد" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "الغاء القفل" @@ -4407,7 +4396,7 @@ msgstr "كشف القناع" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "تحديث العناصر الرئيسية" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "تحديث العنصر الرئيسي" @@ -4419,11 +4408,11 @@ msgstr "انهيار الشريط الجانبي" msgid "workspace.sidebar.expand" msgstr "توسيع الشريط الجانبي" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "التاريخ" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "الطبقات" @@ -4459,7 +4448,7 @@ msgstr "نصوص" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "السمات المستوردةSVG" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "صفحات" @@ -4467,7 +4456,7 @@ msgstr "صفحات" msgid "workspace.sitemap" msgstr "خريطة الموقع" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "أصول" @@ -4475,7 +4464,7 @@ msgstr "أصول" msgid "workspace.toolbar.color-palette" msgstr "لوحة اللون (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "تعليقات (%s)" @@ -4669,19 +4658,19 @@ msgstr "انتهت العملية %s" msgid "workspace.undo.title" msgstr "تاريخ" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "رفض" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "مزيد من المعلومات" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "يوجد تحديثات في المكتبة المشتركة" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "تحديث" diff --git a/frontend/translations/ca.po b/frontend/translations/ca.po index bbcc2db2cd..5e891992c6 100644 --- a/frontend/translations/ca.po +++ b/frontend/translations/ca.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Aryiu \n" -"Language-Team: Catalan " -"\n" +"Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -146,7 +146,7 @@ msgstr "Crea un compte" msgid "auth.sidebar-tagline" msgstr "La solució de codi obert per a dissenyar i prototipar." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Condicions del servei" @@ -154,7 +154,7 @@ msgstr "Condicions del servei" msgid "auth.verification-email-sent" msgstr "S'ha enviat un correu de verificació a" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publica" @@ -226,7 +226,7 @@ msgstr "Compartiu prototips" msgid "common.share-link.view-all" msgstr "Selecciona-ho tot" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Despublica" @@ -292,7 +292,7 @@ msgstr "90 dies" msgid "dashboard.access-tokens.expiration-never" msgstr "Mai" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Afegeix a la biblioteca compartida" @@ -300,27 +300,27 @@ msgstr "Afegeix a la biblioteca compartida" msgid "dashboard.change-email" msgstr "Canvia el correu" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(còpia)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Crea un equip nou" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "El meu Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Elimina l'equip" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Baixa el fitxer Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Baixa fitxer estàndard (.svg + .json)" @@ -336,7 +336,7 @@ msgstr "Duplica %s fitxers" msgid "dashboard.export-binary-multi" msgstr "Baixa %s fitxers Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exporta els taulers a PDF" @@ -352,7 +352,7 @@ msgstr "Exporta %s fitxers de Penpot" msgid "dashboard.export-multiple.selected" msgstr "%s de %s elements seleccionats" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exporta" @@ -515,11 +515,11 @@ msgstr "S'estan penjant les dades al servidor (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "S'està pujant el fitxer: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Convida a l'equip" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Abandona l'equip" @@ -531,7 +531,7 @@ msgstr "Biblioteques i plantilles" msgid "dashboard.libraries-and-templates.explore" msgstr "Explora'n més i coneix com contribuir-hi" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "" "Hi ha hagut un problema en importar la plantilla. La plantilla no s'ha " @@ -565,7 +565,7 @@ msgstr "Mou a un altre equip" msgid "dashboard.new-file" msgstr "+ Fitxer nou" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Fitxer nou" @@ -573,7 +573,7 @@ msgstr "Fitxer nou" msgid "dashboard.new-project" msgstr "+ Crea un projecte" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Crea un projecte" @@ -581,7 +581,7 @@ msgstr "Crea un projecte" msgid "dashboard.no-matches-for" msgstr "No s'ha trobat cap coincidència amb “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Els projectes fixats apareixeran aquí" @@ -597,7 +597,7 @@ msgstr "S'ha verificat l'adreça de correu" msgid "dashboard.notifications.password-saved" msgstr "La contrasenya s'ha desat correctament!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s membres" @@ -613,7 +613,7 @@ msgstr "Opcions" msgid "dashboard.password-change" msgstr "Canvia la contrasenya" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Fixa/Deixa de fixar" @@ -634,7 +634,7 @@ msgstr "Elimina de les biblioteques compartides" msgid "dashboard.save-settings" msgstr "Desa la configuració" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Cerca…" @@ -670,7 +670,7 @@ msgstr "S'ha duplicat el fitxer" msgid "dashboard.success-duplicate-project" msgstr "S'ha eliminat el projecte" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "S'ha mogut el fitxer" @@ -682,15 +682,15 @@ msgstr "S'han mogut els fitxers" msgid "dashboard.success-move-project" msgstr "S'ha mogut el projecte" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Informació de l'equip" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Membres de l'equip" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Projectes de l'equip" @@ -706,7 +706,7 @@ msgstr "Resultats de la cerca" msgid "dashboard.type-something" msgstr "Escriviu per cercar resultats" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Despublica la biblioteca" @@ -726,7 +726,7 @@ msgstr "Correu electrònic" msgid "dashboard.your-name" msgstr "Nom" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "El meu Penpot" @@ -742,11 +742,11 @@ msgstr "Atenció" msgid "ds.component-subtitle" msgstr "Components a actualitzar:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Cancel·la" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "D'acord" @@ -778,15 +778,15 @@ msgstr "Aquest correu ja està validat." msgid "errors.email-as-password" msgstr "No podeu fer servir l'adreça de correu com a contrasenya" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "El correu «%s» té molts informes de retorn permanents." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "El correu «%s» s'ha marcat com a brossa o rebot permanent." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Alguna cosa ha anat malament." @@ -828,7 +828,7 @@ msgstr "" msgid "errors.media-type-not-allowed" msgstr "Sembla que la imatge no és vàlida." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "El perfil que estàs convidant té els missatges de correu silenciats (per " @@ -848,7 +848,7 @@ msgstr "La contrasenya ha de tenir 8 caràcters com a mínim" msgid "errors.profile-blocked" msgstr "El perfil està bloquejat" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "El teu perfil té els missatges de correu silenciats (per informes de correu " @@ -858,17 +858,17 @@ msgstr "" msgid "errors.registration-disabled" msgstr "El registre està desactivat." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "No hi ha suficients membres com per a abandonar l'equip, potser voleu " "eliminar-lo." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "El membre que intenteu assignar no existeix." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "El propietari no pot abandonar l'equip, heu de reassignar el rol de " @@ -941,19 +941,19 @@ msgstr "S'ha produït un error" msgid "inspect.attributes.blur" msgstr "Difuminat" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Valor" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -961,7 +961,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Emplenat" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Baixa la imatge original" @@ -1051,59 +1051,61 @@ msgstr "Sòlid" msgid "inspect.attributes.stroke.width" msgstr "Amplada" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografia" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Família tipogràfica" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Mida de la lletra" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Estil de la lletra" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Espaiat de la lletra" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Alçada de la línia" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Decoració del text" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Cap" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Subratllat" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformació del text" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Inicials en majúscules" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Minúscules" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Cap" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Majúscules" @@ -1163,7 +1165,7 @@ msgstr "Text" msgid "inspect.tabs.info" msgstr "Informació" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Dreceres" @@ -1175,11 +1177,11 @@ msgstr "Acceptar" msgid "labels.add-custom-font" msgstr "Afegeix tipografia" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Administració" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Tots" @@ -1202,19 +1204,19 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Error del servidor (Bad Gateway)" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Cancel·la" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Tanca" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Comentaris" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Comunitat" @@ -1222,7 +1224,7 @@ msgstr "Comunitat" msgid "labels.confirm-password" msgstr "Confirmeu la contrasenya" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continua" @@ -1234,11 +1236,11 @@ msgstr "Continua amb" msgid "labels.continue-with-penpot" msgstr "Podeu continuar amb un compte de Penpot" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Copia l'enllaç" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Crea" @@ -1258,7 +1260,7 @@ msgstr "Tipografies personalitzades" msgid "labels.dashboard" msgstr "Tauler" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Elimina" @@ -1270,7 +1272,7 @@ msgstr "Elimina el comentari" msgid "labels.delete-comment-thread" msgstr "Elimina el fil" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Esborra invitació" @@ -1278,11 +1280,11 @@ msgstr "Esborra invitació" msgid "labels.delete-multi-files" msgstr "Elimina %s fitxers" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Esborranys" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Edita" @@ -1290,15 +1292,15 @@ msgstr "Edita" msgid "labels.edit-file" msgstr "Edita'l" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Ha caducat" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exporta" @@ -1322,15 +1324,15 @@ msgstr "Proveïdors de tipografies" msgid "labels.font-variants" msgstr "Estils" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Tipografies" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repositori Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Envia opinions" @@ -1338,11 +1340,11 @@ msgstr "Envia opinions" msgid "labels.go-back" msgstr "Enrere" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Centre d'ajuda" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Amaga els comentaris resolts" @@ -1360,7 +1362,7 @@ msgstr "" msgid "labels.internal-error.main-message" msgstr "Error intern" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Invitacions" @@ -1368,7 +1370,7 @@ msgstr "Invitacions" msgid "labels.language" msgstr "Llengua" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Biblioteques i plantilles" @@ -1376,15 +1378,15 @@ msgstr "Biblioteques i plantilles" msgid "labels.log-or-sign" msgstr "Inicia sessió o registra'm" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Tanca la sessió" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Membre" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Membres" @@ -1392,11 +1394,11 @@ msgstr "Membres" msgid "labels.new-password" msgstr "Contrasenya nova" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "No teniu notificacions de comentaris pendents" -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "No hi ha invitacions." @@ -1411,7 +1413,7 @@ msgstr "" msgid "labels.not-found.main-message" msgstr "Vaja!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 fitxer" @@ -1423,7 +1425,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 tauler" msgstr[1] "%s taulers" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 projecte" @@ -1442,7 +1444,7 @@ msgstr "Només els meus" msgid "labels.or" msgstr "o" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Propietari" @@ -1450,7 +1452,7 @@ msgstr "Propietari" msgid "labels.password" msgstr "Contrasenya" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Pendent" @@ -1458,11 +1460,11 @@ msgstr "Pendent" msgid "labels.profile" msgstr "Perfil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projectes" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Notes de la versió" @@ -1476,11 +1478,11 @@ msgstr "Recarrega el fitxer" msgid "labels.remove" msgstr "Elimina" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Elimina membre" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Canvia el nom" @@ -1488,7 +1490,7 @@ msgstr "Canvia el nom" msgid "labels.rename-team" msgstr "Canvia el nom de l’equip" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Reenvia invitació" @@ -1496,15 +1498,15 @@ msgstr "Reenvia invitació" msgid "labels.retry" msgstr "Tornar a intentar-ho" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rol" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Desa" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Cerca" @@ -1528,7 +1530,7 @@ msgstr "Estem de manteniment programat dels nostres sistemes." msgid "labels.service-unavailable.main-message" msgstr "Servei no disponible" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Configuració" @@ -1540,11 +1542,11 @@ msgstr "Comparteix" msgid "labels.share-prototype" msgstr "Comparteix prototip" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Biblioteques compartides" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Mostra tots els comentaris" @@ -1552,15 +1554,15 @@ msgstr "Mostra tots els comentaris" msgid "labels.show-comments-list" msgstr "Mostra la llista de comentaris" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Mostra només els meus comentaris" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Estat" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutorials" @@ -1584,11 +1586,11 @@ msgstr "Pugeu tipografies personalitzades" msgid "labels.uploading" msgstr "S'està pujant…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Només lectura" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Visor" @@ -1596,15 +1598,15 @@ msgstr "Visor" msgid "labels.write-new-comment" msgstr "Escriu un comentari nou" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(jo)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "El meu compte" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Imatge" @@ -1731,11 +1733,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "S'està eliminant la tipografia" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Segur que voleu eliminar la pàgina?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Elimina la pàgina" @@ -1763,51 +1765,51 @@ msgid_plural "modals.delete-shared-confirm.message" msgstr[0] "Esteu segur que voleu suprimir aquest fitxer?" msgstr[1] "Esteu segur que voleu suprimir aquests fitxers?" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Elimina l'equip" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Segur que voleu eliminar l'equip? Tots els projectes i fitxers associats a " "l'equip s'eliminaran permanentment." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "S'està eliminant l'equip" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Elimina el membre" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Segur que voleu eliminar aquest membre de l'equip?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Elimina el membre de l'equip" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Envia una invitació" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Correus electrònics, separats per una coma" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Convida membres a l'equip" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Com que no hi ha ningú més a aquest equip, s'eliminarà l'equip amb els seus " "arxius i projectes." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Segur que vols deixar l'equip %s?" @@ -1833,15 +1835,15 @@ msgstr "Seleccioneu un membre per a ascendir" msgid "modals.leave-and-reassign.title" msgstr "Seleccioneu un membre per a ascendir" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Abandona l'equip" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Segur que voleu deixar l'equip?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "S'està abandonant l'equip" @@ -1851,31 +1853,31 @@ msgid_plural "modals.move-shared-confirm.accept" msgstr[0] "Mou" msgstr[1] "Mou" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Quantitat d'atracció" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Ascendeix" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Si transferiu la propietat, canviareu el vostre rol a admin, perdent alguns " "permisos sobre l'equip. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Actualment sou el propietari de l'equip. Segur que voleu ascendir aquest " "usuari a propietari?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Ascendeix a propietari" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publica" @@ -1912,25 +1914,25 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Actualitza els components en una biblioteca compartida" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Actualitza" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Cancel·la" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Esteu a punt d'actualitzar un component d'una biblioteca compartida. Això " "pot afectar altres fitxers que l'usen." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Actualitza un component en una biblioteca compartida" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "La invitació s'ha enviat correctament" @@ -2006,541 +2008,541 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Vés a l'inici de sessió" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Mixt" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Bàsics" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Panell de control" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Visor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Espai de treball" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Alineació" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Edició" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Genèric" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Genèric" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menú principal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modifica les capes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navegació" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navegació" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navegació" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panells" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Camins" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Eines" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Comentaris" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Afegeix node" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Alinea a baix" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Alinea al centre horitzontalment" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Alinea a l'esquerra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Alinea a la dreta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Alinea a dalt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Alinea al centre verticalment" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Crea un tauler a partir de selecció" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Diferència booleana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Exclusió booleana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Intersecció booleana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Unió booleana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Envia-ho al fons" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Envia-ho cap avall" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Envia-ho cap amunt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Envia-ho a dalt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Esborra desfer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Crea nou" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Retalla" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Disminueix el zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Elimina" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Elimina el node" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Separa el component" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Corba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "El·lipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Tauler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Dibuixa el camí" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Camí" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rectangle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplica" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Cancel·la" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Exporta formes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Amplia per encabir-ho tot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Gira horitzontalment" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Gira verticalment" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Ves als esborranys" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Ves a les biblioteques compartides" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Cerca" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Agrupa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribueix horitzontalment" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Mostra/Amaga la interfície" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Amplia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Insereix imatge" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Uneix nodes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Fes cantonada" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Fes corba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Màscara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Fusiona nodes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Mou" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Mou avall ràpidament" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Mou a l'esquerra ràpidament" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Mou a la dreta ràpidament" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Mou amunt ràpidament" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Mou node" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Mou avall" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Mou a l'esquerra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Mou a la dreta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Mou amunt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Següent tauler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "No s'han trobat dreceres" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Fixa l'opacitat al 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Fixa l'opacitat al 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Fixa l'opacitat al 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Fixa l'opacitat al 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Fixa l'opacitat al 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Fixa l'opacitat al 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Fixa l'opacitat al 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Fixa l'opacitat al 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Fixa l'opacitat al 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Fixa l'opacitat al 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Selector de color" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Ves als comentaris del visor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Ves al panell de control" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Ves a les interaccions del visor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Ves a les interaccions del visor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Ves a l'espai de treball" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " o " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Enganxa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Tauler anterior" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Refés" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Restableix el zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Cerca dreceres" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Selecciona-ho tot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Separa els nodes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Mostra/Amaga graella de píxels" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Mostra/Amaga dreceres" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Ajusta als nodes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Ajusta a la graella de píxels" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Comença a editar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Comença a mesurar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Deixa de mesurar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Estableix miniatures" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Dreceres de teclat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Commuta l'alineació dinàmica" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Commuta els recursos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Commuta paleta de colors" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Activa/desactiva el mode de concentració" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Activa/desactiva la pantalla completa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Mostra / Amaga les guies" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Mostra/Amaga l'historial" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Commutales capes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Bloqueja la selecció" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Bloqueja les proporcions" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Mostra/amaga la paleta de text" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Mostra/amaga l'element" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Commuta l'estil de zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Desfés" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Desagrupa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Desemmascara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribueix verticalment" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Amplia a la selecció" @@ -2588,15 +2590,15 @@ msgstr "Contrasenya - Penpot" msgid "title.settings.profile" msgstr "Perfil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Invitacions - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Membres - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Configuració - %s - Penpot" @@ -2664,35 +2666,35 @@ msgstr "Mostra les interaccions en fer clic" msgid "viewer.header.sitemap" msgstr "Mapa del lloc" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Alinea el centre horitzontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribueix l'espaiat horitzontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Alinea a l'esquerra (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Alinea a la dreta (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Alinea la part inferior (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Alinea el centre vertical (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribueix l'espaiat vertical (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Alinea la part superior (%s)" @@ -2701,37 +2703,37 @@ msgstr "Alinea la part superior (%s)" msgid "workspace.assets.assets" msgstr "Recursos" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Tots els recursos" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Colors" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Components" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Crea un grup" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Els elements s'anomenaran automàticament com a \"nom del grup / nom de " "l'element\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Elimina" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplica" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Edita" @@ -2740,15 +2742,15 @@ msgstr "Edita" msgid "workspace.assets.graphics" msgstr "Gràfics" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Agrupa" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nom del grup" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "llibreria local" @@ -2756,15 +2758,15 @@ msgstr "llibreria local" msgid "workspace.assets.not-found" msgstr "No s'han trobat recursos" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Canvia el nom" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Canvia el nom del grup" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Cerca recursos" @@ -2775,7 +2777,7 @@ msgid_plural "workspace.assets.selected-count" msgstr[0] "%s element seleccionat" msgstr[1] "%s elements seleccionats" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografies" @@ -2800,7 +2802,7 @@ msgstr "Espaiat de la lletra" msgid "workspace.assets.typography.line-height" msgstr "Alçada de la línia" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -2808,7 +2810,7 @@ msgstr "Ag" msgid "workspace.assets.typography.text-transform" msgstr "Transforma el text" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Desagrupa" @@ -2816,7 +2818,7 @@ msgstr "Desagrupa" msgid "workspace.focus.focus-mode" msgstr "Mode d'enfocament" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Enfocament apagat" @@ -2836,7 +2838,7 @@ msgstr "Degradat lineal" msgid "workspace.gradients.radial" msgstr "Degradat radial" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Desactiva l'alineació dinàmica" @@ -2845,15 +2847,15 @@ msgstr "Desactiva l'alineació dinàmica" msgid "workspace.header.menu.disable-scale-text" msgstr "Desactiva l'escalat del text" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "No ajustis a les guies" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "No ajustis als píxels" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Activa l'alineació dinàmica" @@ -2862,99 +2864,99 @@ msgstr "Activa l'alineació dinàmica" msgid "workspace.header.menu.enable-scale-text" msgstr "Activa l'escalat del text" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Ajusta a les guies" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Ajusta als píxels" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Amaga els noms dels taulers" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Amaga les guies" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Amaga la paleta de colors" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Amaga la graella de píxels" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Amaga les regles" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Amaga la paleta de tipografies" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Edita" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Fixer" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Ajuda i informació" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferències" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Mostra" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Refés" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Selecciona-ho tot" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Mostra els noms dels taulers" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Mostra la paleta de colors" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Mostra graella de píxels" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Mostra les regles" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Mostra la paleta de tipografies" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Canvia al mode fosc" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Canvia al mode clar" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Desfés" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Restableix" @@ -2975,7 +2977,7 @@ msgstr "S'està desant" msgid "workspace.header.unsaved" msgstr "Canvis sense desar" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Visor (%s)" @@ -2987,7 +2989,7 @@ msgstr "Emplena - Amplia per a omplir" msgid "workspace.header.zoom-fit" msgstr "Ajusta - Redueix per a encaixar" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Apropa per a omplir-ho tot" @@ -2995,7 +2997,7 @@ msgstr "Apropa per a omplir-ho tot" msgid "workspace.header.zoom-full-screen" msgstr "Pantalla completa" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Apropa la selecció" @@ -3008,10 +3010,6 @@ msgstr "Fet" msgid "workspace.libraries.add" msgstr "Afegeix" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s colors" - #: src/app/main/ui/workspace/color_palette_ctx_menu.cljs:88, src/app/main/ui/workspace/colorpicker/libraries.cljs:48, src/app/main/ui/workspace/text_palette_ctx_menu.cljs:49 msgid "workspace.libraries.colors.file-library" msgstr "Biblioteca del fitxer" @@ -3030,31 +3028,23 @@ msgstr "Colors recents" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Complementari d'RGB" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Desa l'estil de color" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s components" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Biblioteca del fitxer" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s gràfics" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTEQUES EN AQUEST FITXER" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTEQUES" @@ -3063,55 +3053,51 @@ msgstr "BIBLIOTEQUES" msgid "workspace.libraries.library" msgstr "BIBLIOTECA" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "No hi ha biblioteques compartides pendents d'actualitzar" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "No s'ha trobat cap coincidència per a “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Cerca biblioteques compartides" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "BIBLIOTEQUES COMPARTIDES" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Diverses tipografies" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Desvincula totes les tipografies" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s tipografies" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Actualitza" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ACTUALITZACIONS" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Feu clic en el botó de + per a afegir interaccions." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Difuminat" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Difuminat del grup" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Difuminat de selecció" @@ -3119,11 +3105,11 @@ msgstr "Difuminat de selecció" msgid "workspace.options.canvas-background" msgstr "Fons del llenç" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Trunca el contingut" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Component" @@ -3167,7 +3153,7 @@ msgstr "Superior" msgid "workspace.options.constraints.topbottom" msgstr "Superior i inferior" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Disseny" @@ -3180,11 +3166,11 @@ msgstr "Exporta" msgid "workspace.options.export-multiple" msgstr "Exporta la selecció" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgstr "Exporta 1 element" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Sufix" @@ -3192,7 +3178,7 @@ msgstr "Sufix" msgid "workspace.options.exporting-complete" msgstr "Exportació completa" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "S'està exportant…" @@ -3204,11 +3190,11 @@ msgstr "Exportació fallida" msgid "workspace.options.exporting-object-slow" msgstr "Exportació inesperadament lenta" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Emplenat" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Afegeix l'inici del flux" @@ -3217,15 +3203,15 @@ msgstr "Afegeix l'inici del flux" msgid "workspace.options.flows.flow-start" msgstr "Inici del flux" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "S'inicia el flux" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automàtic" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Columnes" @@ -3234,7 +3220,7 @@ msgstr "Columnes" msgid "workspace.options.grid.grid-title" msgstr "Graella" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Color" @@ -3243,15 +3229,15 @@ msgstr "Color" msgid "workspace.options.grid.params.columns" msgstr "Columnes" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Espaiat" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Alçada" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Marge" @@ -3260,7 +3246,7 @@ msgstr "Marge" msgid "workspace.options.grid.params.rows" msgstr "Files" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Estableix com a predeterminat" @@ -3274,139 +3260,139 @@ msgstr "Mida" msgid "workspace.options.grid.params.type" msgstr "Tipus" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Inferior" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centre" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Esquerra" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Dreta" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Estira" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Superior" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Usa valors predeterminats" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Ample" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Files" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Quadrat" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Emplenament del grup" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Traç del grup" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Altura" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspecciona" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Acció" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Després de" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animació" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Dissol" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Cap" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Empenta" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Lliscament" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Afegeix una superposició de fons" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Tanca en fer clic fora" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Tanca la superposició" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Tanca la superposició: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Retard" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destinació" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Durada" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Suavització" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Suau" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Entrada suau" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Entrada/sortida suau" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Sortida suau" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Lineal" @@ -3415,47 +3401,47 @@ msgstr "Lineal" msgid "workspace.options.interaction-in" msgstr "Entrada" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "El ratolí entra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "El ratolí abandona" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navega a" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navega a: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(sense definir)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Efecte de desplaçament" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "En fer clic" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Obre la superposició" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Obre la superposició: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Obre una URL" @@ -3464,143 +3450,143 @@ msgstr "Obre una URL" msgid "workspace.options.interaction-out" msgstr "Sortida" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Inferior centrat" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Inferior esquerra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Inferior dreta" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Centre" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manual" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Centre superior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Superior esquerra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Superior dreta" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Posició" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Conserva la posició del desplaçament" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Pantalla anterior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "a si mateix" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Commuta la superposició" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Commuta la superposició: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Activador" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Mentre el cursor està damunt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Mentre es prem" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interaccions" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Color" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Crema el color" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Aclareix el color" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Enfosqueix" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Resta" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Exclusió" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Llum forta" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "To" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Il·lumina" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Lluminositat" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiplica" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Llum normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Superposa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturació" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Pantalla" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Llum suau" @@ -3704,15 +3690,15 @@ msgstr "espaiat" msgid "workspace.options.layout.top" msgstr "Dalt" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Més colors" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Més llibreries de colors" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacitat" @@ -3721,27 +3707,27 @@ msgstr "Opacitat" msgid "workspace.options.position" msgstr "Posició" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototip" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Radi" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Inferior esquerra" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Inferior dreta" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Superior esquerra" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Superior dreta" @@ -3753,7 +3739,7 @@ msgstr "Recent" msgid "workspace.options.retry" msgstr "Torna-ho a provar" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotació" @@ -3761,29 +3747,29 @@ msgstr "Rotació" msgid "workspace.options.search-font" msgstr "Cerca tipografia" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Seleccioneu una forma, un tauler o un grup per a arrossegar una connexió a " "un altre tauler." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Colors seleccionats" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Emplenament de selecció" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Traç de la selecció" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Difuminat" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Color de l'ombra" @@ -3795,47 +3781,48 @@ msgstr "Ombra caiguda" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Ombra interior" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Difusió" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Ombra" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Ombra del grup" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Ombres de selecció" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Mostra en l'exportació" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Mostra al visor" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Mida" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Mides predefinides" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Traç" @@ -3854,15 +3841,15 @@ msgstr "Marcador de diamant" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Fletxa de línia" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Cap" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Redó" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Quadrat" @@ -3876,71 +3863,71 @@ msgstr "Marcador quadrat" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Fletxa triangular" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Color del traç" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Ample del traç" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centrat" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "A ratlles" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Puntejat" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Interior" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Mixte" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Exterior" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Sòlid" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Alinea a baix" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Alinea al centre" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Alinea a dalt" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Alt automàtic" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Ample automàtic" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fix" @@ -3962,35 +3949,35 @@ msgstr "Minúscules" msgid "workspace.options.text-options.none" msgstr "Cap" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Ratllat (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Alinea el centre" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Justifica" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Alinea a l'esquerra" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Alinea a la dreta" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Text del grup" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Text de la selecció" @@ -3999,7 +3986,7 @@ msgstr "Text de la selecció" msgid "workspace.options.text-options.titlecase" msgstr "Inicials en majúscules" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Subratllat (%s)" @@ -4008,21 +3995,21 @@ msgstr "Subratllat (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Majúscules" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Utilitzeu el botó de «play» de la capçalera per a executar la vista de " "prototip." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Ample" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y" @@ -4066,11 +4053,11 @@ msgstr "Separa els nodes (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Alinea els nodes (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Obre" -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Instal·la" @@ -4090,11 +4077,11 @@ msgstr "Copia" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Selecciona al tauler" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Crea un component" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Crea components múltiples" @@ -4102,7 +4089,7 @@ msgstr "Crea components múltiples" msgid "workspace.shape.menu.cut" msgstr "Retalla" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Elimina" @@ -4110,15 +4097,15 @@ msgstr "Elimina" msgid "workspace.shape.menu.delete-flow-start" msgstr "Elimina l'inici del flux" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Desconnecta la instància" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Desenganxa les instàncies" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Diferència" @@ -4130,11 +4117,11 @@ msgstr "Duplica" msgid "workspace.shape.menu.edit" msgstr "Edita" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Exclou" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Aplana" @@ -4167,19 +4154,19 @@ msgstr "Vés al fitxer del component principal" msgid "workspace.shape.menu.group" msgstr "Agrupa" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Amaga" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Mostra/Amaga la interfície" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Intersecció" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Bloca" @@ -4187,7 +4174,7 @@ msgstr "Bloca" msgid "workspace.shape.menu.mask" msgstr "Màscara" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Enganxa" @@ -4195,7 +4182,7 @@ msgstr "Enganxa" msgid "workspace.shape.menu.path" msgstr "Camí" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Desfés les modificacions" @@ -4203,11 +4190,11 @@ msgstr "Desfés les modificacions" msgid "workspace.shape.menu.select-layer" msgstr "Selecciona la capa" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Mostra" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Vés al component principal" @@ -4220,6 +4207,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Estableix com a miniatura" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transforma en camí" @@ -4227,11 +4215,11 @@ msgstr "Transforma en camí" msgid "workspace.shape.menu.ungroup" msgstr "Desagrupa" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Unió" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Desbloca" @@ -4244,15 +4232,15 @@ msgstr "Desemmascara" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Actualitza els components principals" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Actualitza el component principal" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Historial" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Capes" @@ -4292,7 +4280,7 @@ msgstr "Textos" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Atributs SVG importats" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Pàgines" @@ -4300,7 +4288,7 @@ msgstr "Pàgines" msgid "workspace.sitemap" msgstr "Mapa del lloc" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Recursos" @@ -4308,7 +4296,7 @@ msgstr "Recursos" msgid "workspace.toolbar.color-palette" msgstr "Paleta de colors (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Comentaris (%s)" @@ -4507,15 +4495,15 @@ msgstr "Operació sobre %s" msgid "workspace.undo.title" msgstr "Historial" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Descarta" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Hi ha actualitzacions a les biblioteques compartides" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Actualitza" diff --git a/frontend/translations/cs.po b/frontend/translations/cs.po index 56dcc07b4a..32335a57f1 100644 --- a/frontend/translations/cs.po +++ b/frontend/translations/cs.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: \"Amerey.eu\" \n" -"Language-Team: Czech " -"\n" +"Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -177,7 +177,7 @@ msgstr "Open source řešení pro design a prototypování." msgid "auth.terms-and-privacy-agreement" msgstr "Souhlasím se [smluvními podmínkami](%s) a [zásadami ochrany soukromí](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Všeobecné podmínky poskytování služeb" @@ -204,7 +204,7 @@ msgstr "...branding, ilustrace, marketing atd." msgid "comments.mentions.not-found" msgstr "Pro @%s nebyli nalezeni žádní lidé" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Zveřejnit" @@ -277,7 +277,7 @@ msgstr "Sdílet prototypy" msgid "common.share-link.view-all" msgstr "Vybrat vše" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Zrušit zveřejnění" @@ -400,7 +400,7 @@ msgstr "Token nemá žádné datum vypršení platnosti" msgid "dashboard.add-file" msgstr "Přidat soubor" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Přidat jako sdílenou knihovnu" @@ -408,31 +408,31 @@ msgstr "Přidat jako sdílenou knihovnu" msgid "dashboard.change-email" msgstr "Změnit e-mail" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(zkopírovat)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Vytvořit nový tým" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Připnout tuto verzi" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Váš Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Smazat tým" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Stáhnout soubor Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Stáhnout standardní soubor (.svg + .json)" @@ -486,7 +486,7 @@ msgstr "Zatím žádné knihovny." msgid "dashboard.export-binary-multi" msgstr "Stáhnout soubory %s Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exportovat tabule do PDF" @@ -502,7 +502,7 @@ msgstr "Exportovat soubory Penpot %s" msgid "dashboard.export-multiple.selected" msgstr "%s z %s prvků vybráno" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportovat" @@ -702,11 +702,11 @@ msgstr "Nahrávání dat na server (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Nahrávání souboru: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Pozvat do týmu" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Odejít z týmu" @@ -718,7 +718,7 @@ msgstr "Knihovny a šablony" msgid "dashboard.libraries-and-templates.explore" msgstr "Prozkoumejte je víc a zjistěte, jak přispět" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Při importu šablony došlo k problému. Šablona nebyla importována." @@ -750,7 +750,7 @@ msgstr "Přesunout do jiného týmu" msgid "dashboard.new-file" msgstr "+ Nový soubor" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Nový soubor" @@ -758,7 +758,7 @@ msgstr "Nový soubor" msgid "dashboard.new-project" msgstr "+ Nový projekt" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nový projekt" @@ -766,11 +766,11 @@ msgstr "Nový projekt" msgid "dashboard.no-matches-for" msgstr "Nebyly nalezeny žádné shody pro “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Připnuté projekty se zobrazí zde" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Oznámení" @@ -782,7 +782,7 @@ msgstr "Vaše e-mailová adresa byla úspěšně aktualizována" msgid "dashboard.notifications.email-verified-successfully" msgstr "Vaše e-mailová adresa byla úspěšně ověřena" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Nastavení oznámení bylo aktualizováno" @@ -790,11 +790,11 @@ msgstr "Nastavení oznámení bylo aktualizováno" msgid "dashboard.notifications.password-saved" msgstr "Heslo bylo úspěšně uloženo!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Zobrazit oznámení" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "Počet členů: %s" @@ -826,7 +826,7 @@ msgstr "Nyní jste vlastníkem tohoto týmu." msgid "dashboard.permissions-change.viewer" msgstr "Nyní jste v tomto týmu divákem." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Připnout/Odepnout" @@ -863,7 +863,7 @@ msgstr "Již nejste součástí týmu „%s“." msgid "dashboard.save-settings" msgstr "Uložit nastavení" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Vyhledat…" @@ -943,7 +943,7 @@ msgstr "Oznámení" msgid "dashboard.show-all-files" msgstr "Zobrazit všechny soubory" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Historie verze" @@ -969,7 +969,7 @@ msgstr[2] "Vaše soubory byly úspěšně duplikovány" msgid "dashboard.success-duplicate-project" msgstr "Váš projekt byl úspěšně duplikován" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Váš soubor byl úspěšně přesunut" @@ -981,15 +981,15 @@ msgstr "Vaše soubory byly úspěšně přesunuty" msgid "dashboard.success-move-project" msgstr "Váš projekt byl úspěšně přesunut" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Informace o týmu" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Členové týmu" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Projekty týmu" @@ -1005,7 +1005,7 @@ msgstr "Výsledky vyhledávání" msgid "dashboard.type-something" msgstr "Zadejte výraz pro hledání" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Zrušit zveřejnění knihovny" @@ -1013,50 +1013,50 @@ msgstr "Zrušit zveřejnění knihovny" msgid "dashboard.update-settings" msgstr "Aktualizovat nastavení" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Kreativitě se meze nekladou" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Free" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Je aktivní" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Když je tento webhook spuštěn, budou doručeny podrobnosti o události" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Smazat nebo upravit můžete pouze vámi vytvořené webhooky." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Typ obsahu" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Vytvořit webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook byl úspěšně vytvořen." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhooky jsou jednoduchým způsobem, jak umožnit jiným webům a aplikacím, " "aby byly upozorňovány na určité události v Penpotu. Na každou z vámi " "poskytnutých adres URL odešleme požadavek POST." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Chcete-li webhook přidat, stiskněte tlačítko „Přidat webhook“." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Dosud nebyly vytvořeny žádné webhooky." @@ -1076,7 +1076,7 @@ msgstr "E-mail" msgid "dashboard.your-name" msgstr "Vaše jméno" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Váš Penpot" @@ -1092,15 +1092,15 @@ msgstr "Pozor" msgid "ds.component-subtitle" msgstr "Komponenty k aktualizaci:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Povolit" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Zrušit" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "OK" @@ -1152,11 +1152,11 @@ msgstr "Jako heslo nelze použít váš e-mail" msgid "errors.email-domain-not-allowed" msgstr "Doména není povolena" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "E-mail «%s» má mnoho trvalých zpráv o nedoručitelnosti." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "E-mail «%s» byl nahlášen jako spam nebo byl trvale nedostupný." @@ -1170,11 +1170,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Funkce '%s' není podporována." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "Musí obsahovat maximálně 1 znak." - #, unused msgid "errors.field-min-length" msgstr "Musí obsahovat alespoň 1 znak." @@ -1191,7 +1186,7 @@ msgstr "" "který se pokoušíte otevřít. Před otevřením souboru je třeba provést migraci " "pro '%s'." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Něco se pokazilo." @@ -1224,11 +1219,11 @@ msgstr "Tato pozvánka byla pravděpodobně zrušena nebo vypršela její platno msgid "errors.ldap-disabled" msgstr "Ověřování LDAP je vypnuto." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Dosáhli jste '%s' kvóty. Kontaktujte podporu." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Bylo dosaženo maximálního (%s) počtu e-mailů, které lze pozvat v jedné " @@ -1246,7 +1241,7 @@ msgstr "Zdá se, že obsah obrázku neodpovídá příponě souboru." msgid "errors.media-type-not-allowed" msgstr "Zdá se, že toto není platný obrázek." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Profil, který zvete, má ztlumené e-maily (zprávy o spamu nebo vysoké " @@ -1274,7 +1269,7 @@ msgstr "Neplatná data ve schránce" msgid "errors.profile-blocked" msgstr "Profil je zablokován" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "Váš profil má ztlumené e-maily (zprávy o spamu nebo vysoká nedoručitelnost)." @@ -1286,17 +1281,17 @@ msgstr "Registrace je momentálně zakázána." msgid "errors.team-feature-mismatch" msgstr "Zjištěna nekompatibilní funkce '%s'" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Nedostatečný počet členů pro opuštění týmu, pravděpodobně jste chtěli tým " "smazat." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Člen, kterého se pokoušíte přiřadit, neexistuje." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Vlastník nemůže opustit tým, musíte přeřadit roli vlastníka." @@ -1316,31 +1311,31 @@ msgstr "Chyba ověření" msgid "errors.version-not-supported" msgstr "Soubor má nekompatibilní číslo verze" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Chyba připojení, adresa URL není dostupná" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "Adresa URL neprošla ověřením." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Poslední dodávka nebyla úspěšná." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Chyba při ověřování SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Timeout" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Při ověřování došlo k neočekávané chybě" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Neočekávaný stav %s" @@ -1404,19 +1399,19 @@ msgstr "Došlo k chybě" msgid "inspect.attributes.blur" msgstr "Rozostření" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Hodnota" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1424,7 +1419,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Výplň" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Stáhnout zdrojový obrázek" @@ -1518,81 +1513,84 @@ msgstr "Plná" msgid "inspect.attributes.stroke.width" msgstr "Šířka" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Typografie" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Rodina písem" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Velikost písma" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Styl písma" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Tloušťka písma" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Mezery mezi písmeny" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Výška řádku" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Dekorace textu" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Žádná" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Podtržení" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformace textu" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "První písmena velká" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Malá písmena" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Žádná" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Nenastaveno" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Velká písmena" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Pokud se chcete dozvědět více o inspektorovi designu, navštivte centrum " "nápovědy společnosti Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Více informací o inspektorovi" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Vyberte tvar, tabuli nebo skupinu, abyste mohli zkontrolovat jejich " @@ -1654,7 +1652,7 @@ msgstr "Text" msgid "inspect.tabs.info" msgstr "Informace" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Zkratky" @@ -1666,11 +1664,11 @@ msgstr "Přijmout" msgid "labels.access-tokens" msgstr "Přístupové tokeny" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktivní" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Přidat" @@ -1678,11 +1676,11 @@ msgstr "Přidat" msgid "labels.add-custom-font" msgstr "Přidat vlastní písmo" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Přidávání..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Správce" @@ -1690,7 +1688,7 @@ msgstr "Správce" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Vše" @@ -1713,7 +1711,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Špatná brána" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Zrušit" @@ -1721,11 +1719,11 @@ msgstr "Zrušit" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Zavřít" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Sbalit" @@ -1737,11 +1735,11 @@ msgstr "Komentář" msgid "labels.comment.mark-as-solved" msgstr "Označit jako vyřešené" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Komentáře" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Komunita" @@ -1749,7 +1747,7 @@ msgstr "Komunita" msgid "labels.confirm-password" msgstr "Potvrďte heslo" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Pokračovat" @@ -1761,7 +1759,7 @@ msgstr "Pokračovat s" msgid "labels.continue-with-penpot" msgstr "Můžete pokračovat s účtem Penpot" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Kopírovat odkaz" @@ -1769,7 +1767,7 @@ msgstr "Kopírovat odkaz" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Vytvořit" @@ -1789,7 +1787,7 @@ msgstr "Vlastní písma" msgid "labels.dashboard" msgstr "Menu" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Smazat" @@ -1801,7 +1799,7 @@ msgstr "Smazat komentář" msgid "labels.delete-comment-thread" msgstr "Smazat vlákno" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Smazat pozvánku" @@ -1818,15 +1816,15 @@ msgstr "Vývojář" msgid "labels.director" msgstr "Ředitel" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Zahodit" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Pracovní verze" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Upravit" @@ -1834,7 +1832,7 @@ msgstr "Upravit" msgid "labels.edit-file" msgstr "Upravit soubor" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" @@ -1843,11 +1841,11 @@ msgstr "Editor" msgid "labels.event" msgstr "Událost" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Platnost vypršela" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exportovat" @@ -1875,7 +1873,7 @@ msgstr "Poskytovatelé písem" msgid "labels.font-variants" msgstr "Styly" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Písma" @@ -1889,11 +1887,11 @@ msgstr "Zakladatel / viceprezident" msgid "labels.freelancer" msgstr "Jsem freelancer" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Úložiště Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Poslat zpětnou vazbu" @@ -1905,19 +1903,19 @@ msgstr "Jít zpět" msgid "labels.graphic-design" msgstr "Grafický design" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Centrum nápovědy" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Skrýt vyřešené komentáře" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Import" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Neaktivní" @@ -1939,7 +1937,7 @@ msgstr "Interní chyba" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Pozvánky" @@ -1947,7 +1945,7 @@ msgstr "Pozvánky" msgid "labels.language" msgstr "Jazyk" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Knihovny a šablony" @@ -1963,7 +1961,7 @@ msgstr "Přihlásit se ne registrovat" msgid "labels.login" msgstr "Přihlášení" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Odhlásit se" @@ -1971,11 +1969,11 @@ msgstr "Odhlásit se" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Člen" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Členové" @@ -1983,15 +1981,15 @@ msgstr "Členové" msgid "labels.new-password" msgstr "Nové heslo" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Další" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Vše je aktuální! Zde se zobrazí upozornění na nové komentáře." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Nejsou žádné pozvánky." @@ -2008,7 +2006,7 @@ msgstr "Ups!" msgid "labels.notifications" msgstr "Oznámení" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 soubor" @@ -2022,7 +2020,7 @@ msgstr[0] "1 tabule" msgstr[1] "%s tabule" msgstr[2] "%s tabulí" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 projekt" @@ -2042,7 +2040,7 @@ msgstr "Staré heslo" msgid "labels.only-yours" msgstr "Jen vaše" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Možnosti" @@ -2058,7 +2056,7 @@ msgstr "Jiné (upřesněte)" msgid "labels.other-short" msgstr "Ostatní" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Majitel" @@ -2066,7 +2064,7 @@ msgstr "Majitel" msgid "labels.password" msgstr "Heslo" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Nevyřízený" @@ -2090,11 +2088,11 @@ msgstr "Produktový nebo projektový manažer" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projekty" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Poznámky k verzi" @@ -2108,11 +2106,11 @@ msgstr "Znovu načíst soubor" msgid "labels.remove" msgstr "Odstranit" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Odebrat člena" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Přejmenovat" @@ -2140,7 +2138,7 @@ msgstr "nová odpověď" msgid "labels.reply.thread" msgstr "Odpověď" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Znovu poslat pozvánku" @@ -2152,15 +2150,15 @@ msgstr "Obnovit" msgid "labels.retry" msgstr "Zkusit znovu" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Role" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Uložit" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Hledat" @@ -2188,11 +2186,11 @@ msgstr "Provádíme plánovanou údržbu našich systémů." msgid "labels.service-unavailable.main-message" msgstr "Služba je nedostupná" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Sady" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Nastavení" @@ -2204,11 +2202,11 @@ msgstr "Sdílet" msgid "labels.share-prototype" msgstr "Sdílet prototyp" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Knihovny" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Zobrazit všechny komentáře" @@ -2216,11 +2214,11 @@ msgstr "Zobrazit všechny komentáře" msgid "labels.show-comments-list" msgstr "Zobrazit seznam komentářů" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Zobrazit pouze vaše zmínky" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Zobrazit pouze vaše komentáře" @@ -2232,7 +2230,7 @@ msgstr "Sketch" msgid "labels.start" msgstr "Start" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" @@ -2254,7 +2252,7 @@ msgstr "Člen týmu" msgid "labels.themes" msgstr "Motivy" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutoriály" @@ -2282,15 +2280,15 @@ msgstr "Nahrát vlastní písma" msgid "labels.uploading" msgstr "Nahrávání…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Jen pro čtení" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Prohlížeč" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2298,11 +2296,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Napsat nový komentář" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(vy)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Váš účet" @@ -2311,23 +2309,23 @@ msgstr "Váš účet" msgid "labels.youtube" msgstr "YouTube" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Vyberte obrázek" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Přechod" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Obrázek" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "obr" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Zachovat poměr stran" @@ -2345,7 +2343,7 @@ msgstr "Načítání obrázku…" msgid "media.radial" msgstr "Radiální" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Plná" @@ -2420,19 +2418,19 @@ msgstr "Vytvořit token" msgid "modals.create-access-token.title" msgstr "Vygenerujte přístupový token" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Vytvořit webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Vytvořit webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Adresa URL datové části" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2478,11 +2476,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Smazat konverzaci" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Opravdu chcete smazat tuto anotaci?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Smazat anotaci" @@ -2528,11 +2526,11 @@ msgstr "Opravdu chcete smazat toto písmo? Pokud je použito v souboru, nenačte msgid "modals.delete-font.title" msgstr "Mazání písma" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Opravdu chcete smazat tuto stránku?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Smazat stránku" @@ -2583,29 +2581,29 @@ msgstr[0] "Mazání souboru" msgstr[1] "Mazání souborů" msgstr[2] "Mazání souborů" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Smazat tým" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Opravdu chcete tento tým smazat? Všechny projekty a soubory spojené s týmem " "budou trvale smazány." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Mazání týmu" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Smazat člena" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Opravdu chcete tohoto člena smazat z týmu?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Smazat člena týmu" @@ -2622,57 +2620,57 @@ msgstr[2] "" "Aktiva, která již byla v těchto souborech použita, tam zůstanou (nebude " "porušen žádný návrh)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Smazat webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Opravdu chcete tento webhook smazat?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Mazání webhooku" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Upravit webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Upravit webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Poslat pozvánku" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-maily oddělené čárkou" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Některé e-maily jsou od současných členů týmu. Jejich pozvánky nebudou " "odeslány." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Můžete pozvat členy do týmu, aby měli přístup k tomuto souboru a všem " "souborům týmu." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Pozvat členy do týmu" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Protože jste jediným členem tohoto týmu, tým bude smazán spolu s jeho " "projekty a soubory." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Opravdu chcete opustit tým %s?" @@ -2700,15 +2698,15 @@ msgstr "Vyberte člena, kterého chcete povýšit" msgid "modals.leave-and-reassign.title" msgstr "Než odejdete" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Opustit tým" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Opravdu chcete opustit tento tým?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Opuštění týmu" @@ -2733,39 +2731,39 @@ msgstr[0] "Přesunout knihovnu" msgstr[1] "Přesunout knihovny" msgstr[2] "Přesunout knihovny" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Posunout o" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Převést vlastnictví" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Pokud převedete vlastnictví, změníte svou roli na správce a ztratíte " "některá oprávnění k tomuto týmu. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Jste současným vlastníkem tohoto týmu. Opravdu chcete udělat %s novým " "vlastníkem týmu?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Nový majitel týmu" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publikovat" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Vaše knihovna je prázdná. Opravdu to chcete publikovat?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Publikovat prázdnou knihovnu" @@ -2823,21 +2821,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Aktualizujte komponenty ve sdílené knihovně" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Aktualizovat" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Zrušit" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Chystáte se aktualizovat komponentu ve sdílené knihovně. To může ovlivnit " "další soubory, které ji používají." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Aktualizovat komponentu ve sdílené knihovně" @@ -2947,11 +2945,11 @@ msgstr "Přestávka na údržbu: do 5 minut budeme mimo provoz na krátkou údr msgid "notifications.by-code.upgrade-version" msgstr "K dispozici je nová verze, obnovte prosím stránku" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Pozvánka byla úspěšně odeslána" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Odkaz na pozvánku zkopírován" @@ -3096,7 +3094,7 @@ msgstr "" "Nezapomeňte zahrnout všechny. Vývojáře, designéry, manažéry... rozmanitost " "se počítá :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Pozvat s rolí:" @@ -3314,665 +3312,649 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Přejít na přihlášení" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Odpojit" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Smíšený" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Odstranit barvu" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Vyberte položky pomocí tohoto stylu" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Základy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Nástěnka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Prohlížeč" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Pracovní plocha" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Zarovnání" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Upravit" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Obecný" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Obecný" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Hlavní menu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Upravit vrstvy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigace" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigace" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigace" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panely" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Cesty" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Tvary" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Texty" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Nástroje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Přiblížení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Přiblížení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Komentáře" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Přidat uzel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Zarovnat dolů" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Zarovnat na střed" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Zarovnat vodorovně na střed" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Zarovnat do bloku" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Zarovnat vlevo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Zarovnat vpravo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Zarovnat nahoru" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Zarovnat na střed svisle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Vytvořit tabuli z výběru" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Přepnout tučné písmo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Rozdíl" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Vyloučení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Průnik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Sloučení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Přesunout dozadu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Přesunout dozadu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Přesunout dopředu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Posunout dopředu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Vymazat zpět" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopírovat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Zkopírovat odkaz do schránky" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Vytvořit nový" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Vyjmout" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Oddálit" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Smazat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Smazat uzel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Odpojit komponentu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Křivka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipsa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Tabule" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Nakreslit cestu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Cesta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Obdélník" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplikovat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Zrušit" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Exportovat tvary" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Přiblížit, aby se vešlo vše" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Překlopit vodorovně" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Překlopit svisle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Zmenšit velikost písma" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Zvětšit velikost písma" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Přejít na koncepty" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Přejít na sdílené knihovny" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Hledat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Skupina" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Rozložit vodorovně" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Zobrazit/skrýt uživatelské rozhraní" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Přiblížit" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Vložit obrázek" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Přepnout kurzívu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Propojit uzly" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Zmenšit mezery mezi písmeny" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Zvětšit mezery mezi písmeny" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Snížit výšku řádku" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Zvýšit výšku řádku" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Přepnout řádek" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Udělat roh" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Udělat křivku" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maska" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Sloučit uzly" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Posunout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Posunout dolů rychle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Posunout doleva rychle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Posunout doprava rychle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Posunout nahoru rychle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Posunout uzel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Posunout dolů" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Posunout vlevo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Posunout vpravo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Posunout nahoru" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Další tabule" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Nebyly nalezeny žádné zkratky" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Nastavit průhlednost na 100 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Nastavit průhlednost na 10 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Nastavit průhlednost na 20 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Nastavit průhlednost na 30 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Nastavit průhlednost na 40 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Nastavit průhlednost na 50 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Nastavit průhlednost na 60 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Nastavit průhlednost na 70 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Nastavit průhlednost na 80 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Nastavit průhlednost na 90 %" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Výběr barvy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Přejít do sekce komentářů" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Přejít na nástěnku" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Přejděte do sekce inspektor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Přejít do části interakce" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Přejít do části interakce" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Přejít na pracovní plochu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " nebo " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Vložit" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Předchozí tabule" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Znovu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Přejmenovat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Obnovit přiblížení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Měřítko" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Prohledat zkratky" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Vybrat vše" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Vybrat další vrstvu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Vybrat nadřazenou vrstvu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Vybrat předchozí vrstvu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Rozdělit uzly" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Zobrazit/skrýt mřížku pixelů" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Zobrazit/skrýt zkratky" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Přichytit k uzlům" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Přichytit k mřížce pixelů" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Začít upravovat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Začít měření" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Zastavit měření" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Nastavit náhledy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Klávesové zkratky" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Přepnout dynamické zarovnání" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Přepnout podklady" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Přepnout paletu barev" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Přepnout režim soustředění" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Přepnout zobrazení na celou obrazovku" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Zobrazit / Skrýt vodící linky" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Přepnout historii" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Přepínání vrstev" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Přidat/odebrat flexibilní rozložení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Přidat/odebrat rozložení mřížky" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Uzamknout vybrané" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Uzamknout proporce" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Zobrazit / Skrýt pravítka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Přichytit na vodící linky" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Přichytit k vodítkům pravítek" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Přepnout paletu textu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Změnit motiv" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Přepnout viditelnost" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Přepnout styl přiblížení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Přepnout podtržení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Zpět" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Zrušit seskupení" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Zrušit masku" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Rozmístit vertikálně" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Zmenšení zoomu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Zvětšení zoomu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Přiblížit vybrané" @@ -4028,19 +4010,19 @@ msgstr "Heslo - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Pozvánky – %s – Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Členové - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Nastavení - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -4110,43 +4092,43 @@ msgstr "Zobrazit interakce po kliknutí" msgid "viewer.header.sitemap" msgstr "Mapa stránek" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Poslední doručení proběhlo úspěšně." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Zarovnat vodorovně na střed (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Rozmístit vodorovné mezery (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Zarovnat doleva (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Zarovnat doprava (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Zarovnat dolů (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Zarovnat svisle na střed (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Rozmístit vertikální mezery (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Zarovnat nahoru (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Přidat knihovnu" @@ -4155,19 +4137,19 @@ msgstr "Přidat knihovnu" msgid "workspace.assets.assets" msgstr "Podklady" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Všechny podklady" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Barvy" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Přidat barvu" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Komponenty" @@ -4175,21 +4157,21 @@ msgstr "Komponenty" msgid "workspace.assets.components.add-component" msgstr "Přidat komponentu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Vytvořit skupinu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Vaše položky budou automaticky pojmenovány jako „název skupiny / název " "položky“" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Delete" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplikovat" @@ -4197,11 +4179,11 @@ msgstr "Duplikovat" msgid "workspace.assets.duplicate-main" msgstr "Duplikovat hlavní" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Upravit" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filtr" @@ -4210,23 +4192,23 @@ msgstr "Filtr" msgid "workspace.assets.graphics" msgstr "Grafika" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Zobrazení mřížky" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Skupina" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Název skupiny" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Zobrazení seznamu" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "místní knihovna" @@ -4238,15 +4220,15 @@ msgstr "Nebyly nalezeny žádné podklady" msgid "workspace.assets.open-library" msgstr "Otevřete soubor knihovny" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Přejmenovat" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Přejmenovat skupinu" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Hledat v podkladech" @@ -4263,22 +4245,22 @@ msgstr[2] "Počet vybraných položek: %s" msgid "workspace.assets.shared-library" msgstr "Sdílená knihovna" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 komponenta" msgstr[1] "%s komponenty" msgstr[2] "%s komponent" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Seřadit" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Typografie" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Přidat typografii" @@ -4303,7 +4285,7 @@ msgstr "Mezery mezi písmeny" msgid "workspace.assets.typography.line-height" msgstr "Výška řádku" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4315,59 +4297,59 @@ msgstr "Styly textu" msgid "workspace.assets.typography.text-transform" msgstr "Transformace textu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Zrušit seskupení" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Vytvořit oblast" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Vytvořit tabuli" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Sloučit buňky" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Přidat 1 sloupec vpravo" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Přidat 1 sloupec vlevo" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Smazat sloupec" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Smazat sloupec a tvary" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Duplikovat sloupec" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Přidat 1 řádek níže" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Přidat 1 řádek výše" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Smazat řádek" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Smazat řádek a tvary" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Duplikovat řádek" @@ -4375,7 +4357,7 @@ msgstr "Duplikovat řádek" msgid "workspace.focus.focus-mode" msgstr "Režim soustředění" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Vypnout režim soustředění" @@ -4395,11 +4377,11 @@ msgstr "Lineární přechod" msgid "workspace.gradients.radial" msgstr "Radiální přechod" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Zakázat dynamické zarovnání" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Zakázat proporcionální měřítko" @@ -4408,23 +4390,23 @@ msgstr "Zakázat proporcionální měřítko" msgid "workspace.header.menu.disable-scale-text" msgstr "Zakázat měřítko textu" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Zakázat přichycení k vodicím lištám" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Zakázat přichycení k pixelu" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Zakázat přichycení na vodící linky pravítek" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Povolit dynamické zarovnání" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Povolit proporcionální měřítko" @@ -4433,51 +4415,51 @@ msgstr "Povolit proporcionální měřítko" msgid "workspace.header.menu.enable-scale-text" msgstr "Povolit měřítko textu" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Přichytit k vodicím lištám" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Povolit přichycení k pixelu" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Přichytit k vodítkům pravítek" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Skrýt názvy tabulí" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Skrýt vodící linky" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Skrýt paletu barev" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Skrýt mřížku pixelů" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Skrýt pravítka" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Skrýt paletu písem" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Upravit" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Soubor" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Nápověda a informace" @@ -4486,59 +4468,59 @@ msgstr "Nápověda a informace" msgid "workspace.header.menu.option.power-up" msgstr "Nastartujte svůj plán" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Předvolby" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Zobrazit" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Znovu" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Vybrat vše" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Zobrazit názvy tabulí" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Zobrazit vodící linky" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Zobrazit paletu barev" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Zobrazit mřížku pixelů" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Zobrazit pravítka" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Zobrazit paletu písem" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Přepnout na tmavý motiv" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Přepnout na světlý motiv" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Zpět" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Resetovat" @@ -4554,7 +4536,7 @@ msgstr "Uloženo" msgid "workspace.header.saving" msgstr "Ukládání" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Sdílet" @@ -4563,11 +4545,11 @@ msgstr "Sdílet" msgid "workspace.header.unsaved" msgstr "Neuložené změny" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Režim zobrazení (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Přiblížení" @@ -4579,7 +4561,7 @@ msgstr "Zvětšit na celou obrazovku" msgid "workspace.header.zoom-fit" msgstr "Zmenšit na celou obrazovku" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Přiblížit, aby se vše vešlo" @@ -4587,19 +4569,19 @@ msgstr "Přiblížit, aby se vše vešlo" msgid "workspace.header.zoom-full-screen" msgstr "Celá obrazovka" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Přiblížit vybrané" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Upravit mřížku" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Odejít" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Zobrazit možnosti mezer uvnitř všech stran" @@ -4615,7 +4597,7 @@ msgstr "Hotovo" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Lokalizovat" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Vyhledat rozložení mřížky" @@ -4624,10 +4606,6 @@ msgstr "Vyhledat rozložení mřížky" msgid "workspace.libraries.add" msgstr "Přidat" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "barvy %s" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Ve vaší knihovně zatím nejsou žádné barevné styly" @@ -4654,43 +4632,35 @@ msgstr "Nedávné barvy" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Doplňkové RGB" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Uložit styl barev" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s komponenty" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Nebo přidejte některé z těchto:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "Ve vašem týmu nejsou žádné sdílené knihovny, které můžete hledat" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "nějaké šablony zde" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Knihovna souborů" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s grafika" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "KNIHOVNY V TOMTO SOUBORU" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "KNIHOVNY" @@ -4699,11 +4669,11 @@ msgstr "KNIHOVNY" msgid "workspace.libraries.library" msgstr "KNIHOVNA" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "AKTUALIZACE KNIHOVNY" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Načítání…" @@ -4712,79 +4682,75 @@ msgstr "Načítání…" msgid "workspace.libraries.more-templates" msgstr "Můžete hledat " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Neexistují žádné sdílené knihovny, které by potřebovaly aktualizaci" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Nebyly nalezeny žádné shody pro „%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Prohledat sdílené knihovny" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "SDÍLENÉ KNIHOVNY" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Připojit knihovnu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Několik typografií" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Odpojte všechny typografie" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s typografie" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Odpojit knihovnu" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Aktualizace" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "zobrazit všechny změny" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "AKTUALIZACE" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Kliknutím na tlačítko + přidáte interakce." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Přidat rozostření" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Odebrat rozostření" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Rozostření" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Rozostření skupiny" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Rozostření výběru" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Přepnout rozostření" @@ -4792,39 +4758,39 @@ msgstr "Přepnout rozostření" msgid "workspace.options.canvas-background" msgstr "Pozadí plátna" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Oříznout obsah" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Komponenta" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Anotace" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Kopírovat" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Vytvořte anotaci" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Upravit anotaci" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Hlavní" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Vyměnit komponentu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "V této knihovně zatím nejsou žádné položky" @@ -4868,7 +4834,7 @@ msgstr "Nahoře" msgid "workspace.options.constraints.topbottom" msgstr "Nahoře a dole" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" @@ -4881,22 +4847,22 @@ msgstr "Exportovat" msgid "workspace.options.export-multiple" msgstr "Exportovat výběr" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Exportovat 1 prvek" msgstr[1] "Exportovat %s prvky" msgstr[2] "Exportovat %s prvků" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Přidat export" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Odebrat export" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Přípona" @@ -4904,7 +4870,7 @@ msgstr "Přípona" msgid "workspace.options.exporting-complete" msgstr "Export byl dokončen" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exportování…" @@ -4916,27 +4882,27 @@ msgstr "Export se nezdařil" msgid "workspace.options.exporting-object-slow" msgstr "Export je nečekaně pomalý" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Výplň" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Přidat barvu výplně" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Odebrat barvu výplně" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Změňte velikost panelu podle obsahu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Přidat počáteční bod" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Flow" @@ -4945,19 +4911,19 @@ msgstr "Flow" msgid "workspace.options.flows.flow-start" msgstr "Začátek" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Začátky" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Odstranit flow" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automaticky" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Sloupce" @@ -4966,7 +4932,7 @@ msgstr "Sloupce" msgid "workspace.options.grid.grid-title" msgstr "Mřížka" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Barva" @@ -4975,15 +4941,15 @@ msgstr "Barva" msgid "workspace.options.grid.params.columns" msgstr "Sloupce" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Mezera" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Výška" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Mezera vně" @@ -4992,7 +4958,7 @@ msgstr "Mezera vně" msgid "workspace.options.grid.params.rows" msgstr "Řádky" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Nastavit jako výchozí" @@ -5006,147 +4972,147 @@ msgstr "Velikost" msgid "workspace.options.grid.params.type" msgstr "Typ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Dole" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Střed" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Vlevo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Vpravo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Roztáhnout" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Nahoře" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Použít výchozí" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Šířka" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Řádky" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Čtverec" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Výplň skupiny" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Ohraničení skupiny" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Vodící linky" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Výška" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspektor" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Akce" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Po prodlevě" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animace" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Dissolve" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Žádná" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Push" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Slide" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "automaticky" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Přidejte překrytí pozadí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Zavřít při kliknutí mimo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Zavřít překrytí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Zavřít překrytí: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Prodleva" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Cíl" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Doba trvání" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linear" @@ -5155,47 +5121,47 @@ msgstr "Linear" msgid "workspace.options.interaction-in" msgstr "Dovnitř" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Mouse enter" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Mouse leave" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Přejít na" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Přejít na: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(nenastaveno)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Efekt offsetu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Při kliknutí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Otevřít překrytí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Otevřít překrytí: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Otevřít adresu URL" @@ -5204,87 +5170,87 @@ msgstr "Otevřít adresu URL" msgid "workspace.options.interaction-out" msgstr "Ven" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Dole uprostřed" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Dole vlevo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Dole vpravo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Střed" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Ručně" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Nahoře uprostřed" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Nahoře vlevo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Nahoře vpravo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Pozice" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Zachovat pozici posouvání" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Předchozí obrazovka" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relativní k" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "já" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Přepnout překrytí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Přepnout překrytí: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Spustit" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Při najetí myši" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Při stisknutí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interakce" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Přidat interakci" @@ -5293,67 +5259,67 @@ msgstr "Přidat interakci" msgid "workspace.options.interactions.remove-interaction" msgstr "Odebrat interakci" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Color" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Color burn" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Color dodge" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Darken" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Difference" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Exclusion" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Hard light" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Hue" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Lighten" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminosity" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiply" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Overlay" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturation" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Screen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Soft light" @@ -5372,7 +5338,7 @@ msgstr "Seskupení vrstev" msgid "workspace.options.layer-options.title.multiple" msgstr "Vybrané vrstvy" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Přepnout viditelnost vrstvy" @@ -5381,19 +5347,19 @@ msgstr "Přepnout viditelnost vrstvy" msgid "workspace.options.layout-item.advanced-ops" msgstr "Rozšířené možnosti" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Maximální výška" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Maximální šířka" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Minimální výška" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Minimální šířka" @@ -5507,15 +5473,15 @@ msgstr "místo mezi" msgid "workspace.options.layout.top" msgstr "Nahoře" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Více barev" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Více barev knihovny" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Průhlednost" @@ -5524,27 +5490,27 @@ msgstr "Průhlednost" msgid "workspace.options.position" msgstr "Pozice" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototyp" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Poloměr" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Dole vlevo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Dole vpravo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Nahoře vlevo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Nahoře vpravo" @@ -5556,7 +5522,7 @@ msgstr "Nedávné" msgid "workspace.options.retry" msgstr "Opakovat" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Otočit" @@ -5564,31 +5530,31 @@ msgstr "Otočit" msgid "workspace.options.search-font" msgstr "Hledat písmo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Vyberte tvar, tabuli nebo skupinu a přetáhněte připojení k jiné tabuli." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Vybrané barvy" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Vyplnění výběru" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Obrys výběru" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Přidat stín" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Rozostření" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Barva stínu" @@ -5600,55 +5566,56 @@ msgstr "Vržený stín" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Vnitřní stín" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Odebrat stín" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Rozpětí" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Stín" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Stín skupiny" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Stiny výběru" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Přepnout stín" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Zobrazit v exportech" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Zobrazit v režimu zobrazení" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Velikost" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Předvolby velikosti" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Obrys" @@ -5657,7 +5624,7 @@ msgstr "Obrys" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Zakončení - kruh" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Kruh" @@ -5666,7 +5633,7 @@ msgstr "Kruh" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Zakončení - diamant" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamant" @@ -5675,19 +5642,19 @@ msgstr "Diamant" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Zakončení - šipka" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Šipka" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Žádné" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Kulaté" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Čtvercové" @@ -5696,7 +5663,7 @@ msgstr "Čtvercové" msgid "workspace.options.stroke-cap.square-marker" msgstr "Zakončení - čtverec" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Obdélník" @@ -5705,83 +5672,83 @@ msgstr "Obdélník" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Zakončení - trojúhelník" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Trojúhelník" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Barva obrysu" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Šířka obrysu" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Přidat barvu obrysu" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Uprostřed" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Přerušovaný" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Tečkovaný" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Uvnitř" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Smíšený" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Vně" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Odebrat obrys" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Plný" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Zarovnat dolů" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Zarovnat na střed" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Zarovnat nahoru" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Automatická výška" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Automatická šířka" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Pevná" @@ -5803,35 +5770,35 @@ msgstr "Malá písmena" msgid "workspace.options.text-options.none" msgstr "Žádné" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Přeškrtnutí (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Zarovnat doprostřed" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Zarovnat" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Zarovnat vlevo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Zarovnat vpravo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Text skupiny" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Text výběru" @@ -5840,7 +5807,7 @@ msgstr "Text výběru" msgid "workspace.options.text-options.titlecase" msgstr "První písmeno velké" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Podtrhnout (%s)" @@ -5849,19 +5816,19 @@ msgstr "Podtrhnout (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Velká písmena" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Pomocí tlačítka přehrávání v záhlaví spusťte zobrazení prototypu." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Šířka" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y" @@ -5905,107 +5872,107 @@ msgstr "Oddělit uzly (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Přichytit uzly (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Otevřít" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Objevte [další pluginy](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Zatím nejsou nainstalovány žádné pluginy" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Manifest pluginu je nesprávný." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Abyste mohli tento plugin používat, musíte být editor" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Plugin neexistuje nebo adresa URL není správná." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Instalovat" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Nainstalované pluginy" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Správce pluginů" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Pluginy" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "AKTUALIZOVAT TENTO PLUGIN" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "Plugin byl změněn od posledního otevření. Nyní chce také získat přístup k:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Zahájit stahování souborů." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Přečtěte si své komentáře a odpovědi." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Přečtěte si a upravte své komentáře a odpovídejte svým jménem." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Číst obsah souborů, ke kterým mají uživatelé přístup." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Číst a upravovat obsah souborů, ke kterým mají uživatelé přístup." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Tento plugin je vytvořen třetí stranou, takže se před udělením přístupu " "ujistěte, že mu důvěřujete. Ochrana a bezpečnost vašich dat jsou pro nás " "důležité. Máte-li jakékoli obavy, kontaktujte podporu." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Číst vaše knihovny a položky." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Číst a upravovat vaše knihovny a položky." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "PLUGIN '%s' POŽADUJE PŘÍSTUP K:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Číst informace o profilu aktuálního uživatele." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Seznam pluginů" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Odebrat plugin" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Napište adresu URL pluginu" @@ -6013,26 +5980,26 @@ msgstr "Napište adresu URL pluginu" msgid "workspace.plugins.success" msgstr "Plugin správně načten." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Pluginy" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "TEĎ NE" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Chcete se podívat? Otevře se v novém konceptu pro váš aktuální tým. (Pokud " "ne, můžete jej vždy najít v nainstalovaných zásuvných modulech libovolného " "souboru.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "PLUGIN '%s' JE NAINSTALOVÁN PRO VAŠEHO UŽIVATELE!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "VYZKOUŠET PLUGIN" @@ -6044,7 +6011,7 @@ msgstr "Přidat flexibilní rozložení" msgid "workspace.shape.menu.add-grid" msgstr "Přidat rozvržení mřížky" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Přidat rozvržení" @@ -6084,7 +6051,7 @@ msgstr "Kopírovat vlastnosti" msgid "workspace.shape.menu.copy-text" msgstr "Kopírovat jako text" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Vytvořit anotaci" @@ -6092,11 +6059,11 @@ msgstr "Vytvořit anotaci" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Výběr na tabuli" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Vytvořit komponentu" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Vytvořte více komponent" @@ -6104,7 +6071,7 @@ msgstr "Vytvořte více komponent" msgid "workspace.shape.menu.cut" msgstr "Vyjmout" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Smazat" @@ -6112,15 +6079,15 @@ msgstr "Smazat" msgid "workspace.shape.menu.delete-flow-start" msgstr "Smazat počáteční bod" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Odpojit instanci" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Odpojit instance" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Rozdíl" @@ -6132,11 +6099,11 @@ msgstr "Duplikovat" msgid "workspace.shape.menu.edit" msgstr "Upravit" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Vyloučit" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Vyrovnat" @@ -6169,19 +6136,19 @@ msgstr "Přejít na hlavní soubor komponentu" msgid "workspace.shape.menu.group" msgstr "Skupina" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Skrýt" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Zobrazit/skrýt uživatelské rozhraní" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Průnik" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Zamknout" @@ -6189,7 +6156,7 @@ msgstr "Zamknout" msgid "workspace.shape.menu.mask" msgstr "Maska" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Vložit" @@ -6209,7 +6176,7 @@ msgstr "Odstranit flexibilní rozložení" msgid "workspace.shape.menu.remove-grid" msgstr "Odebrat rozložení mřížky" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Odebrat rozložení" @@ -6217,11 +6184,11 @@ msgstr "Odebrat rozložení" msgid "workspace.shape.menu.rename" msgstr "Přejmenovat" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Obnovit" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Obnovit hlavní komponentu" @@ -6229,15 +6196,15 @@ msgstr "Obnovit hlavní komponentu" msgid "workspace.shape.menu.select-layer" msgstr "Vybrat vrstvu" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Zobrazit" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Zobrazit v panelu položek" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Zobrazit hlavní komponentu" @@ -6250,6 +6217,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Nastavit jako miniaturu" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformovat na cestu" @@ -6257,11 +6225,11 @@ msgstr "Transformovat na cestu" msgid "workspace.shape.menu.ungroup" msgstr "Zrušit seskupení" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Sloučení" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Odemknout" @@ -6274,7 +6242,7 @@ msgstr "Zrušit masku" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Aktualizovat hlavní komponenty" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Aktualizovat hlavní komponentu" @@ -6286,11 +6254,11 @@ msgstr "Sbalit postranní panel" msgid "workspace.sidebar.expand" msgstr "Rozbalit postranní panel" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Historie" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Vrstvy" @@ -6330,11 +6298,11 @@ msgstr "Texty" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Importované atributy SVG" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Stránky" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Přidat stránku" @@ -6351,11 +6319,11 @@ msgstr "%s aktivních motivů" msgid "workspace.tokens.add set" msgstr "Přidat sadu" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Aplikováno na" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Zpět na seznam motivů" @@ -6363,15 +6331,15 @@ msgstr "Zpět na seznam motivů" msgid "workspace.tokens.create-new-theme" msgstr "Vytvořte si svůj první motiv hned teď." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Vytvořte si." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Vytvořte nový %s token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Smazat token" @@ -6379,15 +6347,15 @@ msgstr "Smazat token" msgid "workspace.tokens.delete-theme-title" msgstr "Smazat motiv" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Duplikovat token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Upravit token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Upravit motiv" @@ -6395,11 +6363,7 @@ msgstr "Upravit motiv" msgid "workspace.tokens.edit-themes" msgstr "Upravit motivy" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Upravit token" - -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Zadejte název tokenu %s" @@ -6420,7 +6384,7 @@ msgstr "Téma" msgid "workspace.tokens.no-active-theme" msgstr "Žádný motiv není aktivní" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "K aktivaci/deaktivaci sad musíte být editor" @@ -6428,11 +6392,11 @@ msgstr "K aktivaci/deaktivaci sad musíte být editor" msgid "workspace.tokens.no-permission-themes" msgstr "Abyste mohli používat témata, musíte být editor" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Zatím nejsou definovány žádné sady. Nejprve si jednu vytvořte." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Zatím nejsou žádné sady." @@ -6444,16 +6408,16 @@ msgstr "Nejsou zde žádné motivy." msgid "workspace.tokens.no-themes-currently" msgstr "Momentálně nemáte žádné motivy." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Původní hodnota: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Reference není platná nebo není v žádné aktivní sadě" -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Vyřešená hodnota: %s" @@ -6462,11 +6426,11 @@ msgstr "Vyřešená hodnota: %s" msgid "workspace.tokens.save-theme" msgstr "Uložit motiv" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Vyberte sadu." -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "" "Definujte, jaké sady tokenů by měly být použity jako součást této možnosti " @@ -6481,23 +6445,23 @@ msgstr "Sada tokenů není aktivní" msgid "workspace.tokens.theme-name" msgstr "Motiv %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Popis" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Jméno" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " není platný název tokenu.\n" "Názvy tokenů by měly obsahovat pouze písmena a číslice oddělené znakem . a " "nesmí začínat znakem $." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Hodnota" @@ -6505,19 +6469,19 @@ msgstr "Hodnota" msgid "workspace.tokens.tokens-section-title" msgstr "TOKENY - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Nástroje" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "Hodnota není platná" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "Přejmenováním tohoto tokenu se přeruší jakýkoli odkaz na jeho starý název." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Položky" @@ -6525,7 +6489,7 @@ msgstr "Položky" msgid "workspace.toolbar.color-palette" msgstr "Paleta barev (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Komentáře (%s)" @@ -6732,19 +6696,19 @@ msgstr "Operace nad %s" msgid "workspace.undo.title" msgstr "Historie" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Zrušit" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Více informací" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Ve sdílených knihovnách jsou aktualizace" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Aktualizace" @@ -6804,11 +6768,11 @@ msgstr "Chcete obnovit tuto verzi?" msgid "workspace.versions.snapshot-menu" msgstr "Otevřít nabídku snímku" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Akce" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Historie" diff --git a/frontend/translations/da.po b/frontend/translations/da.po index e970d50c90..9c4e72e432 100644 --- a/frontend/translations/da.po +++ b/frontend/translations/da.po @@ -142,7 +142,7 @@ msgstr "Open-source løsningen for design og prototyping." msgid "auth.verification-email-sent" msgstr "Vi har sendt en bekræftelsesmail til" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Tilføj som Delt Bibliotek" @@ -150,19 +150,19 @@ msgstr "Tilføj som Delt Bibliotek" msgid "dashboard.change-email" msgstr "Skift email" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopi)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Opret nyt team" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Dit Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Slet team" @@ -192,11 +192,11 @@ msgstr "" "Penpot. Find ud af mere i sektionen om indholdsrettigheder i [Penpot's " "Terms of Service] (%s). Du kan også læse om [font licensing](2)." -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Invitér til team" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Forlad team" @@ -224,7 +224,7 @@ msgstr "Flyt til andet team" msgid "dashboard.new-file" msgstr "+ Ny Fil" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Ny Fil" @@ -232,7 +232,7 @@ msgstr "Ny Fil" msgid "dashboard.new-project" msgstr "+ Nyt projekt" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nyt Projekt" @@ -240,7 +240,7 @@ msgstr "Nyt Projekt" msgid "dashboard.no-matches-for" msgstr "Intet match fundet for “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Fastgjorte projekter bliver vist her" @@ -256,7 +256,7 @@ msgstr "Din email-adresse er blevet bekræftet med succes" msgid "dashboard.notifications.password-saved" msgstr "Adgangskode gemt med succes!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s medlemmer" @@ -268,7 +268,7 @@ msgstr "Åben fil i en ny fane" msgid "dashboard.password-change" msgstr "Skift adgangskode" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Fastgør/Løsne" @@ -285,7 +285,7 @@ msgstr "Vil du slette din konto?" msgid "dashboard.remove-shared" msgstr "Fjern som Delt Bibliotek" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Søg…" @@ -321,7 +321,7 @@ msgstr "Din fil er blevet dublikeret med succes" msgid "dashboard.success-duplicate-project" msgstr "Dit projekt er blevet dublikeret med succes" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Din fil er blevet flyttet med succes" @@ -333,15 +333,15 @@ msgstr "Dine filer er blevet flyttet med succes" msgid "dashboard.success-move-project" msgstr "Dit projekt er blevet flyttet med succes" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Team info" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Medlemmer" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Team projekter" @@ -373,15 +373,15 @@ msgstr "Email" msgid "dashboard.your-name" msgstr "Dit navn" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Dit Penpot" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Fortryd" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -409,7 +409,7 @@ msgstr "Skrifttypefamilie" msgid "labels.font-providers" msgstr "Skrifttype udbydere" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Skrifttyper" diff --git a/frontend/translations/de.po b/frontend/translations/de.po index cbaae71134..031e40a501 100644 --- a/frontend/translations/de.po +++ b/frontend/translations/de.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" -"Last-Translator: Stas Haas \n" -"Language-Team: German " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Marius \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -183,7 +183,7 @@ msgstr "" "Ich stimme den [Nutzungsbedingungen](%s) und der " "[Datenschutzrichtlinie](%s) zu." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Nutzungsbedingungen" @@ -210,7 +210,7 @@ msgstr "...Branding, Illustrationen, Marketingmaterialien, usw." msgid "comments.mentions.not-found" msgstr "Es wurden keine Personen für @%s gefunden" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Veröffentlichen" @@ -282,7 +282,7 @@ msgstr "Prototypen teilen" msgid "common.share-link.view-all" msgstr "Alle auswählen" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Veröffentlichung aufheben" @@ -409,7 +409,7 @@ msgstr "Der Token hat kein Ablaufdatum" msgid "dashboard.add-file" msgstr "Datei hinzufügen" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Hinzufügen als gemeinsam genutzte Bibliothek" @@ -417,31 +417,31 @@ msgstr "Hinzufügen als gemeinsam genutzte Bibliothek" msgid "dashboard.change-email" msgstr "E-Mail-Adresse ändern" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(Kopie)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Neues Team erstellen" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Diese Version anheften" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Ihr Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Team löschen" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Penpot-Datei herunterladen (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Standarddatei herunterladen (.svg + .json)" @@ -525,7 +525,7 @@ msgstr "Beginnen Sie mit dem Erschaffen erstaunlicher Dinge" msgid "dashboard.export-binary-multi" msgstr "%s Penpot-Dateien herunterladen (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Zeichenflächen als PDF exportieren" @@ -541,7 +541,7 @@ msgstr "%s Dateien exportieren" msgid "dashboard.export-multiple.selected" msgstr "%s von %s Elementen ausgewählt" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportieren" @@ -760,11 +760,11 @@ msgstr "Daten werden hochgeladen (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Datei %s wird hochgeladen" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Personen einladen" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Team verlassen" @@ -772,7 +772,7 @@ msgstr "Team verlassen" msgid "dashboard.libraries-and-templates" msgstr "Bibliotheken & Vorlagen" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "" "Hier finden Sie einige Bibliotheken und Vorlagen, die Sie zu Ihrem Projekt " @@ -782,7 +782,7 @@ msgstr "" msgid "dashboard.libraries-and-templates.explore" msgstr "Entdecken Sie weitere und erfahren Sie, wie Sie beitragen können" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "" "Beim Importieren der Vorlage ist ein Problem aufgetreten. Die Vorlage wurde " @@ -820,7 +820,7 @@ msgstr "Zu anderem Team verschieben" msgid "dashboard.new-file" msgstr "+ Neue Datei" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Neue Datei" @@ -828,7 +828,7 @@ msgstr "Neue Datei" msgid "dashboard.new-project" msgstr "+ Neues Projekt" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Neues Projekt" @@ -836,11 +836,11 @@ msgstr "Neues Projekt" msgid "dashboard.no-matches-for" msgstr "Keine Übereinstimmungen für “%s“ gefunden" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Angeheftete Projekte werden hier angezeigt" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Benachrichtigungen" @@ -852,7 +852,7 @@ msgstr "Ihre E-Mail-Adresse wurde erfolgreich aktualisiert" msgid "dashboard.notifications.email-verified-successfully" msgstr "Ihre E-Mail-Adresse wurde erfolgreich verifiziert" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Benachrichtigungseinstellungen aktualisiert" @@ -860,11 +860,11 @@ msgstr "Benachrichtigungseinstellungen aktualisiert" msgid "dashboard.notifications.password-saved" msgstr "Passwort wurde erfolgreich gespeichert!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Benachrichtigungen anzeigen" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s Mitglieder" @@ -896,7 +896,7 @@ msgstr "Sie sind jetzt Eigentümer dieses Teams." msgid "dashboard.permissions-change.viewer" msgstr "Sie sind jetzt ein Zuschauer in diesem Team." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Anheften/Lösen" @@ -933,7 +933,7 @@ msgstr "Sie sind nicht mehr Teil des Teams “%s“." msgid "dashboard.save-settings" msgstr "Einstellungen speichern" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Suchen…" @@ -1025,7 +1025,7 @@ msgstr "Benachrichtigungen" msgid "dashboard.show-all-files" msgstr "Alle Dateien anzeigen" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Versionsverlauf" @@ -1049,7 +1049,7 @@ msgstr[1] "Ihre Dateien wurden erfolgreich dupliziert" msgid "dashboard.success-duplicate-project" msgstr "Ihr Projekt wurde erfolgreich dupliziert" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Ihre Datei wurde erfolgreich verschoben" @@ -1061,15 +1061,15 @@ msgstr "Ihre Dateien wurden erfolgreich verschoben" msgid "dashboard.success-move-project" msgstr "Ihr Projekt wurde erfolgreich verschoben" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Teaminformationen" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Teammitglieder" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Teamprojekte" @@ -1089,7 +1089,7 @@ msgstr "Suchergebnisse" msgid "dashboard.type-something" msgstr "Zum Suchen etwas eingeben" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Veröffentlichung der Bibliothek aufheben" @@ -1097,52 +1097,52 @@ msgstr "Veröffentlichung der Bibliothek aufheben" msgid "dashboard.update-settings" msgstr "Einstellungen aktualisieren" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Keine Grenzen für die Kreativität" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Free" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Aktiv" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Wenn dieser Hook ausgelöst wird, dann werden die Eventdetails übermittelt" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Sie können nur von Ihnen erstellte Webhooks löschen oder ändern." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Inhaltstyp" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Webhook erstellen" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook wurde erfolgreich erstellt." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhooks ermöglichen es, andere Websites und Anwendungen automatisch über " "bestimmte Ereignisse bei Penpot zu informieren. Dies geschieht durch das " "Versenden einer POST-Anfrage an die von Ihnen festgelegten URLs." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "" "Um einen Webhook hinzuzufügen, drücken Sie auf die Schaltfläche \"Webhook " "hinzufügen\"." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Bisher wurden noch keine Webhooks erstellt." @@ -1162,7 +1162,7 @@ msgstr "E-Mail" msgid "dashboard.your-name" msgstr "Ihr Name" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Ihr Penpot" @@ -1178,15 +1178,15 @@ msgstr "Achtung" msgid "ds.component-subtitle" msgstr "Zu aktualisierende Komponenten:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Erlauben" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Abbrechen" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1194,6 +1194,18 @@ msgstr "Ok" msgid "ds.confirm-title" msgstr "Sind Sie sicher?" +#: src/app/main/ui/ds/controls/numeric_input.cljs:99 +msgid "ds.inputs.numeric-input.no-matches" +msgstr "Keine Treffer gefunden." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 +msgid "ds.inputs.numeric-input.open-token-list-dropdown" +msgstr "Token-Liste öffnen" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 +msgid "ds.inputs.token-field.detach-token" +msgstr "Token trennen" + #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" msgstr "Auth-Provider für dieses Profil nicht erlaubt" @@ -1234,6 +1246,12 @@ msgstr "Beim Kommentar ist ein Fehler aufgetreten" msgid "errors.deprecated.contact.text" msgstr "kontaktieren Sie uns" +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 +msgid "errors.drop-token-set-parent-to-child" +msgstr "" +"Ein übergeordnetes Set kann nicht auf einem eigenen untergeordneten Pfad " +"abgelegt werden." + #: src/app/main/ui/auth/verify_token.cljs:84, src/app/main/ui/settings/change_email.cljs:29 msgid "errors.email-already-exists" msgstr "E-Mail-Adresse wird bereits verwendet" @@ -1246,15 +1264,19 @@ msgstr "E-Mail-Adresse wurde bereits validiert." msgid "errors.email-as-password" msgstr "Sie können Ihre E-Mail-Adresse nicht als Passwort verwenden" +#: src/app/main/ui/auth/register.cljs:89 +msgid "errors.email-does-not-match-invitation" +msgstr "Die E-Mail stimmt nicht mit der Einladung überein." + #: src/app/main/data/auth.cljs:316, src/app/main/ui/auth/register.cljs:95 msgid "errors.email-domain-not-allowed" msgstr "Domain nicht zulässig" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Die E-Mail-Adresse «%s» hat viele permanente Unzustellbarkeitsberichte." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "Die E-Mail \"%s\" wurde als Spam oder dauerhaft abgelehnt gemeldet." @@ -1269,11 +1291,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Die Funktion '%s' wird nicht unterstützt." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "Darf maximal 1 Zeichen enthalten." - #, unused msgid "errors.field-min-length" msgstr "Muss mindestens 1 Zeichen enthalten." @@ -1294,7 +1311,7 @@ msgstr "" "und den Funktionen der Datei zu geben. Die Migrationen für '%s' müssen " "durchgeführt werden, bevor die Datei geöffnet werden kann." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Etwas ist schief gelaufen." @@ -1344,11 +1361,11 @@ msgstr "Diese Einladung wurde möglicherweise abgebrochen oder ist abgelaufen." msgid "errors.ldap-disabled" msgstr "Die LDAP-Authentifizierung ist deaktiviert." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Sie haben das Limit von '%s' erreicht. Kontaktieren Sie den Support." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Die maximale (%s) Anzahl von E-Mails, die in einer einzigen Anfrage " @@ -1368,7 +1385,7 @@ msgstr "" msgid "errors.media-type-not-allowed" msgstr "Es scheint, dass dies kein gültiges Bild ist." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "In dem von Ihnen eingeladenen Profil sind E-Mails stummgeschaltet " @@ -1378,6 +1395,14 @@ msgstr "" msgid "errors.migration-in-progress" msgstr "Migration wird durchgeführt" +#: src/app/main/errors.cljs:160 +msgid "errors.only-creator-can-lock" +msgstr "Nur der Ersteller der Version kann sie sperren" + +#: src/app/main/errors.cljs:168 +msgid "errors.only-creator-can-unlock" +msgstr "Nur der Ersteller der Version kann sie entsperren" + #: src/app/main/ui/settings/password.cljs #, unused msgid "errors.password-invalid-confirmation" @@ -1396,7 +1421,7 @@ msgstr "Ungültige Daten in der Zwischenablage" msgid "errors.profile-blocked" msgstr "Das Profil ist gesperrt" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Ihr Profil hat stummgeschaltete E-Mails (Spam-Berichte oder hohe " @@ -1414,23 +1439,23 @@ msgstr "SVG ist ungültig oder fehlerhaft" msgid "errors.team-feature-mismatch" msgstr "Inkompatible Funktion '%s' erkannt" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Nicht genügend Mitglieder, um das Team zu verlassen, wahrscheinlich wollen " "Sie es löschen." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Das Mitglied, das Sie zuzuordnen möchten, existiert nicht." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Der Besitzer kann das Team nicht verlassen, Sie müssen die Besitzerrolle " "neu zuweisen." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Ein Set mit dem gleichen Namen existiert bereits" @@ -1439,13 +1464,13 @@ msgstr "Ein Set mit dem gleichen Namen existiert bereits" msgid "errors.token-set-doesnt-exists" msgstr "Unbekanntes Set kann nicht dupliziert werden" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "" "Das Ablegen kann nicht abgeschlossen werden, da ein Set mit demselben Namen " "bereits im Pfad existiert." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Theme-Option mit demselben Namen existiert" @@ -1461,35 +1486,43 @@ msgstr "Unbekannter Token" msgid "errors.validation" msgstr "Validierungsfehler" +#: src/app/main/errors.cljs:176 +msgid "errors.version-already-locked" +msgstr "Diese Version ist bereits gesperrt" + +#: src/app/main/errors.cljs:152 +msgid "errors.version-locked" +msgstr "Diese Version ist gesperrt und kann nicht von anderen gelöscht werden" + #: src/app/main/errors.cljs:285 msgid "errors.version-not-supported" msgstr "Die Datei hat eine inkompatible Versionsnummer" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Verbindungsfehler, URL ist nicht erreichbar" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "Die URL erfüllt nicht die Validierungskriterien." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Die letzte Übertragung war nicht erfolgreich." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Fehler bei der SSL-Validierung." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Zeitüberschreitung" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Unerwarteter Fehler bei der Validierung" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Unerwarteter Status %s" @@ -1554,7 +1587,7 @@ msgstr "Ein Fehler ist aufgetreten" msgid "inspect.attributes.blur" msgstr "Weichzeichnen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Wert" @@ -1562,15 +1595,15 @@ msgstr "Wert" msgid "inspect.attributes.color" msgstr "Farbe" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1578,7 +1611,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Fläche" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Originalbild herunterladen" @@ -1672,67 +1705,74 @@ msgstr "Durchgezogen" msgid "inspect.attributes.stroke.width" msgstr "Breite" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Typografie" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Schriftart" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Schriftgröße" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Schriftschnitt" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Strichstärke" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Zeichenabstand" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Zeilenabstand" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Textdekoration" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#, unused +msgid "inspect.attributes.typography.text-decoration.line-through" +msgstr "Durchgestrichen" + +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Keine" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Unterstrichen" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Texttransformation" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Kapitälchen" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Kleinbuchstaben" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Keine" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Nicht gesetzt" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Großbuchstaben" @@ -1744,17 +1784,17 @@ msgstr "Eigenschaften der Variante" msgid "inspect.attributes.variants" msgstr "Eigenschaften der Varianten" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Für weitere Informationen zum Thema \"Auswerten von " "Design-Spezifikationen\", besuchen Sie bitte das Penpot-Hilfezentrum" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Weitere Informationen zur Inspektion" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Wählen Sie eine Form, ein Board oder eine Gruppe aus, um deren " @@ -1820,15 +1860,23 @@ msgstr "SVG" msgid "inspect.tabs.code.selected.text" msgstr "Text" +#: src/app/main/ui/inspect/right_sidebar.cljs:109 +msgid "inspect.tabs.computed" +msgstr "Berechnet" + #: src/app/main/ui/inspect/right_sidebar.cljs:114 msgid "inspect.tabs.info" msgstr "Info" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/inspect/right_sidebar.cljs:165 +msgid "inspect.tabs.switcher.label" +msgstr "Info zur Ebene" + +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Alle als gelesen markieren" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Tastaturkürzel" @@ -1840,11 +1888,11 @@ msgstr "Akzeptieren" msgid "labels.access-tokens" msgstr "Zugangstoken" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktiv" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Hinzufügen" @@ -1852,11 +1900,11 @@ msgstr "Hinzufügen" msgid "labels.add-custom-font" msgstr "Eigene Schriftart hinzufügen" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Hinzufügen..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Admin" @@ -1864,7 +1912,7 @@ msgstr "Admin" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Alles" @@ -1887,7 +1935,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Bad Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Abbrechen" @@ -1895,11 +1943,11 @@ msgstr "Abbrechen" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Schließen" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Zusammenklappen" @@ -1911,11 +1959,11 @@ msgstr "Kommentar" msgid "labels.comment.mark-as-solved" msgstr "Als gelöst markieren" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Kommentare" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Community" @@ -1923,7 +1971,7 @@ msgstr "Community" msgid "labels.confirm-password" msgstr "Passwort bestätigen" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Weiter" @@ -1939,11 +1987,11 @@ msgstr "Sie können mit einem Penpot-Konto fortfahren" msgid "labels.copy" msgstr "Kopieren" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Farbe kopieren" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Link kopieren" @@ -1951,7 +1999,7 @@ msgstr "Link kopieren" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Erstellen" @@ -1971,7 +2019,7 @@ msgstr "Eigene Schriftarten" msgid "labels.dashboard" msgstr "Dashboard" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Löschen" @@ -1983,7 +2031,7 @@ msgstr "Kommentar löschen" msgid "labels.delete-comment-thread" msgstr "Thread löschen" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Einladung löschen" @@ -2000,19 +2048,19 @@ msgstr "Developer" msgid "labels.director" msgstr "Geschäftsführer" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Verwerfen" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Entwürfe" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "Duplizieren" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Bearbeiten" @@ -2020,11 +2068,11 @@ msgstr "Bearbeiten" msgid "labels.edit-file" msgstr "Datei bearbeiten" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "Leer" @@ -2037,11 +2085,11 @@ msgstr "Fehler" msgid "labels.event" msgstr "Veranstaltung" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Abgelaufen" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exportieren" @@ -2069,7 +2117,7 @@ msgstr "Schriftenhersteller" msgid "labels.font-variants" msgstr "Stile" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Schriftarten" @@ -2083,11 +2131,11 @@ msgstr "Gründer/VP" msgid "labels.freelancer" msgstr "Ich bin ein Freelancer" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Github-Repository" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Feedback geben" @@ -2099,7 +2147,7 @@ msgstr "Zurück" msgid "labels.graphic-design" msgstr "Grafikdesign" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Hilfezentrum" @@ -2107,15 +2155,15 @@ msgstr "Hilfezentrum" msgid "labels.hide" msgstr "Ausblenden" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Erledigte Kommentare ausblenden" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Importieren" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inaktiv" @@ -2137,7 +2185,7 @@ msgstr "Interner Fehler" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Einladungen" @@ -2145,7 +2193,7 @@ msgstr "Einladungen" msgid "labels.language" msgstr "Sprache" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Bibliotheken & Vorlagen" @@ -2153,6 +2201,10 @@ msgstr "Bibliotheken & Vorlagen" msgid "labels.loading" msgstr "Laden…" +#: src/app/main/ui/workspace/sidebar/versions.cljs:209 +msgid "labels.lock" +msgstr "Sperren" + #: src/app/main/ui/viewer/header.cljs:208 msgid "labels.log-or-sign" msgstr "Einloggen oder anmelden" @@ -2161,7 +2213,7 @@ msgstr "Einloggen oder anmelden" msgid "labels.login" msgstr "Anmelden" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Abmelden" @@ -2169,11 +2221,11 @@ msgstr "Abmelden" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Mitglied" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Mitglieder" @@ -2181,21 +2233,25 @@ msgstr "Mitglieder" msgid "labels.mention" msgstr "Erwähnung" +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 +msgid "labels.mixed-values" +msgstr "Mehrere" + #: src/app/main/ui/settings/password.cljs:84 msgid "labels.new-password" msgstr "Neues Passwort" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Weiter" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "" "Sie sind auf dem neuesten Stand! Neue Benachrichtigungen zu Kommentaren " "werden hier angezeigt." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Keine ausstehenden Einladungen." @@ -2214,7 +2270,7 @@ msgstr "Ups!" msgid "labels.notifications" msgstr "Benachrichtigungen" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 Datei" @@ -2226,7 +2282,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 Zeichenfläche" msgstr[1] "%s Zeichenflächen" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 Projekt" @@ -2245,7 +2301,7 @@ msgstr "Altes Passwort" msgid "labels.only-yours" msgstr "Nur Ihre" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Optionen" @@ -2261,7 +2317,7 @@ msgstr "Sonstiges (bitte angeben)" msgid "labels.other-short" msgstr "Sonstiges" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Eigentümer" @@ -2269,10 +2325,14 @@ msgstr "Eigentümer" msgid "labels.password" msgstr "Passwort" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Ausstehend" +#: src/app/main/ui/dashboard/sidebar.cljs:751 +msgid "labels.pinned-projects" +msgstr "Angeheftete Projekte" + #: src/app/main/ui/comments.cljs:679 msgid "labels.post" msgstr "Versenden" @@ -2293,7 +2353,7 @@ msgstr "Produkt- oder Projektmanager" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projekte" @@ -2301,7 +2361,7 @@ msgstr "Projekte" msgid "labels.refresh" msgstr "Aktualisieren" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Versionshinweise" @@ -2315,11 +2375,11 @@ msgstr "Datei neu laden" msgid "labels.remove" msgstr "Entfernen" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Mitglied entfernen" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Umbenennen" @@ -2347,7 +2407,7 @@ msgstr "neue Antwort" msgid "labels.reply.thread" msgstr "Antwort" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Einladung erneut senden" @@ -2359,15 +2419,15 @@ msgstr "Wiederherstellen" msgid "labels.retry" msgstr "Wiederholen" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rolle" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Speichern" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Suchen" @@ -2395,11 +2455,11 @@ msgstr "Wir befinden uns in der planmäßigen Wartung unserer Systeme." msgid "labels.service-unavailable.main-message" msgstr "Service nicht verfügbar" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Sets" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Einstellungen" @@ -2411,7 +2471,7 @@ msgstr "Teilen" msgid "labels.share-prototype" msgstr "Prototyp teilen" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Gemeinsam genutzte Bibliotheken" @@ -2419,7 +2479,7 @@ msgstr "Gemeinsam genutzte Bibliotheken" msgid "labels.show" msgstr "Anzeigen" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Alle Kommentare anzeigen" @@ -2427,11 +2487,11 @@ msgstr "Alle Kommentare anzeigen" msgid "labels.show-comments-list" msgstr "Kommentarliste anzeigen" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Nur Ihre Erwähnungen anzeigen" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Nur eigene Kommentare anzeigen" @@ -2439,11 +2499,15 @@ msgstr "Nur eigene Kommentare anzeigen" msgid "labels.sketch" msgstr "Sketch" +#: src/app/main/ui/dashboard/sidebar.cljs:730 +msgid "labels.sources" +msgstr "Quellen" + #: src/app/main/ui/onboarding/questions.cljs:55 msgid "labels.start" msgstr "Start" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" @@ -2465,14 +2529,18 @@ msgstr "Teammitglied" msgid "labels.themes" msgstr "Themen" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutorials" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Unbekannter Fehler" +#: src/app/main/ui/workspace/sidebar/versions.cljs:203 +msgid "labels.unlock" +msgstr "Entsperren" + #: src/app/main/ui/dashboard/file_menu.cljs:267 msgid "labels.unpublish-multi-files" msgstr "Veröffentlichung von %s-Dateien aufheben" @@ -2497,15 +2565,15 @@ msgstr "Eigene Schriftarten hochladen" msgid "labels.uploading" msgstr "Hochladen…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Nur ansehen" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Zuschauer" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2513,11 +2581,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Neuen Kommentar schreiben" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(Sie)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Ihr Konto" @@ -2536,7 +2604,11 @@ msgstr "Kollaboration in Echtzeit" #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Auto-Layout wie CSS" +msgstr "Layouts wie CSS" + +#: src/app/main/ui/ds/product/loader.cljs:27 +msgid "loader.tips.04.message" +msgstr "Erhalten Sie CSS- und SVG-Code direkt aus Ihren Designs." #: src/app/main/ui/ds/product/loader.cljs:28 msgid "loader.tips.05.title" @@ -2562,23 +2634,23 @@ msgstr "Dunkel- und Hell-Modus" msgid "loader.tips.10.title" msgstr "Unterstützung von Plugins" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Bild auswählen" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Verlauf" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Bild" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Seitenverhältnis beibehalten" @@ -2596,7 +2668,7 @@ msgstr "Bild laden…" msgid "media.radial" msgstr "Radial" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Einfarbig" @@ -2671,19 +2743,19 @@ msgstr "Token erzeugen" msgid "modals.create-access-token.title" msgstr "Zugangstoken generieren" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Webhook erstellen" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Webhook erstellen" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Payload-URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2731,11 +2803,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Konversation löschen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Sind Sie sicher, dass Sie diese Anmerkung löschen möchten?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Anmerkung löschen" @@ -2783,11 +2855,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Schriftart löschen" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Sind Sie sicher, dass Sie diese Seite löschen wollen?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Seite löschen" @@ -2833,29 +2905,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Datei löschen" msgstr[1] "Dateien löschen" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Team löschen" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Sind Sie sicher, dass Sie dieses Team löschen möchten? Alle Projekte und " "Dateien, die mit dem Team verbunden sind, werden dauerhaft gelöscht." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Team löschen" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Mitglied löschen" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Sind Sie sicher, dass Sie dieses Mitglied aus dem Team löschen möchten?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Teammitglied löschen" @@ -2869,57 +2941,57 @@ msgstr[1] "" "Assets, die bereits in diesen Dateien verwendet wurden, bleiben dort " "erhalten (das Design bleibt erhalten)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Webhook löschen" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Möchten Sie diesen Webhook wirklich löschen?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Webhook löschen" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Webhook bearbeiten" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Webhook bearbeiten" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Einladung senden" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-Mails, durch Komma getrennt" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Einige E-Mails stammen von aktuellen Teammitgliedern. Ihre Einladungen " "werden nicht versendet." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Sie können Mitglieder in das Team einladen, damit diese auf diese Datei und " "alle Team-Dateien zugreifen können." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Mitglieder in das Team einladen" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Da Sie das einzige Mitglied dieses Teams sind, wird das Team zusammen mit " "seinen Projekten und Dateien gelöscht." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Sind Sie sicher, dass Sie das %s-Team verlassen wollen?" @@ -2945,15 +3017,15 @@ msgstr "Wählen Sie ein Mitglied aus, das befördert werden soll" msgid "modals.leave-and-reassign.title" msgstr "Wählen Sie ein Mitglied aus, das befördert werden soll" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Team verlassen" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Sind Sie sicher, dass Sie dieses Team verlassen wollen?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Team verlassen" @@ -2975,39 +3047,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Bibliothek verschieben" msgstr[1] "Bibliotheken verschieben" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Verschiebung" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Befördern" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Wenn Sie die Eigentümerschaft übertragen, ändern Sie Ihre Rolle in Admin " "und verlieren einige Berechtigungen für dieses Team. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "Sind Sie sicher, dass Sie diesen Benutzer zum Eigentümer befördern wollen?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Zum Eigentümer befördern" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Veröffentlichen" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "" "Ihre Bibliothek ist leer. Sind Sie sicher, dass Sie es veröffentlichen " "wollen?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Leere Bibliothek veröffentlichen" @@ -3064,22 +3136,22 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Komponenten in einer gemeinsamen Bibliothek aktualisieren" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Aktualisieren" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Abbrechen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Sie sind dabei, eine Komponente in einer geteilten Bibliothek zu " "aktualisieren. Dies kann sich auf andere Dateien auswirken, die diese " "Komponente verwenden." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Komponente aus einer geteilten Bibliothek aktualiseren" @@ -3197,11 +3269,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Eine neue Version ist verfügbar, bitte aktualisieren Sie die Seite" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Einladung erfolgreich gesendet" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Einladungslink kopiert" @@ -3356,7 +3428,7 @@ msgstr "" "Denken Sie daran, alle einzubeziehen. Entwickler, Designer, Manager... die " "Vielfalt macht's :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Einladen mit der Rolle:" @@ -3576,193 +3648,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Zur Anmeldung" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Trennen" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Mehrere" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Farbe entfernen" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Elemente mit diesem Stil auswählen" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Grundlagen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Dashboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Ansicht" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Arbeitsbereich" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Ausrichtung" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Bearbeiten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Allgemein" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Allgemein" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Hauptmenü" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Ändern von Ebenen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Paneele" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Pfade" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Texte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Werkzeuge" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Kommentare" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Punkt hinzufügen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Unten ausrichten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Zentrieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Horizontal zentrieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Blocksatz" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Linksbündig ausrichten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Rechtsbündig ausrichten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Oben ausrichten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Mittig ausrichten (vertikal)" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Zeichenfläche aus Auswahl erstellen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Umschalten auf Fettdruck" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Subtrahieren (Boolesche Operation)" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Ausschluss" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Schnittmenge" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Vereinigung" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "In den Hintergrund" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Eins nach hinten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Eins nach vorne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "In den Vordergrund" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Verlauf löschen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Link in die Zwischenablage kopieren" @@ -3771,287 +3843,271 @@ msgstr "Link in die Zwischenablage kopieren" msgid "shortcuts.copy-props" msgstr "Eigenschaften kopieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Neues Projekt erstellen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Ausschneiden" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Auszoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Löschen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Punkt löschen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Komponente lösen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Kurve" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Ellipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Board" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Pfad zeichnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Pfad" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rechteck" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplizieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Abbrechen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Formen exportieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Passend zoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Horizontal spiegeln" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Vertikal spiegeln" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Schriftgröße verkleinern" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Schriftgröße erhöhen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Zu den Entwürfen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Zu gemeinsam genutzten Bibliotheken wechseln" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Suchen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Gruppieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Horizontal verteilen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Benutzeroberfläche ein-/ausblenden" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Einzoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Bild einfügen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Umschalten auf Kursivdruck" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Punkte verbinden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Buchstabenabstand verringern" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Buchstabenabstand erhöhen" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Zeilenhöhe verringern" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Zeilenhöhe erhöhen" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Durchgestrichen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Zur Ecke umwandeln" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Kurve erstellen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maskieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Punkte zusammenführen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Schnell nach unten verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Schnell nach links verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Schnell nach rechts verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Schnell nach oben verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Punkte verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Nach unten verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Nach links verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Nach rechts verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Nach oben verschieben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Nächstes Board" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Kein Tastaturkürzel gefunden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Deckkraft auf 100% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Deckkraft auf 10% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Deckkraft auf 20% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Deckkraft auf 30% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Deckkraft auf 40% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Deckkraft auf 50% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Deckkraft auf 60% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Deckkraft auf 70% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Deckkraft auf 80% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Deckkraft auf 90% setzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Farbwähler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Zum Kommentarbereich im Ansichtsmodus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Zum Dashboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Zur Spezifikation im Ansichtsmodus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Zum Ansichtsmodus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Zum Ansichtsmodus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Zum Arbeitsbereich" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " oder " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Einfügen" @@ -4065,199 +4121,264 @@ msgstr "Eigenschaften einfügen" msgid "shortcuts.plugins" msgstr "Plugin-Manager" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Vorheriges Board" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Wiederholen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Umbenennen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Zoom zurücksetzen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Skalieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Tastaturkürzel suchen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Alles auswählen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Nächste Ebene auswählen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Übergeordnete Ebene auswählen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Vorherige Ebene auswählen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Punkte trennen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Pixelraster ein-/ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Tastaturkürzel ein-/ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "An den Punkten ausrichten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Am Pixelraster ausrichten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Mit der Bearbeitung beginnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Mit der Vermessung beginnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Mit der Vermessung abbrechen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Miniaturansichten festlegen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Tastaturkürzel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Dynamische Ausrichtung umschalten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Assets einblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Farbpalette ein-/ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Fokusmodus umschalten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Vollbild aktivieren/deaktivieren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Hilfslinien anzeigen / ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Verlauf ein-/ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Ebenen ein-/ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Flex-Layout hinzufügen/entfernen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Grid-Layout hinzufügen/entfernen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Auswahl sperren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Seitenverhältnis sperren/entsperren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Lineale anzeigen / ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "An Hilfslinien ausrichten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "An den Hilfslinien des Lineals ausrichten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Textpalette ein-/ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Theme ändern" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Elemente ein-/ausblenden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Zoom-Optionen umschalten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Unterstrichen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Rückgängig" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Gruppierung aufheben" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Maske entfernen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Vertikal verteilen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Ansicht mit Zoomwerkzeug verkleinern" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Ansicht mit Zoomwerkzeug vergrößern" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zur Auswahl zoomen" +#: src/app/main/ui/dashboard/subscription.cljs:89, src/app/main/ui/dashboard/subscription.cljs:131 +msgid "subscription.dashboard.power-up.enterprise-plan" +msgstr "Unternehmens-Abonnement" + +#: src/app/main/ui/dashboard/subscription.cljs:85 +msgid "subscription.dashboard.power-up.enterprise-trial.top-title" +msgstr "Unternehmens-Abonnement (Testversion)" + +#: src/app/main/ui/dashboard/subscription.cljs:63 +msgid "subscription.dashboard.power-up.professional.top-title" +msgstr "Professionelles Abonnement" + #: src/app/main/ui/dashboard/subscription.cljs:64, src/app/main/ui/settings/subscription.cljs:107, src/app/main/ui/settings/subscription.cljs:131 #, unused msgid "subscription.dashboard.power-up.subscribe" msgstr "Abonnieren" +#: src/app/main/ui/dashboard/subscription.cljs:71 +msgid "subscription.dashboard.power-up.trial.top-title" +msgstr "Unbegrenztes Abonnement (Testversion)" + +#: src/app/main/ui/dashboard/subscription.cljs:77, src/app/main/ui/dashboard/subscription.cljs:130 +msgid "subscription.dashboard.power-up.unlimited-plan" +msgstr "Unbegrenztes Abonnement" + +#: src/app/main/ui/dashboard/subscription.cljs:62, src/app/main/ui/dashboard/subscription.cljs:70, src/app/main/ui/dashboard/subscription.cljs:76, src/app/main/ui/dashboard/subscription.cljs:84, src/app/main/ui/dashboard/subscription.cljs:88 +msgid "subscription.dashboard.power-up.your-subscription" +msgstr "Ihr Abonnement:" + +#: src/app/main/ui/dashboard/subscription.cljs:111 +msgid "subscription.dashboard.team-plan" +msgstr "Team-Abonnement" + +#: src/app/main/ui/dashboard/sidebar.cljs:978 +msgid "subscription.dashboard.upgrade-plan.power-up" +msgstr "Power up" + +#: src/app/main/ui/settings/sidebar.cljs:116, src/app/main/ui/settings/subscription.cljs:318, src/app/main/ui/settings/subscription.cljs:351 +msgid "subscription.labels" +msgstr "Abonnement" + +#: src/app/main/ui/settings/subscription.cljs:379, src/app/main/ui/settings/subscription.cljs:391, src/app/main/ui/settings/subscription.cljs:401, src/app/main/ui/settings/subscription.cljs:453 +msgid "subscription.settings.benefits.all-unlimited-benefits" +msgstr "Alle Vorteile des unbegrenzten Abonnements und:" + +#: src/app/main/ui/settings/subscription.cljs:393, src/app/main/ui/settings/subscription.cljs:403, src/app/main/ui/settings/subscription.cljs:455 +msgid "subscription.settings.enterprise.autosave" +msgstr "90-Tage automatische Speicherung von Versionen und Dateiwiederherstellung" + +#: src/app/main/ui/settings/subscription.cljs:394, src/app/main/ui/settings/subscription.cljs:404, src/app/main/ui/settings/subscription.cljs:456 +msgid "subscription.settings.enterprise.capped-bill" +msgstr "Monatliche Gesamtrechnung" + +#: src/app/main/ui/settings/subscription.cljs:392, src/app/main/ui/settings/subscription.cljs:402, src/app/main/ui/settings/subscription.cljs:454 +msgid "subscription.settings.enterprise.unlimited-storage-benefit" +msgstr "Unbegrenzter Speicherplatz" + +#: src/app/main/ui/dashboard/subscription.cljs:124, src/app/main/ui/settings/subscription.cljs:371, src/app/main/ui/settings/subscription.cljs:383, src/app/main/ui/settings/subscription.cljs:395, src/app/main/ui/settings/subscription.cljs:405 +msgid "subscription.settings.manage-your-subscription" +msgstr "Ihr Abonnement verwalten" + +#: src/app/main/ui/settings/subscription.cljs:133 +msgid "subscription.settings.management.dialog.editors" +msgstr "Redakteure" + +#: src/app/main/ui/settings/subscription.cljs:170, src/app/main/ui/settings/subscription.cljs:174 +#, markdown +msgid "subscription.settings.management.dialog.price-month" +msgstr "**$%s**/Monat" + #: src/app/main/ui/settings/subscription.cljs:418 msgid "subscription.settings.member-since" msgstr "Penpot-Mitglied seit %s" @@ -4278,6 +4399,14 @@ msgstr "Organisation pro Monat" msgid "subscription.settings.professional" msgstr "Professionell" +#: src/app/main/ui/settings/subscription.cljs:360, src/app/main/ui/settings/subscription.cljs:427 +msgid "subscription.settings.professional.autosave-benefit" +msgstr "7-Tage automatische Speicherung von Versionen und Dateiwiederherstellung" + +#: src/app/main/ui/settings/subscription.cljs:359, src/app/main/ui/settings/subscription.cljs:426 +msgid "subscription.settings.professional.storage-benefit" +msgstr "10 GB Speicherplatz" + #: src/app/main/ui/settings/subscription.cljs:355 msgid "subscription.settings.section-plan" msgstr "Ihr Abonnement" @@ -4310,10 +4439,18 @@ msgstr "Unbegrenzt" msgid "subscription.settings.unlimited-trial" msgstr "Unbegrenzt (Testversion)" +#: src/app/main/ui/settings/subscription.cljs:369, src/app/main/ui/settings/subscription.cljs:381, src/app/main/ui/settings/subscription.cljs:441 +msgid "subscription.settings.unlimited.autosave-benefit" +msgstr "30-Tage automatische Speicherung von Versionen und Dateiwiederherstellung" + #: src/app/main/ui/settings/subscription.cljs:370, src/app/main/ui/settings/subscription.cljs:382, src/app/main/ui/settings/subscription.cljs:442 msgid "subscription.settings.unlimited.bill" msgstr "Monatliche Rechnung mit Kostenobergrenze" +#: src/app/main/ui/settings/subscription.cljs:368, src/app/main/ui/settings/subscription.cljs:380, src/app/main/ui/settings/subscription.cljs:440 +msgid "subscription.settings.unlimited.storage-benefit" +msgstr "25 GB Speicherplatz" + #: src/app/main/ui/dashboard/files.cljs:180 msgid "title.dashboard.files" msgstr "%s - Penpot" @@ -4366,19 +4503,19 @@ msgstr "Passwort - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Einladungen - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Mitglieder - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Einstellungen - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -4450,43 +4587,43 @@ msgstr "Interaktionen beim Klicken anzeigen" msgid "viewer.header.sitemap" msgstr "Sitemap" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Die letzte Übertragung war erfolgreich." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Zentrieren (horizontal) (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Horizontal verteilen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Linksbündig ausrichten (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Rechtsbündig ausrichten (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Unten ausrichten (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Mittig ausrichten (vertikal) (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Vertikal verteilen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Oben ausrichten (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Bibliothek hinzufügen" @@ -4495,19 +4632,19 @@ msgstr "Bibliothek hinzufügen" msgid "workspace.assets.assets" msgstr "Assets" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Alle Assets" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Farben" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Farbe hinzufügen" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Komponenten" @@ -4515,25 +4652,25 @@ msgstr "Komponenten" msgid "workspace.assets.components.add-component" msgstr "Komponente hinzufügen" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s Varianten" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Gruppe erstellen" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Ihre Elemente werden automatisch nach diesem Schema benannt: \"Gruppenname " "/ Elementname\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Löschen" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplizieren" @@ -4541,11 +4678,11 @@ msgstr "Duplizieren" msgid "workspace.assets.duplicate-main" msgstr "Hauptkomponente duplizieren" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Bearbeiten" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filtern" @@ -4554,27 +4691,27 @@ msgstr "Filtern" msgid "workspace.assets.graphics" msgstr "Grafiken" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Rasteransicht" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Gruppieren" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Name der Gruppe" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Listenansicht" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "lokale Bibliothek" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Bibliothek verwalten" @@ -4586,15 +4723,15 @@ msgstr "Keine Assets gefunden" msgid "workspace.assets.open-library" msgstr "Bibliotheksdatei öffnen" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Umbenennen" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Gruppe umbenennen" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Assets suchen" @@ -4610,21 +4747,21 @@ msgstr[1] "%s Elemente ausgewählt" msgid "workspace.assets.shared-library" msgstr "Geteilte Bibliothek" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 Komponente" msgstr[1] "% Komponenten" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Sortieren" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Textstile" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Typografie hinzufügen" @@ -4649,7 +4786,7 @@ msgstr "Zeichenabstand" msgid "workspace.assets.typography.line-height" msgstr "Zeilenabstand" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4661,59 +4798,59 @@ msgstr "Textstile" msgid "workspace.assets.typography.text-transform" msgstr "Texttransformation" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Gruppierung aufheben" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Bereich erstellen" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Board erstellen" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Zellen zusammenführen" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "1 Spalte rechts einfügen" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "1 Spalte links einfügen" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Spalte löschen" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Spalte und Formen löschen" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Spalte duplizieren" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "1 Zeile unterhalb einfügen" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "1 Zeile oberhalb einfügen" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Zeile löschen" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Zeile und Formen löschen" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Zeile duplizieren" @@ -4721,7 +4858,7 @@ msgstr "Zeile duplizieren" msgid "workspace.focus.focus-mode" msgstr "Fokus-Modus" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Fokus aus" @@ -4741,11 +4878,11 @@ msgstr "Linearer Farbverlauf" msgid "workspace.gradients.radial" msgstr "Radialer Farbverlauf" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Dynamische Ausrichtung deaktivieren" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Proportionale Skalierung deaktivieren" @@ -4754,23 +4891,23 @@ msgstr "Proportionale Skalierung deaktivieren" msgid "workspace.header.menu.disable-scale-text" msgstr "Textskalierung deaktivieren" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Ausrichten an Hilfslinien deaktivieren" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Ausrichten am Pixel deaktivieren" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "An den Hilfslinien des Lineals ausrichten deaktivieren" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Dynamische Ausrichtung aktivieren" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Proportionale Skalierung aktivieren" @@ -4779,51 +4916,51 @@ msgstr "Proportionale Skalierung aktivieren" msgid "workspace.header.menu.enable-scale-text" msgstr "Textskalierung aktivieren" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "An Hilfslinien ausrichten" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Ausrichten am Pixel aktivieren" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "An den Hilfslinien des Lineals ausrichten" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Namen von Zeichenflächen ausblenden" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Hilfslinien ausblenden" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Farbpalette ausblenden" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Pixelraster ausblenden" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Lineale ausblenden" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Schriftartenpalette ausblenden" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Bearbeiten" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Datei" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Hilfe und Infos" @@ -4832,63 +4969,63 @@ msgstr "Hilfe und Infos" msgid "workspace.header.menu.option.power-up" msgstr "Verstärken Sie Ihren Plan" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Einstellungen" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Ansicht" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Wiederherstellen" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Alles auswählen" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Namen der Zeichenflächen anzeigen" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Hilfslinien anzeigen" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Farbpalette einblenden" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Pixelraster einblenden" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Lineale einblenden" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Schriftartenpalette anzeigen" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Zum dunklen Theme wechseln" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Zum hellen Theme wechseln" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "Zum System-Theme wechseln" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Rückgängig" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Zurücksetzen" @@ -4904,7 +5041,7 @@ msgstr "Gespeichert" msgid "workspace.header.saving" msgstr "Speichern" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Teilen" @@ -4913,11 +5050,11 @@ msgstr "Teilen" msgid "workspace.header.unsaved" msgstr "Ungespeicherte Änderungen" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Ansichtsmodus (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Vergrößern" @@ -4929,7 +5066,7 @@ msgstr "Füllen - Skalieren zum Füllen" msgid "workspace.header.zoom-fit" msgstr "Anpassen - Verkleinern zum Einpassen" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Passend zoomen" @@ -4937,43 +5074,43 @@ msgstr "Passend zoomen" msgid "workspace.header.zoom-full-screen" msgstr "Vollbild" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zur Auswahl zoomen" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Grid bearbeiten" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Beenden" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Innenabstand unten" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "4-seitige Abstandsoptionen anzeigen" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Innenabstand horizontal" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Innenabstand links" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Innenabstand rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Innenabstand oben" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Innenabstand vertikal" @@ -4989,7 +5126,7 @@ msgstr "Fertig" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Lokalisieren" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Grid-Layout lokalisieren" @@ -4998,10 +5135,6 @@ msgstr "Grid-Layout lokalisieren" msgid "workspace.libraries.add" msgstr "Hinzufügen" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s Farben" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "In Ihrer Bibliothek sind noch keine Farbstile vorhanden" @@ -5028,43 +5161,35 @@ msgstr "Aktuelle Farben" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB-komplementär" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Farbstil speichern" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s Komponenten" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Oder probieren Sie einige von diesen aus:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "In Ihrem Team gibt es keine gemeinsamen Bibliotheken, Sie können suchen nach" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "einige Vorlagen sind hier" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Dateibibliothek" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s Grafik(en)" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTHEKEN IN DIESER DATEI" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTHEKEN" @@ -5073,11 +5198,11 @@ msgstr "BIBLIOTHEKEN" msgid "workspace.libraries.library" msgstr "BIBLIOTHEK" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "AKTUALISIERUNGEN DER BIBLIOTHEK" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Laden…" @@ -5086,53 +5211,49 @@ msgstr "Laden…" msgid "workspace.libraries.more-templates" msgstr "Sie können Folgendes suchen " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "" "Es gibt keine gemeinsam genutzte Bibliotheken, die aktualisiert werden " "müssen" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Keine Übereinstimmungen für “%s“ gefunden" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Suche nach gemeinsam genutzten Bibliotheken" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "GEMEINSAM GENUTZTE BIBLIOTHEKEN" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Bibliothek verknüpfen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Mehrere Textstile" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Verknüpfung aller Textstile aufheben" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s Textstile" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Bibliothek trennen" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Aktualisieren" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "alle Änderungen anzeigen" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "AKTUALISIERUNG" @@ -5140,31 +5261,31 @@ msgstr "AKTUALISIERUNG" msgid "workspace.notification-pill.detail" msgstr "Details" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Klicken Sie auf den + Button um Interaktionen hinzuzufügen." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Weichzeichnen hinzufügen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Weichzeichnen entfernen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Weichzeichnen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Gruppe weichzeichnen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Auswahl weichzeichnen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Weichzeichnen ein -und aufblenden" @@ -5172,58 +5293,74 @@ msgstr "Weichzeichnen ein -und aufblenden" msgid "workspace.options.canvas-background" msgstr "Hintergrundfarbe" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Inhalt beschneiden" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Komponente" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Anmerkung" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Kopie" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Eine Anmerkung erstellen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Eine Anmerkung bearbeiten" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Hauptkomponente" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Komponente austauschen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Es gibt noch keine Assets in dieser Bibliothek" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 +msgid "workspace.options.component.variant.duplicated.copy.locate" +msgstr "Konfliktverursachende Varianten finden" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "Ungültige Varianten finden" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "Einige Varianten haben ungültige Namen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:502 +msgid "workspace.options.component.variant.malformed.locate" +msgstr "Ungültige Varianten suchen" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "Diese Varianten haben ungültige Namen." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "Diese Variante hat einen ungültigen Namen." +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 +msgid "workspace.options.component.variant.malformed.single.some" +msgstr "Einige dieser Varianten haben ungültige Namen." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 +msgid "workspace.options.component.variant.malformed.structure.example" +msgstr "[Eigenschaft]=[Wert], [Eigenschaft]=[Wert]" + #: src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:163 msgid "workspace.options.constraints" msgstr "Beschränkungen" @@ -5264,7 +5401,7 @@ msgstr "Oben" msgid "workspace.options.constraints.topbottom" msgstr "Oben & Unten" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" @@ -5277,21 +5414,21 @@ msgstr "Exportieren" msgid "workspace.options.export-multiple" msgstr "Auswahl exportieren" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Ein Element exportieren" msgstr[1] "%s Elemente exportieren" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Export hinzufügen" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Export entfernen" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Suffix" @@ -5299,7 +5436,7 @@ msgstr "Suffix" msgid "workspace.options.exporting-complete" msgstr "Export abgeschlossen" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exportiere…" @@ -5311,27 +5448,27 @@ msgstr "Export fehlgeschlagen" msgid "workspace.options.exporting-object-slow" msgstr "Export unerwartet langsam" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Fläche" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Füllfarbe hinzufügen" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Füllung entfernen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Größe des Boards an den Inhalt anpassen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Flow-Startpunkt hinzufügen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Flow" @@ -5340,19 +5477,19 @@ msgstr "Flow" msgid "workspace.options.flows.flow-start" msgstr "Flow-Startpunkt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Flow-Startpunkte" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Flow entfernen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automatisch" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Spalten" @@ -5361,7 +5498,7 @@ msgstr "Spalten" msgid "workspace.options.grid.grid-title" msgstr "Raster" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Farbe" @@ -5370,15 +5507,15 @@ msgstr "Farbe" msgid "workspace.options.grid.params.columns" msgstr "Spalten" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Zwischenräume" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Höhe" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Rand" @@ -5387,7 +5524,7 @@ msgstr "Rand" msgid "workspace.options.grid.params.rows" msgstr "Zeilen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Als Standard festlegen" @@ -5401,159 +5538,159 @@ msgstr "Größe" msgid "workspace.options.grid.params.type" msgstr "Art" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Unten" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Zentriert" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Links" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Gestreckt" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Oben" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Standardwerte verwenden" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Breite" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Zeile" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Quadrat" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Gruppe füllen" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Gruppe einrahmen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Hilfslinie hinzufügen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Hilfslinie entfernen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Hilfslinien" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Hilfslinie ein -und ausblenden" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Höhe" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Spezifikation" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Aktion" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "nach einer Verzögerung" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animation" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Auflösen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Keine" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Push" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Reinfahren" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "Automatisch" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Hintergrund hinzufügen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Schließen, wenn außerhalb geklickt wird" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Overlay schließen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Overlay %s schließen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Verzögerung" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Ziel" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Dauer" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linear" @@ -5562,47 +5699,47 @@ msgstr "Linear" msgid "workspace.options.interaction-in" msgstr "In" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Mauszeiger-Eintritt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Mauszeiger-Austritt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navigation zu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navigation zu: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(nicht festgelegt)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Offset-Effekt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Beim Klicken" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Overlay öffnen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Overlay %s öffnen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "URL öffnen" @@ -5611,87 +5748,87 @@ msgstr "URL öffnen" msgid "workspace.options.interaction-out" msgstr "Out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Unten mittig" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Unten links" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Unten rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Zentriert" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manuell" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Oben mittig" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Oben links" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Oben rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Position" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Scrollposition beibehalten" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Zum vorherigen Screen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relativ zu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "sich selbst" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Overlay-Sichtbarkeit umschalten" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Overlay-Sichtbarkeit für %s umschalten" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Auslöser" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Beim Überfahren mit dem Mauszeiger" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Bei gedrückter Maustaste" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interaktionen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Interaktion hinzufügen" @@ -5700,67 +5837,67 @@ msgstr "Interaktion hinzufügen" msgid "workspace.options.interactions.remove-interaction" msgstr "Interaktion entfernen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Farbe" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Farbig nachbelichten" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Farbig abwedeln" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Abdunkeln" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Differenz" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Ausschluss" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Hartes Licht" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Farbton" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Aufhellen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminanz" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiplizieren" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Ineinanderkopieren" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Sättigung" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Negativ multiplizieren" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Weiches Licht" @@ -5779,7 +5916,7 @@ msgstr "Ebenen gruppieren" msgid "workspace.options.layer-options.title.multiple" msgstr "Ausgewählte Ebenen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Sichtbarkeit der Ebene ein- und ausschalten" @@ -5788,19 +5925,19 @@ msgstr "Sichtbarkeit der Ebene ein- und ausschalten" msgid "workspace.options.layout-item.advanced-ops" msgstr "Erweiterte Optionen" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Max.Höhe" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Max.Breite" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.Höhe" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.Breite" @@ -5914,15 +6051,15 @@ msgstr "Abstand zwischen" msgid "workspace.options.layout.top" msgstr "Oben" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Weitere Farben" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Weitere Bibliotheksfarben" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Deckkraft" @@ -5931,35 +6068,35 @@ msgstr "Deckkraft" msgid "workspace.options.position" msgstr "Position" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototyp" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Radius" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Unten links" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Unten rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Oben links" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Oben rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Unabhängige Ecken einklappen" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Unabhängige Ecken anzeigen" @@ -5971,7 +6108,7 @@ msgstr "Aktuell" msgid "workspace.options.retry" msgstr "Wiederholen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Drehung" @@ -5979,33 +6116,33 @@ msgstr "Drehung" msgid "workspace.options.search-font" msgstr "Schriftart suchen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Wählen Sie eine Form, Zeichenfläche oder Gruppe aus, um eine Verbindung zu " "einer anderen Zeichenfläche herzustellen." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Ausgewählte Farben" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Auswahl füllen" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Auswahl einrahmen" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Schatten hinzufügen" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Weichzeichnen" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Schattenfarbe" @@ -6017,55 +6154,56 @@ msgstr "Schlagschatten" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Schatten nach innen" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Schatten entfernen" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Streuung" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Schatten" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Gruppe schattieren" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Auswahl schattieren" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Schatten ein- und ausblenden" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "In Exporten anzeigen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Im Ansichtsmodus anzeigen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Größe" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Größenvoreinstellungen" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Rahmen" @@ -6074,7 +6212,7 @@ msgstr "Rahmen" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Punkt" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Kreis" @@ -6083,7 +6221,7 @@ msgstr "Kreis" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Diamant-Marker" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamant" @@ -6092,19 +6230,19 @@ msgstr "Diamant" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Pfeil" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Pfeil" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Keine" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Rund" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Rechteckig" @@ -6113,7 +6251,7 @@ msgstr "Rechteckig" msgid "workspace.options.stroke-cap.square-marker" msgstr "Quadrat" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Rechteck" @@ -6122,83 +6260,83 @@ msgstr "Rechteck" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Dreieckiger Pfeil" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Dreieck" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Konturfarbe" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Konturbreite" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Strichfarbe hinzufügen" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Zentriert" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Gestrichelt" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Gepunktet" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Innen" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Mehrere" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Außen" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Strich entfernen" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Durchgezogen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Unten ausrichten" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "An Mitte ausrichten" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Oben ausrichten" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "von links nach rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "von rechts nach links" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Automatische Höhe" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Automatische Breite" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Feste Größe" @@ -6220,35 +6358,35 @@ msgstr "Kleinbuchstaben" msgid "workspace.options.text-options.none" msgstr "Keine" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Durchgestrichen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Zentrieren" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Ausrichtung in der Breite" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Linksbündig ausrichten" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Rechtsbündig ausrichten" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Gruppe Text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Ausgewählter Text" @@ -6257,7 +6395,7 @@ msgstr "Ausgewählter Text" msgid "workspace.options.text-options.titlecase" msgstr "Kapitälchen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Unterstrichen (%s)" @@ -6266,21 +6404,21 @@ msgstr "Unterstrichen (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Großbuchstaben" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Verwenden Sie die Wiedergabetaste in der Kopfzeile, um die Prototypansicht " "zu wechseln." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Breite" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X-Achse" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y-Achse" @@ -6324,106 +6462,106 @@ msgstr "Ankerpunkte trennen (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "An Ankerpunkten ausrichten (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Öffnen" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "[Mehr Plugins](%s) entdecken" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Noch keine Plugins installiert" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Das Plugin-Manifest ist falsch." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Sie müssen ein Redakteur sein, um dieses Plugin zu benutzen" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Das Plugin existiert nicht oder die URL ist nicht korrekt." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Installieren" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Installierte Plugins" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Plugin-Manager" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Plugins" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "DIESES PLUGIN AKTUALISIEREN" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "Das Plugin wurde geändert, seit Sie es das letzte Mal geöffnet haben. Es " "möchte nun auch zugreifen:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Starten von Dateidownloads." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Ihre Kommentare und Antworten lesen." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Ihre Kommentare lesen und ändern und in Ihrem Namen antworten." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Lesen des Inhalts von Dateien, auf die Benutzer Zugriff haben." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Lesen und Ändern des Inhalts von Dateien, auf die Benutzer Zugriff haben." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "Beachten Sie, dass dieses Plugin von einer externen Quelle erstellt wurde." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Lesen Ihrer Bibliotheken und Assets." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Lesen und Ändern Ihrer Bibliotheken und Assets." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "'%s' PLUGIN BENÖTIGT ZUGRIFF AUF:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Lesen der Profil-Informationen des aktuellen Benutzers." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Liste der Plugins" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Plugin entfernen" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Eine URL des Plugins eingeben" @@ -6431,26 +6569,26 @@ msgstr "Eine URL des Plugins eingeben" msgid "workspace.plugins.success" msgstr "Plugin wurde korrekt geladen." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Plugins" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "NICHT JETZT" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Möchten Sie einen ersten Eindruck bekommen? Es wird in einem neuen Entwurf " "für Ihr aktuelles Team geöffnet. (Falls nicht, können Sie es jederzeit in " "den installierten Plugins einer beliebigen Datei finden.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "'%s' PLUGIN IST FÜR IHREN BENUTZER INSTALLIERT!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "PLUGIN TESTEN" @@ -6462,11 +6600,11 @@ msgstr "Flex-Layout hinzufügen" msgid "workspace.shape.menu.add-grid" msgstr "Grid-Layout hinzufügen" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Layout hinzufügen" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Variante erstellen" @@ -6510,7 +6648,7 @@ msgstr "Als SVG kopieren" msgid "workspace.shape.menu.copy-text" msgstr "Als Text kopieren" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Anmerkung erstellen" @@ -6518,11 +6656,11 @@ msgstr "Anmerkung erstellen" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Auswahl auf Zeichenfläche" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Komponente erstellen" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Mehrere Komponenten erstellen" @@ -6530,7 +6668,7 @@ msgstr "Mehrere Komponenten erstellen" msgid "workspace.shape.menu.cut" msgstr "Ausschneiden" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Löschen" @@ -6538,15 +6676,15 @@ msgstr "Löschen" msgid "workspace.shape.menu.delete-flow-start" msgstr "Startpunkt löschen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Instanz trennen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Instanzen trennen" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Subtrahieren" @@ -6558,11 +6696,11 @@ msgstr "Duplizieren" msgid "workspace.shape.menu.edit" msgstr "Bearbeiten" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Ausschließen" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Pfade reduzieren" @@ -6595,19 +6733,19 @@ msgstr "Zur Hauptkomponentendatei wechseln" msgid "workspace.shape.menu.group" msgstr "Gruppieren" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Ausblenden" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Benutzeroberfläche ein-/ausblenden" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Überlappen" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Sperren" @@ -6615,7 +6753,7 @@ msgstr "Sperren" msgid "workspace.shape.menu.mask" msgstr "Maskieren" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Einfügen" @@ -6635,7 +6773,7 @@ msgstr "Flex-Layout entfernen" msgid "workspace.shape.menu.remove-grid" msgstr "Grid-Layout entfernen" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Layout entfernen" @@ -6643,11 +6781,11 @@ msgstr "Layout entfernen" msgid "workspace.shape.menu.rename" msgstr "Umbenennen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Änderungen zurücksetzen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Hauptkomponente wiederherstellen" @@ -6655,15 +6793,15 @@ msgstr "Hauptkomponente wiederherstellen" msgid "workspace.shape.menu.select-layer" msgstr "Ebene auswählen" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Anzeigen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Im Assets-Panel anzeigen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Hauptkomponente anzeigen" @@ -6676,6 +6814,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Als Vorschaubild festlegen" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "In Pfade umwandeln" @@ -6683,11 +6822,11 @@ msgstr "In Pfade umwandeln" msgid "workspace.shape.menu.ungroup" msgstr "Gruppierung aufheben" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Hinzufügen" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Entsperren" @@ -6700,7 +6839,7 @@ msgstr "Maske entfernen" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Hauptkomponenten aktualisieren" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Hauptkomponente aktualisieren" @@ -6712,11 +6851,11 @@ msgstr "Seitenleiste ausblenden" msgid "workspace.sidebar.expand" msgstr "Seitenleiste einblenden" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Verlauf" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Ebenen" @@ -6756,11 +6895,11 @@ msgstr "Texte" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Importierte SVG-Attribute" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Seiten" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Seite hinzufügen" @@ -6777,19 +6916,19 @@ msgstr "%s aktive Themes" msgid "workspace.tokens.add set" msgstr "Set hinzufügen" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Neues Theme hinzufügen" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "Set zu dieser Gruppe hinzufügen" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Angewandt auf" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Zurück zur Themen-Liste" @@ -6797,15 +6936,15 @@ msgstr "Zurück zur Themen-Liste" msgid "workspace.tokens.create-new-theme" msgstr "Erstellen Sie jetzt Ihr erstes Theme." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Ein neues erstellen." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Neues %s Token erstellen" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Token löschen" @@ -6813,15 +6952,15 @@ msgstr "Token löschen" msgid "workspace.tokens.delete-theme-title" msgstr "Theme löschen" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Token duplizieren" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Token bearbeiten" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Theme bearbeiten" @@ -6829,11 +6968,7 @@ msgstr "Theme bearbeiten" msgid "workspace.tokens.edit-themes" msgstr "Themes bearbeiten" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Token bearbeiten" - -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "%s Token-Name eingeben" @@ -6854,7 +6989,7 @@ msgstr "Theme" msgid "workspace.tokens.no-active-theme" msgstr "Kein Theme aktiviert" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Sie müssen ein Redakteur sein, um Sets zu aktivieren / deaktivieren" @@ -6862,11 +6997,11 @@ msgstr "Sie müssen ein Redakteur sein, um Sets zu aktivieren / deaktivieren" msgid "workspace.tokens.no-permission-themes" msgstr "Sie müssen ein Redakteur sein, um Themes zu verwenden" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Es sind noch keine Sets definiert. Erstellen Sie zuerst eines." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Es sind noch keine Sets vorhanden." @@ -6878,16 +7013,16 @@ msgstr "Es gibt keine Themes." msgid "workspace.tokens.no-themes-currently" msgstr "Sie haben derzeit keine Themes." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Ursprünglicher Wert: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Referenz ist ungültig oder befindet sich nicht in einem aktiven Set" -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Aufgelöster Wert: %s" @@ -6896,11 +7031,11 @@ msgstr "Aufgelöster Wert: %s" msgid "workspace.tokens.save-theme" msgstr "Theme speichern" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Set auswählen." -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "" "Legen Sie fest, welche Token-Sets als Teil dieser Theme-Option verwendet " @@ -6919,23 +7054,23 @@ msgstr "Theme %s" msgid "workspace.tokens.themes-list" msgstr "Liste der Themes" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Beschreibung" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Name" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " sit kein gültiger Token-Name.\n" "Token-Namen dürfen nur Buchstaben und Ziffern enthalten, die durch . " "Zeichen (Punkt) getrennt sind und dürfen nicht mit einem $-Zeichen beginnen." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Wert" @@ -6943,21 +7078,21 @@ msgstr "Wert" msgid "workspace.tokens.tokens-section-title" msgstr "TOKENS - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Werkzeuge" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "Der Wert ist nicht gültig" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "" "Die Umbenennung dieses Tokens macht jeden Verweis auf seinen alten Namen " "kaputt." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Assets" @@ -6965,7 +7100,7 @@ msgstr "Assets" msgid "workspace.toolbar.color-palette" msgstr "Farbpalette (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Kommentare (%s)" @@ -7172,19 +7307,19 @@ msgstr "Vorgang über %s" msgid "workspace.undo.title" msgstr "Verlauf" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Ignorieren" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Mehr Info" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Es gibt Updates in gemeinsam genutzten Bibliotheken" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Aktualisieren" @@ -7244,11 +7379,11 @@ msgstr "Möchten Sie diese Version wiederherstellen?" msgid "workspace.versions.snapshot-menu" msgstr "Schnappschuss-Menü öffnen" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Aktionen" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Verlauf" diff --git a/frontend/translations/el.po b/frontend/translations/el.po index b30ecccf8c..bee17345cb 100644 --- a/frontend/translations/el.po +++ b/frontend/translations/el.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Anonymous \n" -"Language-Team: Greek " -"\n" +"Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -140,7 +140,7 @@ msgstr "Η λύση ανοιχτού κώδικα για σχεδιασμό κα msgid "auth.verification-email-sent" msgstr "Εχουμε στείλει ενα mail επαλήθευσης " -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Προσθήκη ως Κοινόχρηστη βιβλιοθήκη" @@ -148,19 +148,19 @@ msgstr "Προσθήκη ως Κοινόχρηστη βιβλιοθήκη" msgid "dashboard.change-email" msgstr "Αλλαγή email" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(Αντίγραφο)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Δημιουργία νέας ομάδας" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Το Penpot σας" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Διαγραφή ομάδας" @@ -168,11 +168,11 @@ msgstr "Διαγραφή ομάδας" msgid "dashboard.duplicate" msgstr "Αντιγραφή" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Πρόσκληση στην ομάδα" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Αφήστε την ομάδα" @@ -204,7 +204,7 @@ msgstr "+ Νέο έργο" msgid "dashboard.no-matches-for" msgstr "Δεν βρέθηκαν αντιστοιχίσεις για το “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Τα καρφιτσωμένα έργα θα εμφανιστούν εδώ" @@ -220,7 +220,7 @@ msgstr "Η διεύθυνση email σας έχει επαληθευτεί" msgid "dashboard.notifications.password-saved" msgstr "Ο κωδικός πρόσβασης αποθηκεύτηκε!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "% s μέλη" @@ -232,7 +232,7 @@ msgstr "Άνοιγμα αρχείου σε νέα καρτέλα" msgid "dashboard.password-change" msgstr "Αλλαξε κωδικό" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Καρφίτσωμα / ξεκαρφίτσωμα" @@ -249,7 +249,7 @@ msgstr "Θέλετε να καταργήσετε τον λογαριασμό σ msgid "dashboard.remove-shared" msgstr "Διαγραφή ως Κοινόχρηστη βιβλιοθήκη" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Αναζήτηση…" @@ -285,7 +285,7 @@ msgstr "Το έργο σας έχει αναπαραχθεί με επιτυχί msgid "dashboard.success-duplicate-project" msgstr "Το έργο σας έχει αναπαραχθεί με επιτυχία" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Το έργο σας μετακινήθηκε με επιτυχία" @@ -293,15 +293,15 @@ msgstr "Το έργο σας μετακινήθηκε με επιτυχία" msgid "dashboard.success-move-project" msgstr "Το έργο σας μετακινήθηκε με επιτυχία" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Πληροφορίες ομάδας" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Μέλη ομάδας" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Ομαδικά έργα" @@ -333,15 +333,15 @@ msgstr "Email" msgid "dashboard.your-name" msgstr "Το όνομα σου" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Το Penpot σας" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "ακύρωση" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -361,11 +361,11 @@ msgstr "Το email έχει ήδη χρησιμοποιηθεί" msgid "errors.email-already-validated" msgstr "Αυτό το email έχει ήδη επικυρωθεί." -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Το email «%s» έχει πολλές μόνιμες αναφορές αναπήδησης." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Έχει συμβεί κάτι λάθος." @@ -395,7 +395,7 @@ msgstr "" msgid "errors.media-type-not-allowed" msgstr "Φαίνεται ότι δεν είναι έγκυρη εικόνα." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Το προφίλ που προσκαλείτε σταματά τα μηνύματα ηλεκτρονικού ταχυδρομείου " @@ -458,19 +458,19 @@ msgstr "Παρουσιάστηκε σφάλμα" msgid "inspect.attributes.blur" msgstr "Θολούρα" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "αξία" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -478,7 +478,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Γέμισμα" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Λήψη εικόνας πηγής" @@ -568,59 +568,61 @@ msgstr "Στερεός" msgid "inspect.attributes.stroke.width" msgstr "Πλάτος" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Τυπογραφία" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Οικογένεια γραμματοσειρών" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Μέγεθος γραμματοσειράς" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Στυλ γραμματοσειράς" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Διάστημα γραμμάτων" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Ύψος γραμμής" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Διακόσμηση κειμένου" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Κανένα" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "υπογράμμιση" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Μετασχηματισμός κειμένου" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Πρώτα κεφαλαία" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Πεζά γράμματα" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Κανένα" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Κεφαλαία γράμματα" @@ -676,11 +678,11 @@ msgstr "Πληροφορίες" msgid "labels.accept" msgstr "Αποδέχομαι" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Διαχειριστής" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Ολα" @@ -694,11 +696,11 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Bad Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "ακύρωση" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Σχόλια" @@ -714,7 +716,7 @@ msgstr "Δημιουργήστε μια νέα ομάδα" msgid "labels.dashboard" msgstr "πίνακας" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Διαγραφή" @@ -726,15 +728,15 @@ msgstr "Διαγραφή σχολίου" msgid "labels.delete-comment-thread" msgstr "Διαγραφή νήματος" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Πρόχειρα" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Edit" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" @@ -746,7 +748,7 @@ msgstr "Τα σχόλια απενεργοποιήθηκαν" msgid "labels.feedback-sent" msgstr "Εστάλη γνώμη" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Δώστε μας τη γνώμη σας" @@ -754,7 +756,7 @@ msgstr "Δώστε μας τη γνώμη σας" msgid "labels.go-back" msgstr "Πίσω" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Απόκρυψη επιλυμένων σχολίων" @@ -772,11 +774,11 @@ msgstr "Εσωτερικό σφάλμα" msgid "labels.language" msgstr "Γλώσσα" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Αποσύνδεση" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Μέλη" @@ -784,7 +786,7 @@ msgstr "Μέλη" msgid "labels.new-password" msgstr "Νέος κωδικός πρόσβασης" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Δεν έχετε εκκρεμείς ειδοποιήσεις σχολίων" @@ -799,13 +801,13 @@ msgstr "" msgid "labels.not-found.main-message" msgstr "Ωχ" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 αρχείο" msgstr[1] "%s αρχεία" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 έργο" @@ -820,7 +822,7 @@ msgstr "Παλιός κωδικός" msgid "labels.only-yours" msgstr "Μόνο το δικό σου" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Ιδιοκτήτης" @@ -832,7 +834,7 @@ msgstr "Κωδικός πρόσβασης" msgid "labels.profile" msgstr "Προφίλ" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Εργα" @@ -841,7 +843,7 @@ msgstr "Εργα" msgid "labels.remove" msgstr "Διαγραφή" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Μετονομασία" @@ -853,11 +855,11 @@ msgstr "Μετονομασία ομάδας " msgid "labels.retry" msgstr "Ξαναδοκιμάσετε" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Ρόλος" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Αποθηκεύση" @@ -877,7 +879,7 @@ msgstr "Είμαστε σε προγραμματισμένη συντήρηση msgid "labels.service-unavailable.main-message" msgstr "Η υπηρεσία δεν είναι διαθέσιμη" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Σύνθεση" @@ -885,15 +887,15 @@ msgstr "Σύνθεση" msgid "labels.share-prototype" msgstr "Μοιραστείτε το link" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Κοινόχρηστες βιβλιοθήκες" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Εμφάνιση όλων των σχολίων" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Εμφάνιση μόνο των δικών σας σχολίων" @@ -905,7 +907,7 @@ msgstr "Ενημέρωση" msgid "labels.update-team" msgstr "Ενημερώστε τον εξοπλισμό" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Θεατής" @@ -998,11 +1000,11 @@ msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετ msgid "modals.delete-file-confirm.title" msgstr "Διαγραφή αρχείου" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη σελίδα;" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Διαγραφή σελίδας" @@ -1018,33 +1020,33 @@ msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετ msgid "modals.delete-project-confirm.title" msgstr "Διαγραφή έργου" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Διαγραφή ομάδας" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την ομάδα; Όλα τα έργα και τα " "αρχεία που σχετίζονται με την ομάδα θα διαγραφούν οριστικά." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Διαγραφή ομάδας" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Διαγραφή μέλους" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το μέλος από την ομάδα;" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Διαγραφή μέλους της ομάδας" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Αποστολή πρόσκλησης" @@ -1064,27 +1066,27 @@ msgstr "Επιλέξτε ένα μέλος για προώθηση" msgid "modals.leave-and-reassign.title" msgstr "Επιλέξτε ένα μέλος για προώθηση" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Αφήστε την ομάδα" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Είστε σίγουροι ότι θέλετε να αφήσετε αυτή την ομάδα;" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Αφήστε την ομάδα" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Προώθηση" -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "Είστε σίγουροι ότι θέλετε να προωθήσετε αυτό το χρήστη στον ιδιοκτήτη;" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Προώθηση σε κάτοχο" @@ -1105,25 +1107,25 @@ msgstr "" msgid "modals.remove-shared-confirm.message" msgstr "Καταργήστε το “%s” ως Κοινόχρηστη βιβλιοθήκη" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Ενημέρωση στοιχείου" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Ακύρωση" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Πρόκειται να ενημερώσετε ένα στοιχείο σε μια κοινόχρηστη βιβλιοθήκη. Αυτό " "μπορεί να επηρεάσει άλλα αρχεία που το χρησιμοποιούν." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Ενημερώστε ένα στοιχείο σε μια κοινόχρηστη βιβλιοθήκη" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Η πρόσκληση εστάλη με επιτυχία" @@ -1145,7 +1147,7 @@ msgstr "Το email επαλήθευσης εστάλη στο %s. Ελέγξτε msgid "profile.recovery.go-to-login" msgstr "Μεταβείτε στη σύνδεση" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Μικτός " @@ -1181,35 +1183,35 @@ msgstr "Εμφάνιση αλληλεπιδράσεων με click" msgid "viewer.header.sitemap" msgstr "Sitemap" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Στοίχιση στο κέντρο (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Κατανομή οριζόντιου χώρου (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Ευθυγράμμιση προς τα αριστερά (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Ευθυγράμμιση προς τα δεξιά (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Στοίχιση κάτω (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Ευθυγραμμίστε το κάθετο κέντρο (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Κατανομή κατακόρυφων αποστάσεων (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Ευθυγραμμίστε την κορυφή (%s)" @@ -1218,27 +1220,27 @@ msgstr "Ευθυγραμμίστε την κορυφή (%s)" msgid "workspace.assets.assets" msgstr "Περιουσιακά στοιχεία" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Όλα τα περιουσιακά στοιχεία" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Χρώματα" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Συστατικά" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Διαγραφή" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Αντιγραφή" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Επεξεργασία" @@ -1251,15 +1253,15 @@ msgstr "Γραφικά" msgid "workspace.assets.not-found" msgstr "Δεν βρέθηκαν στοιχεία" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Μετονομασία" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Αναζήτηση στοιχείων" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Τυπογραφίες" @@ -1284,7 +1286,7 @@ msgstr "Διάστημα γραμμάτων" msgid "workspace.assets.typography.line-height" msgstr "Υψος γραμμής" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -1300,31 +1302,31 @@ msgstr "Γραμμική κλίση" msgid "workspace.gradients.radial" msgstr "Ακτινική κλίση" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Απενεργοποίηση δυναμικής ευθυγράμμισης" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Ενεργοποίηση δυναμικής ευθυγράμμισης" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Απόκρυψη παλέτας χρωμάτων" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Απόκρυψη κανόνες" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Επιλογή όλων" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Εμφάνιση παλέτας χρωμάτων" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Εμφάνιση κανόνες" @@ -1345,7 +1347,7 @@ msgstr "Aποθήκευση " msgid "workspace.header.unsaved" msgstr "Μη αποθηκευμένες αλλαγές" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Λειτουργία προβολής (%s)" @@ -1354,10 +1356,6 @@ msgstr "Λειτουργία προβολής (%s)" msgid "workspace.libraries.add" msgstr "Προσθήκη" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s χρώματα" - #: src/app/main/ui/workspace/color_palette_ctx_menu.cljs:88, src/app/main/ui/workspace/colorpicker/libraries.cljs:48, src/app/main/ui/workspace/text_palette_ctx_menu.cljs:49 msgid "workspace.libraries.colors.file-library" msgstr "Βιβλιοθήκη αρχείων" @@ -1366,27 +1364,19 @@ msgstr "Βιβλιοθήκη αρχείων" msgid "workspace.libraries.colors.recent-colors" msgstr "Πρόσφατα χρώματα" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Αποθηκεύστε το στυλ χρώματος" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s στοιχεία" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Βιβλιοθήκη αρχείων" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s γραφικά" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "ΒΙΒΛΙΟΘΗΚΕΣ ΣΕ ΑΥΤΟ ΤΟ ΑΡΧΕΙΟ" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "ΒΙΒΛΙΟΘΗΚΕΣ" @@ -1395,51 +1385,47 @@ msgstr "ΒΙΒΛΙΟΘΗΚΕΣ" msgid "workspace.libraries.library" msgstr "ΒΙΒΛΙΟΘΗΚΗ" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Δεν υπάρχουν κοινόχρηστες βιβλιοθήκες που χρειάζονται ενημέρωση" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Δεν βρίσκεται «%s»" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Αναζήτηση σε κοινόχρηστες βιβλιοθήκες" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "Κοινόχρηστες βιβλιοθήκες" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Πολλαπλές τυπογραφίες" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Αποσύνδεση όλων των τυπογραφιών" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s τυπογραφίες" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Ενημέρωση" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ΕΝΗΜΕΡΩΣΕΙΣ" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Θολούρα" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Θολούρα της ομάδας" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Θόλωμα επιλογής" @@ -1447,11 +1433,11 @@ msgstr "Θόλωμα επιλογής" msgid "workspace.options.canvas-background" msgstr "Χρώμα του φόντου" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Συστατικό" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Σχέδιο" @@ -1459,27 +1445,27 @@ msgstr "Σχέδιο" msgid "workspace.options.export" msgstr "Εξαγωγή" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgstr "Εξαγωγή σχήματος" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Κατάληξη" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Εξαγωγή ..." -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Γέμισμα" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Αυτόματο" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Στήλες" @@ -1488,15 +1474,15 @@ msgstr "Στήλες" msgid "workspace.options.grid.params.columns" msgstr "Στήλες" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "απόσταση" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Υψος" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Περιθώριο" @@ -1505,7 +1491,7 @@ msgstr "Περιθώριο" msgid "workspace.options.grid.params.rows" msgstr "Σειρές" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Ορίσετε ως προεπιλογή" @@ -1519,115 +1505,115 @@ msgstr "Μέγεθος" msgid "workspace.options.grid.params.type" msgstr "Τύπος" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Κάτω" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Κέντρο" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Αριστερά" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Δεξιά" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Τέντωμα" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Πάνω" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "χρήση προεπιλεγμένης" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Πλάτος" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Σειρές" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "τετράγωνο" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Συμπλήρωση ομάδας" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Ομαδικό εγκεφαλικό" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Χρώμα" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Έγκαυμα χρώματος" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Χρώμα πιο μαλακό " -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Σκούρο" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Διαφορά" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Αποκλεισμός" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Δυνατο φως" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Απόχρωση" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Φωτίζω" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Φωτεινότητα" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Πολλαπλασιάζω" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Κανονικός" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Επικάλυμμα" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Κορεσμός" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Κόσκινο" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Απαλό φως" @@ -1651,33 +1637,33 @@ msgstr "Επιλεγμένα επίπεδα" msgid "workspace.options.position" msgstr "Θέση" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Πρωτότυπο" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Ακτίνα κύκλου" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Περιστροφή" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Επιλέξτε ένα σχήμα, ένα artboard ή μια ομάδα για να σύρετε μια σύνδεση με " "άλλο artboard." -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Συμπλήρωση επιλογής" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Επιλογή διαδρομής" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Θολούρα" @@ -1689,91 +1675,92 @@ msgstr "Σκίαση" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Εσωτερική σκιά" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "Χ" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Υ" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Διάχυση" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Σκιά" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Ομαδική σκιά" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Επιλογή σκιών" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Μέγεθος" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Προεπιλογές μεγέθους" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Ακρη" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Κέντρο" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Dashed" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Διάστικτο" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Μέσα" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Μικτός" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Εξω" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Στερεός" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Στοίχιση κάτω" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Στοίχιση στο κέντρο" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Ευθυγραμμίστε την κορυφή" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Αυτόματο ύψος" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Αυτόματο πλάτος" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Σταθερός" @@ -1795,35 +1782,35 @@ msgstr "Πεζά" msgid "workspace.options.text-options.none" msgstr "Κανένας" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Διαγράμμιση (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Ευθυγράμμιση κέντρο" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Δικαιολόγηση" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Στοίχιση αριστερά" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Για ευθυγράμμιση προς τα δεξιά" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Κείμενο" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Κείμενο ομάδας" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Κείμενο επιλογής" @@ -1832,7 +1819,7 @@ msgstr "Κείμενο επιλογής" msgid "workspace.options.text-options.titlecase" msgstr "Τίτλος υπόθεση" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "υπογράμμιση (%s)" @@ -1841,7 +1828,7 @@ msgstr "υπογράμμιση (%s)" msgid "workspace.options.text-options.uppercase" msgstr "κεφαλαία" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Χρησιμοποιήστε το κουμπί αναπαραγωγής στην κεφαλίδα για να εκτελέσετε την " @@ -1859,7 +1846,7 @@ msgstr "Αποστολή προς τα πίσω" msgid "workspace.shape.menu.copy" msgstr "αντίγραφο" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Δημιουργία στοιχείου" @@ -1867,11 +1854,11 @@ msgstr "Δημιουργία στοιχείου" msgid "workspace.shape.menu.cut" msgstr "Αποκοπή" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Διαγραφή" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Αποσύνδεση παρουσίας" @@ -1903,11 +1890,11 @@ msgstr "Φέρτε μπροστά" msgid "workspace.shape.menu.group" msgstr "Ομάδα" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Κρύβω" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Κλείδωμα" @@ -1915,15 +1902,15 @@ msgstr "Κλείδωμα" msgid "workspace.shape.menu.mask" msgstr "Μάσκα" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Επικόλληση" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Επαναφορά παρακάμψεων" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "προβολή" @@ -1931,7 +1918,7 @@ msgstr "προβολή" msgid "workspace.shape.menu.ungroup" msgstr "Κατάργηση ομάδας" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Ξεκλείδωμα" @@ -1939,11 +1926,11 @@ msgstr "Ξεκλείδωμα" msgid "workspace.shape.menu.unmask" msgstr "Ανακάλυψη" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Ιστορικό" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "στρώσεις" @@ -1951,7 +1938,7 @@ msgstr "στρώσεις" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Εισαγόμενα χαρακτηριστικά SVG" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Σελίδες" @@ -1959,7 +1946,7 @@ msgstr "Σελίδες" msgid "workspace.sitemap" msgstr "Χάρτης ιστοτόπου" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Στοιχεία" @@ -1967,7 +1954,7 @@ msgstr "Στοιχεία" msgid "workspace.toolbar.color-palette" msgstr "Παλέτα χρωμάτων (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Σχόλια (%s)" @@ -2148,15 +2135,15 @@ msgstr "Λειτουργία άνω του %s" msgid "workspace.undo.title" msgstr "Ιστορία" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Παράβλεψη" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Υπάρχουν ενημερώσεις σε κοινόχρηστες βιβλιοθήκες" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Ενημέρωση" diff --git a/frontend/translations/en.po b/frontend/translations/en.po index f9539da5fb..c76c43af56 100644 --- a/frontend/translations/en.po +++ b/frontend/translations/en.po @@ -172,7 +172,7 @@ msgstr "The open-source solution for design and prototyping." msgid "auth.terms-and-privacy-agreement" msgstr "I agree to the [terms of service](%s) and [privacy policy](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Terms of service" @@ -195,11 +195,19 @@ msgstr "Work email" msgid "branding-illustrations-marketing-pieces" msgstr "...branding, illustrations, marketing pieces, etc." +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:98, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:105 +msgid "color-row.token-color-row.deleted-token" +msgstr "This token does not exists or has been deleted." + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:35 +msgid "color-token.empty-state" +msgstr "No available color tokens. Check active sets/themes or add new tokens." + #: src/app/main/ui/comments.cljs:530 msgid "comments.mentions.not-found" msgstr "No people found for @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publish" @@ -271,7 +279,7 @@ msgstr "Share prototypes" msgid "common.share-link.view-all" msgstr "Select All" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Unpublish" @@ -396,7 +404,7 @@ msgstr "The token has no expiration date" msgid "dashboard.add-file" msgstr "Add file" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Add as Shared Library" @@ -404,31 +412,31 @@ msgstr "Add as Shared Library" msgid "dashboard.change-email" msgstr "Change email" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copy)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Create new team" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Pin this version" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Your Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Delete team" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Download Penpot file (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Download standard file (.svg + .json)" @@ -512,7 +520,7 @@ msgstr "Start building amazing stuff" msgid "dashboard.export-binary-multi" msgstr "Download %s Penpot files (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Export boards as PDF" @@ -528,7 +536,7 @@ msgstr "Export Penpot %s files" msgid "dashboard.export-multiple.selected" msgstr "%s of %s elements selected" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Export" @@ -738,11 +746,33 @@ msgstr "Uploading data to server (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Uploading file: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:765 +msgid "dashboard.invitation-modal.delete" +msgstr "You're going to delete the invitations to:" + +#: src/app/main/ui/dashboard/team.cljs:766 +msgid "dashboard.invitation-modal.resend" +msgstr "You're going to resend the invitations to:" + +#: src/app/main/ui/dashboard/team.cljs:756 +msgid "dashboard.invitation-modal.title.delete-invitations" +msgstr "Delete invitations" + +#: src/app/main/ui/dashboard/team.cljs:757 +msgid "dashboard.invitation-modal.title.resend-invitations" +msgstr "Resend invitations" + +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Invite people" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/team.cljs:933 +msgid "team.invitations-selected" +msgid_plural "team.invitations-selected" +msgstr[0] "1 invitation selected" +msgstr[1] "%s invitations selected" + +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Leave team" @@ -750,7 +780,7 @@ msgstr "Leave team" msgid "dashboard.libraries-and-templates" msgstr "Libraries & Templates" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "Here you have some Libraries and templates you can add to your project" @@ -758,7 +788,7 @@ msgstr "Here you have some Libraries and templates you can add to your project" msgid "dashboard.libraries-and-templates.explore" msgstr "Explore more of them and know how to contribute" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "There was a problem importing the template. The template wasn't imported." @@ -794,7 +824,7 @@ msgstr "Move to other team" msgid "dashboard.new-file" msgstr "+ New File" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "New File" @@ -802,7 +832,7 @@ msgstr "New File" msgid "dashboard.new-project" msgstr "+ New project" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "New Project" @@ -810,11 +840,11 @@ msgstr "New Project" msgid "dashboard.no-matches-for" msgstr "No matches found for “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Pinned projects will appear here" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Notifications" @@ -826,7 +856,7 @@ msgstr "Your email address has been updated successfully" msgid "dashboard.notifications.email-verified-successfully" msgstr "Your email address has been verified successfully" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Notification settings updated" @@ -834,11 +864,11 @@ msgstr "Notification settings updated" msgid "dashboard.notifications.password-saved" msgstr "Password saved successfully!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "View notifications" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s members" @@ -850,6 +880,14 @@ msgstr "Open file in a new tab" msgid "dashboard.options" msgstr "Options" +#: src/app/main/ui/dashboard/team.cljs:949 +msgid "dashboard.order-invitations-by-role" +msgstr "Order by role" + +#: src/app/main/ui/dashboard/team.cljs:958 +msgid "dashboard.order-invitations-by-status" +msgstr "Order by status" + #: src/app/main/ui/settings/password.cljs:94, src/app/main/ui/settings/password.cljs:107 msgid "dashboard.password-change" msgstr "Change password" @@ -870,7 +908,7 @@ msgstr "You are now owner on this team." msgid "dashboard.permissions-change.viewer" msgstr "You are now a viewer on this team." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Pin/Unpin" @@ -907,7 +945,7 @@ msgstr "You are not part of the team “%s“ anymore." msgid "dashboard.save-settings" msgstr "Save settings" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Search…" @@ -999,7 +1037,7 @@ msgstr "Notifications" msgid "dashboard.show-all-files" msgstr "Show all files" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Version history" @@ -1023,7 +1061,7 @@ msgstr[1] "Your files have been duplicated successfully" msgid "dashboard.success-duplicate-project" msgstr "Your project has been duplicated successfully" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Your file has been moved successfully" @@ -1035,15 +1073,15 @@ msgstr "Your files have been moved successfully" msgid "dashboard.success-move-project" msgstr "Your project has been moved successfully" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Team info" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Team members" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Team projects" @@ -1063,7 +1101,7 @@ msgstr "Search results" msgid "dashboard.type-something" msgstr "Type to search results" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Unpublish Library" @@ -1071,50 +1109,50 @@ msgstr "Unpublish Library" msgid "dashboard.update-settings" msgstr "Update settings" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "No limits on creativity" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Free" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Is active" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "When this hook is triggered event details will be delivered" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "You only can delete or modify webhooks created by you." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Content type" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Create webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook created successfully." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhooks are a simple way to allow other websites and apps to be notified " "when certain events happen at Penpot. We’ll send a POST request to each of " "the URLs you provide." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Press the button \"Add webhook\" to add one." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "No webhooks created so far." @@ -1134,7 +1172,7 @@ msgstr "Email" msgid "dashboard.your-name" msgstr "Your name" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Your Penpot" @@ -1150,15 +1188,15 @@ msgstr "Attention" msgid "ds.component-subtitle" msgstr "Components to update:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Allow" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Cancel" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1174,17 +1212,17 @@ msgstr "No applicable tokens in active sets or themes." msgid "ds.inputs.numeric-input.no-matches" msgstr "No matches found." -#: src/app/main/ui/ds/controls/numeric_input.cljs:611 +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 msgid "ds.inputs.numeric-input.open-token-list-dropdown" msgstr "Open token list" -#: src/app/main/ui/ds/controls/utilities/token_field.cljs:84 +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 msgid "ds.inputs.token-field.detach-token" msgstr "Detach token" -#: src/app/main/ui/ds/controls/utilities/token_field.cljs:39 +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 msgid "ds.inputs.token-field.no-active-token-option" -msgstr "This token is not available in any active set or theme." +msgstr "This token is not in any active set or has an invalid value." #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" @@ -1240,7 +1278,7 @@ msgstr "Although Penpot no longer support this type of Assets, you can" msgid "errors.deprecated.contact.text" msgstr "contact us" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "Cannot drop a parent set to an own child path." @@ -1264,11 +1302,11 @@ msgstr "Email does not match the invitation." msgid "errors.email-domain-not-allowed" msgstr "Domain not allowed" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "The email «%s» has many permanent bounce reports." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "The email «%s» has been reported as spam or permanently bounce." @@ -1282,10 +1320,9 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Feature '%s' is not supported." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused +#: src/app/main/ui/workspace/tokens/management/create/form.cljs msgid "errors.field-max-length" -msgstr "Must contain at most 1 characters." +msgstr "Must contain at most %s characters." #, unused msgid "errors.field-min-length" @@ -1307,7 +1344,7 @@ msgstr "" "features of the file you are trying to open. Migrations for '%s' need to be " "applied before the file can be opened." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Something wrong has happened." @@ -1357,11 +1394,16 @@ msgstr "This invite might be canceled or may be expired." msgid "errors.ldap-disabled" msgstr "LDAP authentication is disabled." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "You have reached the '%s' quota. Contact support." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:853 +#, fuzzy +msgid "errors.max-quote-reached" +msgstr "" + +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "The maximum (%s) number of emails that can be invited in a single request " @@ -1379,7 +1421,7 @@ msgstr "Seems that the contents of the image does not match the file extension." msgid "errors.media-type-not-allowed" msgstr "Seems that this is not a valid image." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "The profile you inviting has emails muted (spam reports or high bounces)." @@ -1413,7 +1455,7 @@ msgstr "Invalid data in clipboard" msgid "errors.profile-blocked" msgstr "The profile is blocked" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "Your profile has emails muted (spam reports or high bounces)." @@ -1429,19 +1471,19 @@ msgstr "SVG is invalid or malformed" msgid "errors.team-feature-mismatch" msgstr "Detected incompatible feature '%s'" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "Insufficient members to leave team, you probably want to delete it." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "The member you try to assign does not exist." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Owner can't leave team, you must reassign the owner role." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "A set with the same name already exists" @@ -1450,11 +1492,11 @@ msgstr "A set with the same name already exists" msgid "errors.token-set-doesnt-exists" msgstr "Can't duplicate an unkown set" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "Cannot complete drop, a set with same name already exists at path." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Theme Option with the same name exists" @@ -1482,31 +1524,31 @@ msgstr "This version is locked and cannot be deleted by others" msgid "errors.version-not-supported" msgstr "File has an incompatible version number" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Connection error, URL not reacheable" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL does not pass validation." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Last delivery was not successful." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Error on SSL validation." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Timeout" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Unexpected error on validating" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Unexpected status %s" @@ -1570,7 +1612,7 @@ msgstr "An error has occurred" msgid "inspect.attributes.blur" msgstr "Blur" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Value" @@ -1578,15 +1620,15 @@ msgstr "Value" msgid "inspect.attributes.color" msgstr "Color" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1594,7 +1636,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Fill" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Download source image" @@ -1688,35 +1730,37 @@ msgstr "Solid" msgid "inspect.attributes.stroke.width" msgstr "Width" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Typography" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Font Family" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Font Size" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Font Style" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Font Weight" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Letter Spacing" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Line Height" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Text Decoration" @@ -1724,40 +1768,41 @@ msgstr "Text Decoration" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "Strikethrough" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "None" -#: src/app/main/ui/inspect/attributes/text.cljs:143 +#: src/app/main/ui/inspect/attributes/text.cljs:137 #, fuzzy msgid "inspect.attributes.typography.text-decoration.strikethrough" msgstr "" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Underline" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Text Transform" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Capitalize" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Lower Case" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "None" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Unset" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Upper Case" @@ -1769,15 +1814,15 @@ msgstr "Variant properties" msgid "inspect.attributes.variants" msgstr "Variants properties" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "If you want to know more about design inspect visit Penpot's help center" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "More info about inspect" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Select a shape, board or group to inspect their properties and code" @@ -1849,74 +1894,59 @@ msgstr "Computed" msgid "inspect.tabs.info" msgstr "Info" -#: src/app/main/ui/inspect/right_sidebar.cljs:107 -msgid "inspect.tabs.styles" -msgstr "Styles" +#: src/app/main/ui/inspect/styles/style_box.cljs:66 +#, fuzzy +msgid "inspect.tabs.styles.panel.copy-style-shorthand" +msgstr "" + +#: src/app/main/ui/inspect/styles/property_detail_copiable.cljs:52 +msgid "inspect.tabs.styles.panel.copy-to-clipboard" +msgstr "Copy to clipboard" + +#: src/app/main/ui/inspect/styles/style_box.cljs:22 +msgid "inspect.tabs.styles.panel.geometry" +msgstr "Size & Position" + +#: src/app/main/ui/inspect/styles/style_box.cljs:59, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:179 +msgid "inspect.tabs.styles.panel.toggle-style" +msgstr "Toggle panel %s" + +#: src/app/main/ui/inspect/styles/style_box.cljs:21 +msgid "inspect.tabs.styles.panel.token" +msgstr "Token Sets & Themes" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:26 +msgid "inspect.tabs.styles.panel.tokens.active-sets" +msgstr "Active sets" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:21 +msgid "inspect.tabs.styles.panel.tokens.active-themes" +msgstr "Active themes" + +#: src/app/main/ui/inspect/styles/style_box.cljs:20 +msgid "inspect.tabs.styles.panel.variant" +msgstr "Variant properties" + +#: src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:102, src/app/main/ui/inspect/styles/rows/properties_row.cljs:53 +msgid "inspect.tabs.styles.token.resolved-value" +msgstr "Resolved value:" #: src/app/main/ui/inspect/right_sidebar.cljs:165 msgid "inspect.tabs.switcher.label" msgstr "Layer info" -#: src/app/main/ui/inspect/styles/style_box.cljs:10 -msgid "inspect.tabs.styles.panel.variant" -msgstr "Variant properties" - -#: src/app/main/ui/inspect/styles/style_box.cljs:11 -msgid "inspect.tabs.styles.panel.token" -msgstr "Token Sets & Themes" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.geometry" -msgstr "Size & Position" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.fill" -msgstr "Fill" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.stroke" -msgstr "Stroke" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.text" -msgstr "Text" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.shadow" -msgstr "Shadow" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.layout" -msgstr "Layout" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.layout-element" -msgstr "Layout Element" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.visibility" -msgstr "Visibility" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.blur" -msgstr "Blur" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.svg" -msgstr "SVG" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.toggle-style" -msgstr "Toggle panel %s" - -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Mark all as read" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Shortcuts" +#: src/app/main/ui/dashboard/sidebar.cljs:1043 +msgid "labels.about-penpot" +msgstr "About Penpot" + #: src/app/main/data/common.cljs:90, src/app/main/ui/dashboard/import.cljs:530 msgid "labels.accept" msgstr "Accept" @@ -1925,11 +1955,11 @@ msgstr "Accept" msgid "labels.access-tokens" msgstr "Access tokens" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Active" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Add" @@ -1937,11 +1967,11 @@ msgstr "Add" msgid "labels.add-custom-font" msgstr "Add custom font" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Adding..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Admin" @@ -1949,7 +1979,7 @@ msgstr "Admin" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "All" @@ -1972,7 +2002,11 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Bad Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/ui/inspect/styles/style_box.cljs:26 +msgid "labels.blur" +msgstr "Blur" + +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Cancel" @@ -1980,14 +2014,18 @@ msgstr "Cancel" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Close" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Collapse" +#: src/app/main/ui/workspace/colorpicker.cljs:427 +msgid "labels.color" +msgstr "Color" + #: src/app/main/ui/comments.cljs:913 msgid "labels.comment" msgstr "Comment" @@ -1996,19 +2034,23 @@ msgstr "Comment" msgid "labels.comment.mark-as-solved" msgstr "Mark as solved" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Comments" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Community" +#: src/app/main/ui/dashboard/sidebar.cljs:1030 +msgid "labels.community-contributions" +msgstr "Community & Contributions" + #: src/app/main/ui/settings/password.cljs:91 msgid "labels.confirm-password" msgstr "Confirm password" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continue" @@ -2024,11 +2066,11 @@ msgstr "You can continue with a Penpot account" msgid "labels.copy" msgstr "Copy" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Copy color" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Copy link" @@ -2036,7 +2078,7 @@ msgstr "Copy link" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Create" @@ -2056,7 +2098,7 @@ msgstr "Custom fonts" msgid "labels.dashboard" msgstr "Dashboard" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Delete" @@ -2068,7 +2110,7 @@ msgstr "Delete comment" msgid "labels.delete-comment-thread" msgstr "Delete thread" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Delete invitation" @@ -2085,19 +2127,19 @@ msgstr "Development" msgid "labels.director" msgstr "Director" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Discard" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Drafts" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "Duplicate" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Edit" @@ -2105,11 +2147,11 @@ msgstr "Edit" msgid "labels.edit-file" msgstr "Edit file" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "Empty" @@ -2122,11 +2164,11 @@ msgstr "Error" msgid "labels.event" msgstr "Event" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Expired" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Export" @@ -2142,6 +2184,10 @@ msgstr "Feedback sent" msgid "labels.figma" msgstr "Figma" +#: src/app/main/ui/inspect/styles/style_box.cljs:23 +msgid "labels.fill" +msgstr "Fill" + #: src/app/main/ui/dashboard/fonts.cljs:430 msgid "labels.font-family" msgstr "Font Family" @@ -2154,7 +2200,7 @@ msgstr "Font providers" msgid "labels.font-variants" msgstr "Styles" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fonts" @@ -2168,11 +2214,11 @@ msgstr "CEO or Founder" msgid "labels.freelancer" msgstr "Freelancer" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Github repository" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Give feedback" @@ -2184,23 +2230,27 @@ msgstr "Go back" msgid "labels.graphic-design" msgstr "Graphic design" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Help Center" +#: src/app/main/ui/dashboard/sidebar.cljs:1019 +msgid "labels.help-learning" +msgstr "Help & Learning" + #: src/app/main/ui/dashboard/templates.cljs:91 msgid "labels.hide" msgstr "Hide" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Hide resolved comments" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Import" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inactive" @@ -2222,7 +2272,7 @@ msgstr "Internal Error" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Invitations" @@ -2230,7 +2280,15 @@ msgstr "Invitations" msgid "labels.language" msgstr "Language" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/inspect/styles/style_box.cljs:28 +msgid "labels.layout" +msgstr "Layout" + +#: src/app/main/ui/dashboard/sidebar.cljs:798 +msgid "labels.learning-center" +msgstr "Learning Center" + +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Libraries & Templates" @@ -2250,7 +2308,7 @@ msgstr "Log in or sign up" msgid "labels.login" msgstr "Login" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Logout" @@ -2258,11 +2316,11 @@ msgstr "Logout" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Member" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Members" @@ -2270,7 +2328,7 @@ msgstr "Members" msgid "labels.mention" msgstr "Mention" -#: src/app/main/ui/ds/controls/numeric_input.cljs:591 +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 msgid "labels.mixed-values" msgstr "Mixed" @@ -2278,19 +2336,19 @@ msgstr "Mixed" msgid "labels.new-password" msgstr "New password" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Next" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "You're all caught up! New comment notifications will appear here." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "No pending invitations." -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "Gather your people and build great things together." @@ -2307,7 +2365,7 @@ msgstr "Oops!" msgid "labels.notifications" msgstr "Notifications" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 file" @@ -2319,7 +2377,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 board" msgstr[1] "%s boards" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 project" @@ -2338,7 +2396,7 @@ msgstr "Old password" msgid "labels.only-yours" msgstr "Only yours" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Options" @@ -2354,7 +2412,7 @@ msgstr "Other (specify)" msgid "labels.other-short" msgstr "Other" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Owner" @@ -2362,11 +2420,19 @@ msgstr "Owner" msgid "labels.password" msgstr "Password" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Pending" -#: src/app/main/ui/dashboard/sidebar.cljs:750 +#: src/app/main/ui/dashboard/sidebar.cljs:878 +msgid "labels.penpot-changelog" +msgstr "Penpot Changelog" + +#: src/app/main/ui/dashboard/sidebar.cljs:804 +msgid "labels.penpot-hub" +msgstr "Penpot hub" + +#: src/app/main/ui/dashboard/sidebar.cljs:751 msgid "labels.pinned-projects" msgstr "Pinned Projects" @@ -2390,15 +2456,19 @@ msgstr "Product Management" msgid "labels.profile" msgstr "Profile" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projects" +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:644 +msgid "labels.reference" +msgstr "Reference" + #: src/app/main/data/common.cljs:83 msgid "labels.refresh" msgstr "Refresh" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Release notes" @@ -2412,11 +2482,11 @@ msgstr "Reload file" msgid "labels.remove" msgstr "Remove" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Remove member" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Rename" @@ -2444,7 +2514,11 @@ msgstr "new reply" msgid "labels.reply.thread" msgstr "Reply" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:788 +msgid "labels.resend" +msgstr "Resend" + +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Resend invitation" @@ -2456,15 +2530,15 @@ msgstr "Restore" msgid "labels.retry" msgstr "Retry" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Role" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Save" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Search" @@ -2492,14 +2566,18 @@ msgstr "We are in programmed maintenance of our systems." msgid "labels.service-unavailable.main-message" msgstr "Service Unavailable" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Sets" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Settings" +#: src/app/main/ui/inspect/styles/style_box.cljs:27 +msgid "labels.shadow" +msgstr "Shadow" + #: src/app/main/ui/viewer/header.cljs:204 msgid "labels.share" msgstr "Share" @@ -2508,7 +2586,7 @@ msgstr "Share" msgid "labels.share-prototype" msgstr "Share prototype" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Libraries" @@ -2516,7 +2594,7 @@ msgstr "Libraries" msgid "labels.show" msgstr "Show" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Show all comments" @@ -2524,11 +2602,11 @@ msgstr "Show all comments" msgid "labels.show-comments-list" msgstr "Show comments list" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Show only your mentions" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Show only your comments" @@ -2536,7 +2614,7 @@ msgstr "Show only your comments" msgid "labels.sketch" msgstr "Sketch" -#: src/app/main/ui/dashboard/sidebar.cljs:729 +#: src/app/main/ui/dashboard/sidebar.cljs:730 msgid "labels.sources" msgstr "Sources" @@ -2544,14 +2622,30 @@ msgstr "Sources" msgid "labels.start" msgstr "Start" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" +#: src/app/main/ui/inspect/styles/style_box.cljs:24, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:46 +msgid "labels.stroke" +msgstr "Stroke" + #: src/app/main/ui/onboarding/questions.cljs:87 msgid "labels.student-teacher" msgstr "Student or teacher" +#: src/app/main/ui/inspect/right_sidebar.cljs:107, src/app/main/ui/inspect/styles.cljs:107 +msgid "labels.styles" +msgstr "Styles" + +#: src/app/main/ui/inspect/styles/style_box.cljs:33 +msgid "labels.svg" +msgstr "SVG" + +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:250 +msgid "labels.switch" +msgstr "Switch" + #: src/app/main/ui/onboarding/questions.cljs:256 #, unused msgid "labels.team-leader" @@ -2562,15 +2656,23 @@ msgstr "Team Leader" msgid "labels.team-member" msgstr "Team member" +#: src/app/main/ui/inspect/styles/style_box.cljs:25 +msgid "labels.text" +msgstr "Text" + #: src/app/main/ui/workspace/tokens/themes.cljs:36 msgid "labels.themes" msgstr "Themes" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutorials" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1148 +msgid "labels.typography" +msgstr "Typography" + +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Unknown error" @@ -2602,15 +2704,27 @@ msgstr "Upload custom fonts" msgid "labels.uploading" msgstr "Uploading…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/inspect/right_sidebar.cljs:65, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:949, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:518 +msgid "labels.variant" +msgstr "Variant" + +#: src/app/main/ui/dashboard/sidebar.cljs:872 +msgid "labels.version-notes" +msgstr "Version %s notes" + +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "View only" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Viewer" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/inspect/styles/style_box.cljs:32 +msgid "labels.visibility" +msgstr "Visibility" + +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2618,11 +2732,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Write new comment" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(you)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Your account" @@ -2631,10 +2745,6 @@ msgstr "Your account" msgid "labels.youtube" msgstr "YouTube" -#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:518 -msgid "labels.variant" -msgstr "Variant" - #: src/app/main/ui/ds/product/loader.cljs:21 msgid "loader.tips.01.message" msgstr "Keep your designs consistent and easy to update across projects." @@ -2657,7 +2767,7 @@ msgstr "Design flexibly with familiar CSS-like layout controls." #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Auto Layout like CSS" +msgstr "Layouts like CSS" #: src/app/main/ui/ds/product/loader.cljs:27 msgid "loader.tips.04.message" @@ -2715,23 +2825,23 @@ msgstr "Extend Penpot with community-built plugins for extra functionality." msgid "loader.tips.10.title" msgstr "Plugins Support" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Choose image" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Gradient" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Image" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Keep aspect ratio" @@ -2749,7 +2859,7 @@ msgstr "Loading image…" msgid "media.radial" msgstr "Radial" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Solid" @@ -2822,19 +2932,19 @@ msgstr "Create token" msgid "modals.create-access-token.title" msgstr "Generate access token" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Create webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Create webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Payload URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2880,11 +2990,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Delete conversation" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Are you sure you want to delete this annotation?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Delete annotation" @@ -2932,11 +3042,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Deleting font" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Are you sure you want to delete this page?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Delete page" @@ -2982,29 +3092,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Deleting file" msgstr[1] "Deleting files" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Delete team" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Are you sure you want to delete this team? All projects and files " "associated with team will be permanently deleted." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Deleting team" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Delete member" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Are you sure you want to delete this member from the team?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Delete team member" @@ -3018,55 +3128,55 @@ msgstr[1] "" "Assets that have already been used in those files will remain there (no " "design will be broken)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Delete webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Are you sure you want to delete this webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Deleting webhook" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Edit webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Edit webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Send invitation" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Emails, comma separated" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "Some members are already on the team. We'll invite the rest." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "You can invite members to the team so they can access to this file and all " "of the team files." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Invite members to the team" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "As you're the only member of this team, the team will be deleted along with " "its projects and files." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Are you sure you want to leave the %s team?" @@ -3094,15 +3204,15 @@ msgstr "Select a member to promote" msgid "modals.leave-and-reassign.title" msgstr "Before you leave" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Leave team" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Are you sure you want to leave this team?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Leaving team" @@ -3124,39 +3234,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Move library" msgstr[1] "Move libraries" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Nudge amount" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Transfer ownership" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "If you transfer the ownership, you will change your role to Admin, losing " "some permissions over this team. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "You are the current owner of this team. Are you sure you want to make %s " "the new owner of the team?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "New team owner" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publish" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Your library is empty. Are you sure you want to publish it?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Publish empty library" @@ -3211,21 +3321,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Update components in a shared library" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Update" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Cancel" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "You are about to update a component in a shared library. This may affect " "other files that use it." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Update a component in a shared library" @@ -3337,11 +3447,15 @@ msgstr "Maintenance break: we will be down for a short maintenance within 5 minu msgid "notifications.by-code.upgrade-version" msgstr "A new version is available, please refresh the page" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:825 +msgid "notifications.invitation-deleted" +msgstr "Invitation deleted successfully" + +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Invitation sent successfully" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Invitation link copied" @@ -3487,7 +3601,7 @@ msgstr "" "Remember to include everyone. Developers, designers, managers... diversity " "adds up :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Invite with the role:" @@ -3707,193 +3821,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Go to login" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Detach" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Mixed" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Remove color" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Select items using this style" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Basics" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Dashboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Viewer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Workspace" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Alignment" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Edit" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Generic" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Generic" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Main menu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modify layers" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panels" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Paths" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Shapes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Texts" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Tools" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Comments" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Add node" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Align bottom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Align center" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Align center horizontally" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Align justify" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Align left" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Align right" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Align top" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Align center vertically" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Create board from selection" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Toggle bold" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Boolean difference" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Boolean exclude" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Boolean intersection" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Boolean union" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Send to the back" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Send backward" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Bring forward" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Bring to the front" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Clear undo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Copy link" @@ -3902,275 +4016,275 @@ msgstr "Copy link" msgid "shortcuts.copy-props" msgstr "Copy properties" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 msgid "shortcuts.create-component-variant" msgstr "Create component / variant" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Create new" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Cut" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Zoom out" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Delete" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Delete node" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Detach component" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Curve" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Ellipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Board" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Draw path" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Path" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rectangle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplicate" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Cancel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Export shapes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Zoom to fit all" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Flip horizontally" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Flip vertically" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Decrement font size" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Increment font size" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Go to drafts" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Go to shared libraries" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Search" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Group" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribute horizontally" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Show / Hide UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Zoom in" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Insert image" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Toggle italic" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Join nodes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 msgid "shortcuts.line-through" msgstr "Toggle line through" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Make corner" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Make curve" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Mask" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Merge nodes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Move" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Move down fast" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Move left fast" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Move right fast" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Move up fast" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Move node" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Move down" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Move left" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Move right" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Move up" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Next board" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "No shortcuts found" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Set opacity to 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Set opacity to 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Set opacity to 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Set opacity to 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Set opacity to 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Set opacity to 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Set opacity to 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Set opacity to 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Set opacity to 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Set opacity to 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Color picker" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Go to viewer comment section" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Go to dashboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Go to viewer inspect section" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Go to viewer interactions section" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Go to viewer interactions section" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Go to workspace" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " or " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Paste" @@ -4184,191 +4298,191 @@ msgstr "Paste properties" msgid "shortcuts.plugins" msgstr "Plugins manager" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Previous board" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Redo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Rename" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Reset zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Scale" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Search shortcuts" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Select all" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Select next layer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Select parent layer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Select previous layer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Separate nodes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Show / Hide pixel grid" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Show / Hide shortcuts" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Snap to nodes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Snap to pixel grid" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Start editing" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Start measurement" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Stop measurement" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Set thumbnails" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Keyboard shortcuts" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Toggle dynamic alignment" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Toggle assets" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Toggle color palette" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Toggle focus mode" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Toggle fullscreen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Show / Hide guides" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Toggle history" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Toggle layers" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Add / Remove flex layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Add/remove grid layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Lock / Unlock" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Lock proportions" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Show / Hide rulers" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Snap to guides" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Snap to ruler guides" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Toggle text palette" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Change theme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Show / Hide" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Toggle zoom style" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Toggle underline" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Undo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Ungroup" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Unmask" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribute vertically" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Zoom lense decrease" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Zoom lense increase" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zoom to selected" @@ -4471,7 +4585,7 @@ msgstr "" msgid "subscription.dashboard.unlimited-members-extra-editors-cta-title" msgstr "Inviting people while on the Unlimited plan" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "Power up" @@ -4660,7 +4774,7 @@ msgstr "Capped monthly bill at $175" msgid "subscription.settings.unlimited.storage-benefit" msgstr "25GB of storage" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "Power up your plan" @@ -4733,19 +4847,19 @@ msgstr "Password - Penpot" msgid "title.settings.profile" msgstr "Profile - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Invitations - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Members - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Settings - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -4817,43 +4931,43 @@ msgstr "Show interactions on click" msgid "viewer.header.sitemap" msgstr "Sitemap" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Last delivery was successful." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Align horizontal center (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribute horizontal spacing (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Align left (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Align right (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Align bottom (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Align vertical center (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribute vertical spacing (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Align top (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Add library" @@ -4862,23 +4976,23 @@ msgstr "Add library" msgid "workspace.assets.assets" msgstr "Assets" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "All assets" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Colors" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Add color" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:80 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:81 msgid "workspace.assets.component-group-options" msgstr "Component group options" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Components" @@ -4886,23 +5000,23 @@ msgstr "Components" msgid "workspace.assets.components.add-component" msgstr "Add component" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s Variants" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Create a group" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Your items are going to be named automatically as \"group name / item name\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Delete" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplicate" @@ -4910,11 +5024,11 @@ msgstr "Duplicate" msgid "workspace.assets.duplicate-main" msgstr "Duplicate main" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Edit" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filter" @@ -4923,27 +5037,27 @@ msgstr "Filter" msgid "workspace.assets.graphics" msgstr "Graphics" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Grid view" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Group" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Group name" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "List view" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "local library" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Manage library" @@ -4955,15 +5069,15 @@ msgstr "No assets found" msgid "workspace.assets.open-library" msgstr "Open library file" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Rename" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Rename group" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Search assets" @@ -4979,21 +5093,21 @@ msgstr[1] "%s items selected" msgid "workspace.assets.shared-library" msgstr "Shared library" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 component" msgstr[1] "%s components" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Sort" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Typographies" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Add typography" @@ -5018,7 +5132,7 @@ msgstr "Letter Spacing" msgid "workspace.assets.typography.line-height" msgstr "Line Height" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -5030,59 +5144,73 @@ msgstr "Text styles" msgid "workspace.assets.typography.text-transform" msgstr "Text Transform" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Ungroup" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/colorpicker.cljs:431, src/app/main/ui/workspace/colorpicker.cljs:443 +msgid "workspace.colorpicker.color-tokens" +msgstr "Color tokens" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:464 +msgid "workspace.component.swap.loop-error" +msgstr "Components can't be nested inside themselves." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:463 +msgid "workspace.component.switch.loop-error-multi" +msgstr "" +"Some copies could not be switched. Components can't be nested inside " +"themselves." + +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Create area" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Create board" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Merge cells" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Add 1 column to the right" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Add 1 column to the left" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Delete column" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Delete column and shapes" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Duplicate column" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Add 1 row below" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Add 1 row above" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Delete row" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Delete row and shapes" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Duplicate row" @@ -5090,7 +5218,7 @@ msgstr "Duplicate row" msgid "workspace.focus.focus-mode" msgstr "Focus mode" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Focus off" @@ -5110,11 +5238,11 @@ msgstr "Linear gradient" msgid "workspace.gradients.radial" msgstr "Radial gradient" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Disable dynamic alignment" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Disable proportional scale" @@ -5123,23 +5251,23 @@ msgstr "Disable proportional scale" msgid "workspace.header.menu.disable-scale-text" msgstr "Disable scale text" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Disable snap to guides" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Disable snap to pixel" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Disable snap to ruler guides" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Enable dynamic alignment" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Enable proportional scale" @@ -5148,51 +5276,51 @@ msgstr "Enable proportional scale" msgid "workspace.header.menu.enable-scale-text" msgstr "Enable scale text" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Snap to guides" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Enable snap to pixel" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Snap to ruler guides" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Hide board names" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Hide guides" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Hide color palette" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Hide pixel grid" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Hide rulers" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Hide fonts palette" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Edit" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "File" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Help & info" @@ -5201,63 +5329,63 @@ msgstr "Help & info" msgid "workspace.header.menu.option.power-up" msgstr "Power up your plan" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferences" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "View" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Redo" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Select all" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Show boards names" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Show guides" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Show color palette" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Show pixel grid" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Show rulers" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Show fonts palette" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Switch to dark theme" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Switch to light theme" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "Switch to system theme" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Undo" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Reset" @@ -5273,7 +5401,7 @@ msgstr "Saved" msgid "workspace.header.saving" msgstr "Saving" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Share" @@ -5282,11 +5410,11 @@ msgstr "Share" msgid "workspace.header.unsaved" msgstr "Unsaved changes" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "View mode (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zoom" @@ -5298,7 +5426,7 @@ msgstr "Fill - Scale to fill" msgid "workspace.header.zoom-fit" msgstr "Fit - Scale down to fit" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Zoom to fit all" @@ -5306,43 +5434,43 @@ msgstr "Zoom to fit all" msgid "workspace.header.zoom-full-screen" msgstr "Full screen" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zoom to selected" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Edit grid" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Exit" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Bottom padding" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Show 4 sided padding options" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Horizontal padding" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Left padding" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Right padding" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Top padding" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Vertical padding" @@ -5358,7 +5486,7 @@ msgstr "Done" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Locate" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Locate grid layout" @@ -5367,9 +5495,11 @@ msgstr "Locate grid layout" msgid "workspace.libraries.add" msgstr "Add" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 +#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133 msgid "workspace.libraries.colors" -msgstr "%s colors" +msgid_plural "workspace.libraries.colors" +msgstr[0] "1 color" +msgstr[1] "%s colors" #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" @@ -5397,43 +5527,51 @@ msgstr "Recent colors" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Complementary" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Save color style" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 +#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125 msgid "workspace.libraries.components" -msgstr "%s components" +msgid_plural "workspace.libraries.components" +msgstr[0] "1 component" +msgstr[1] "%s components" -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:349 +msgid "workspace.libraries.connected-to" +msgstr "Connected to" + +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Or add some of these to try:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "There are no Shared Libraries at your team, you can look for" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "some templates in here" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "File library" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 +#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129 msgid "workspace.libraries.graphics" -msgstr "%s graphics" +msgid_plural "workspace.libraries.graphics" +msgstr[0] "1 graphic" +msgstr[1] "%s graphics" -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "LIBRARIES IN THIS FILE" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "LIBRARIES" @@ -5442,11 +5580,11 @@ msgstr "LIBRARIES" msgid "workspace.libraries.library" msgstr "LIBRARY" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "LIBRARY UPDATES" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Loading…" @@ -5455,51 +5593,53 @@ msgstr "Loading…" msgid "workspace.libraries.more-templates" msgstr "You can look for " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "There are no Shared Libraries that need update" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "No matches found for “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Search shared libraries" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "SHARED LIBRARIES" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Connect library" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Multiple typographies" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Unlink all typographies" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 +#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137 msgid "workspace.libraries.typography" -msgstr "%s typographies" +msgid_plural "workspace.libraries.typography" +msgstr[0] "1 typography" +msgstr[1] "%s typographies" -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Disconnect library" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Update" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "see all changes" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "UPDATES" @@ -5507,31 +5647,31 @@ msgstr "UPDATES" msgid "workspace.notification-pill.detail" msgstr "Details" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Click the + button to add interactions." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Add blur" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Remove blur" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Blur" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Group blur" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Selection blur" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Toggle blur" @@ -5539,120 +5679,117 @@ msgstr "Toggle blur" msgid "workspace.options.canvas-background" msgstr "Canvas background" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Clip content" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Component" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Annotation" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Copy" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Create an annotation" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Edit an annotation" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Main" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Swap component" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "There are no assets in this library yet" -msgid "workspace.component.swap.loop-error" -msgstr "Components can't be nested inside themselves" - -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "Unlinked" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 msgid "workspace.options.component.variant.duplicated.copy.locate" msgstr "Locate conflicting variants" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:496 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:509 msgid "workspace.options.component.variant.duplicated.copy.title" msgstr "" "This component has conflicting variants. Make sure each variation has a " "unique set of property values." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1246 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 msgid "workspace.options.component.variant.duplicated.group.locate" msgstr "Locate duplicated variants" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1243 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1278 msgid "workspace.options.component.variant.duplicated.group.title" msgstr "Some variants have identical properties and values" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:267 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:268 msgid "workspace.options.component.variant.duplicated.single.all" msgstr "" "These variants have identical properties and values. Adjust the values so " "they can be retrieved." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:264 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 msgid "workspace.options.component.variant.duplicated.single.one" msgstr "" "This variant has identical properties and values to another variant. Adjust " "the values so they can be retrieved." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:270 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 msgid "workspace.options.component.variant.duplicated.single.some" msgstr "" "Some of these variants have identical properties and values. Adjust the " "values so they can be retrieved." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:486 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 msgid "workspace.options.component.variant.malformed.copy" msgstr "" "This component has variants with invalid names. Make sure every variant is " "following the correct structure." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "Locate invalid variants" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "Some variants have invalid names" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:489 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:502 msgid "workspace.options.component.variant.malformed.locate" msgstr "Locate invalid variants" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "These variants have invalid names." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "This variant has an invalid name." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "Some of these variants have invalid names." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[property]=[value], [property]=[value]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "Try using the following structure:" @@ -5688,7 +5825,7 @@ msgstr "Have the same hierarchy level." msgid "workspace.options.component.variants-help-modal.rule3.detail" msgstr "Groups, boards and layouts are considered equivalent." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:935, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1157, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 msgid "workspace.options.component.variants-help-modal.title" msgstr "How variants stay connected" @@ -5732,7 +5869,7 @@ msgstr "Top" msgid "workspace.options.constraints.topbottom" msgstr "Top & Bottom" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" @@ -5745,21 +5882,21 @@ msgstr "Export" msgid "workspace.options.export-multiple" msgstr "Export selection" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Export 1 element" msgstr[1] "Export %s elements" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Add export" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Remove export" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Suffix" @@ -5767,7 +5904,7 @@ msgstr "Suffix" msgid "workspace.options.exporting-complete" msgstr "Export complete" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exporting…" @@ -5779,27 +5916,27 @@ msgstr "Export failed" msgid "workspace.options.exporting-object-slow" msgstr "Export unexpectedly slow" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Fill" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Add fill" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Remove fill" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Resize board to fit content" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Add flow start" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Flow" @@ -5808,19 +5945,19 @@ msgstr "Flow" msgid "workspace.options.flows.flow-start" msgstr "Flow start" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Flow starts" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Remove flow" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Auto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Columns" @@ -5829,7 +5966,7 @@ msgstr "Columns" msgid "workspace.options.grid.grid-title" msgstr "Grid" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Color" @@ -5838,15 +5975,15 @@ msgstr "Color" msgid "workspace.options.grid.params.columns" msgstr "Columns" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Gutter" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Height" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margin" @@ -5855,7 +5992,7 @@ msgstr "Margin" msgid "workspace.options.grid.params.rows" msgstr "Rows" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Set as default" @@ -5869,159 +6006,159 @@ msgstr "Size" msgid "workspace.options.grid.params.type" msgstr "Type" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Bottom" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Center" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Left" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Right" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Stretch" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Top" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Use default" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Width" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Rows" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Square" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Group fill" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Group stroke" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Add guide" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Remove guide" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Guides" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Toggle guide" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Height" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspect" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Action" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "After delay" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animation" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Dissolve" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "None" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Push" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Slide" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "auto" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Add background overlay" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Close when clicking outside" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Close overlay" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Close overlay: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Delay" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destination" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Duration" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linear" @@ -6030,47 +6167,47 @@ msgstr "Linear" msgid "workspace.options.interaction-in" msgstr "In" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Mouse enter" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Mouse leave" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navigate to" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navigate to: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(not set)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Offset effect" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "On Click" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Open overlay" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Open overlay: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Open URL" @@ -6079,87 +6216,87 @@ msgstr "Open URL" msgid "workspace.options.interaction-out" msgstr "Out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Bottom center" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Bottom left" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Bottom right" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Center" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manual" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Top center" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Top left" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Top right" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Position" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Preserve scroll position" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Previous screen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relative to" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "self" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Toggle overlay" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Toggle overlay: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Trigger" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "While Hovering" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "While Pressing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interactions" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Add interaction" @@ -6168,67 +6305,67 @@ msgstr "Add interaction" msgid "workspace.options.interactions.remove-interaction" msgstr "Remove interaction" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Color" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Color burn" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Color dodge" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Darken" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Difference" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Exclusion" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Hard light" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Hue" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Lighten" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminosity" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiply" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Overlay" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturation" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Screen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Soft light" @@ -6247,7 +6384,7 @@ msgstr "Group layers" msgid "workspace.options.layer-options.title.multiple" msgstr "Selected layers" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Toggle layer visibility" @@ -6256,19 +6393,19 @@ msgstr "Toggle layer visibility" msgid "workspace.options.layout-item.advanced-ops" msgstr "Advanced options" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Max.Height" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Max.Width" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.Height" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.Width" @@ -6382,15 +6519,15 @@ msgstr "space between" msgid "workspace.options.layout.top" msgstr "Top" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "More colors" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "More library colors" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacity" @@ -6399,35 +6536,35 @@ msgstr "Opacity" msgid "workspace.options.position" msgstr "Position" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototype" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Radius" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Bottom left" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Bottom right" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Top left" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Top right" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Collapse independent radius" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Show independent radius" @@ -6439,7 +6576,7 @@ msgstr "Recent" msgid "workspace.options.retry" msgstr "Retry" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotation" @@ -6447,31 +6584,31 @@ msgstr "Rotation" msgid "workspace.options.search-font" msgstr "Search font" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Select a shape, board or group to drag a connection to other board." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Selected colors" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Selection fill" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Selection stroke" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Add shadow" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Blur" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Shadow color" @@ -6483,63 +6620,64 @@ msgstr "Drop shadow" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Inner shadow" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Remove shadow" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Spread" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Shadow" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Group shadow" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Selection shadows" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Toggle shadow" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Show in exports" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Show in view mode" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Size" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Size presets" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "Lock ratio" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "Unlock ratio" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Stroke" @@ -6548,7 +6686,7 @@ msgstr "Stroke" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Circle marker" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Circle" @@ -6557,7 +6695,7 @@ msgstr "Circle" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Diamond marker" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamond" @@ -6566,19 +6704,19 @@ msgstr "Diamond" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Line arrow" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Arrow" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "None" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Round" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Square" @@ -6587,7 +6725,7 @@ msgstr "Square" msgid "workspace.options.stroke-cap.square-marker" msgstr "Square marker" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Rectangle" @@ -6596,83 +6734,83 @@ msgstr "Rectangle" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Triangle arrow" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Triangle" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Stroke color" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Stroke width" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Add stroke color" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Center" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Dashed" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Dotted" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Inside" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Mixed" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Outside" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Remove stroke" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Solid" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Align bottom" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Align middle" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Align top" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Auto height" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Auto width" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fixed" @@ -6694,35 +6832,35 @@ msgstr "Lowercase" msgid "workspace.options.text-options.none" msgstr "None" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Strikethrough (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Align center" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Justify" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Align left" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Align right" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Group text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Selection text" @@ -6731,7 +6869,7 @@ msgstr "Selection text" msgid "workspace.options.text-options.titlecase" msgstr "Title case" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Underline (%s)" @@ -6740,19 +6878,19 @@ msgstr "Underline (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Uppercase" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Use the play button at the header to run the prototype view." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Width" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X axis" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y axis" @@ -6796,113 +6934,113 @@ msgstr "Separate nodes (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Snap nodes (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Open" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Discover [more plugins](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "No plugins installed yet" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "The plugin manifest is incorrect." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "You need to be an editor to use this plugin" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "The plugin doesn't exist or the URL is not correct." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Install" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Installed plugins" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Plugins manager" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Plugins" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "UPDATE THIS PLUGIN" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "The plugin has been modified since you last opened it. It now also wants to " "access:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Start file downloads." -#: src/app/main/ui/workspace/plugins.cljs:285 +#: src/app/main/ui/workspace/plugins.cljs:286 msgid "workspace.plugins.permissions.allow-localstorage" msgstr "Store data in the browser." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Read your comments and replies." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Read and modify your comments and reply in your name." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Read the content of files that users have access to." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Read and modify the content of files that users have access to." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Please note that this plugin is created by an external party, so ensure you " "trust it before granting access. Your data privacy and security are " "important to us. If you have any concerns, please contact support." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Read your libraries and assets." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Read and modify your libraries and assets." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "'%s' PLUGIN WANTS ACCESS TO:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Read the profile information of the current user." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Plugins List" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Remove plugin" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Write a plugin URL" @@ -6910,25 +7048,25 @@ msgstr "Write a plugin URL" msgid "workspace.plugins.success" msgstr "Plugin correctly loaded." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Plugins" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "NOT NOW" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Want to take a look? It will open in a new draft for your current team. (If " "not, you can always find it in the installed plugins of any file.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "'%s' PLUGIN IS INSTALLED FOR YOUR USER!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "TRY PLUGIN" @@ -6940,15 +7078,15 @@ msgstr "Add flex layout" msgid "workspace.shape.menu.add-grid" msgstr "Add grid layout" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Add layout" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Create variant" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "Add new property" @@ -6960,11 +7098,11 @@ msgstr "Send to back" msgid "workspace.shape.menu.backward" msgstr "Send backward" -#: src/app/main/ui/workspace/context_menu.cljs:615, src/app/main/ui/workspace/sidebar/assets/components.cljs:638, src/app/main/ui/workspace/sidebar/assets/groups.cljs:74, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1021 +#: src/app/main/ui/workspace/context_menu.cljs:617, src/app/main/ui/workspace/sidebar/assets/components.cljs:634, src/app/main/ui/workspace/sidebar/assets/groups.cljs:75, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1041 msgid "workspace.shape.menu.combine-as-variants" msgstr "Combine as variants" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:640 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:636 msgid "workspace.shape.menu.combine-as-variants-error" msgstr "Components need to be in the same page" @@ -7000,7 +7138,7 @@ msgstr "Copy as SVG" msgid "workspace.shape.menu.copy-text" msgstr "Copy as text" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Create annotation" @@ -7008,11 +7146,11 @@ msgstr "Create annotation" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Selection to board" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Create component" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Create multiple components" @@ -7020,7 +7158,7 @@ msgstr "Create multiple components" msgid "workspace.shape.menu.cut" msgstr "Cut" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Delete" @@ -7028,15 +7166,15 @@ msgstr "Delete" msgid "workspace.shape.menu.delete-flow-start" msgstr "Delete flow start" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Detach instance" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Detach instances" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Difference" @@ -7048,11 +7186,11 @@ msgstr "Duplicate" msgid "workspace.shape.menu.edit" msgstr "Edit" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Exclude" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Flatten" @@ -7085,19 +7223,19 @@ msgstr "Go to main component file" msgid "workspace.shape.menu.group" msgstr "Group" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Hide" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Show / Hide UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Intersection" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Lock" @@ -7105,7 +7243,7 @@ msgstr "Lock" msgid "workspace.shape.menu.mask" msgstr "Mask" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Paste" @@ -7125,15 +7263,15 @@ msgstr "Remove flex layout" msgid "workspace.shape.menu.remove-grid" msgstr "Remove grid layout" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Remove layout" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "Remove property" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1221 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1256 msgid "workspace.shape.menu.remove-variant-property.last-property" msgstr "Variant should have at least one property" @@ -7141,15 +7279,15 @@ msgstr "Variant should have at least one property" msgid "workspace.shape.menu.rename" msgstr "Rename" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Reset overrides" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Restore main component" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "Restore variant" @@ -7157,15 +7295,15 @@ msgstr "Restore variant" msgid "workspace.shape.menu.select-layer" msgstr "Select layer" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Show" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Show in assets panel" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Show main component" @@ -7178,6 +7316,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Set as thumbnail" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transform to path" @@ -7185,11 +7324,11 @@ msgstr "Transform to path" msgid "workspace.shape.menu.ungroup" msgstr "Ungroup" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Union" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Unlock" @@ -7202,7 +7341,7 @@ msgstr "Unmask" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Update main components" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Update main component" @@ -7214,11 +7353,11 @@ msgstr "Collapse sidebar" msgid "workspace.sidebar.expand" msgstr "Expand sidebar" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "History" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Layers" @@ -7258,11 +7397,11 @@ msgstr "Texts" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Imported SVG Attributes" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Pages" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Add page" @@ -7279,27 +7418,27 @@ msgstr "%s active themes" msgid "workspace.tokens.add set" msgstr "Add set" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Add new theme" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "Add set to this group" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "Add token: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Applied to" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "Axis" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Back to theme list" @@ -7325,19 +7464,23 @@ msgstr "Choose folder" msgid "workspace.tokens.color" msgstr "Color" +#: src/app/main/data/workspace/tokens/errors.cljs:97 +msgid "workspace.tokens.composite-line-height-needs-font-size" +msgstr "Line Height depends on Font Size. Add a Font Size to get the resolved value." + #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:53 msgid "workspace.tokens.create-new-theme" msgstr "Create your first theme now." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Create one." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Create new %s token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Delete token" @@ -7345,19 +7488,19 @@ msgstr "Delete token" msgid "workspace.tokens.delete-theme-title" msgstr "Delete theme" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Duplicate token" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "copy" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Edit token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Edit theme" @@ -7365,15 +7508,15 @@ msgstr "Edit theme" msgid "workspace.tokens.edit-themes" msgstr "Edit themes" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:551 msgid "workspace.tokens.edit-token" -msgstr "Edit token" +msgstr "Edit %s token" #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "Token value cannot be empty" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Enter %s token name" @@ -7405,17 +7548,21 @@ msgstr "Preview:" msgid "workspace.tokens.export.single-file" msgstr "Single file" -#: src/app/main/data/workspace/tokens/application.cljs:366 +#: src/app/main/data/workspace/tokens/application.cljs:292 msgid "workspace.tokens.font-variant-not-found" msgstr "" "Error setting font weight/style. This font style does not exist in the " "current font" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:877, src/app/main/ui/workspace/tokens/management/create/form.cljs:889 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1024, src/app/main/ui/workspace/tokens/management/create/form.cljs:1039 msgid "workspace.tokens.font-weight-value-enter" -msgstr "Enter a value (300, Bold, Regular Italic...) or an {alias}" +msgstr "Font weight (300, Bold Italic...) or an {alias}" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs +msgid "workspace.tokens.font-size-value-enter" +msgstr "Font size or {alias}" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "Gaps" @@ -7433,7 +7580,7 @@ msgstr "Group name" msgid "workspace.tokens.grouping-set-alert" msgstr "Token Set grouping is not supported yet." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:232 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:233 msgid "workspace.tokens.import-button-prefix" msgstr "Import %s" @@ -7441,27 +7588,27 @@ msgstr "Import %s" msgid "workspace.tokens.import-error" msgstr "Import Error:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:273 msgid "workspace.tokens.import-menu-folder-option" msgstr "Folder" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 msgid "workspace.tokens.import-menu-json-option" msgstr "Single JSON file" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:270 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 msgid "workspace.tokens.import-menu-zip-option" msgstr "ZIP file" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "In multiple files, the file name / path are the set names." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "In a single JSON file, the first-level keys should be the token set names." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "Import tokens" @@ -7470,7 +7617,7 @@ msgstr "Import tokens" msgid "workspace.tokens.import-tooltip" msgstr "Importing a JSON file will override all your current tokens, sets and themes" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "Importing tokens will override all your current tokens, sets and themes." @@ -7484,6 +7631,10 @@ msgstr "" "This set is not active. Change theme or activate this set to see changes in " "the viewport" +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:711 +msgid "workspace.tokens.individual-tokens" +msgstr "Use individual tokens" + #: src/app/main/data/workspace/tokens/errors.cljs:49 msgid "workspace.tokens.invalid-color" msgstr "Invalid color value: %s" @@ -7519,6 +7670,10 @@ msgstr "" msgid "workspace.tokens.invalid-text-decoration-token-value" msgstr "Invalid token value: only none, underline and strike-through are accepted" +#: src/app/main/data/workspace/tokens/errors.cljs:93 +msgid "workspace.tokens.invalid-token-value-typography" +msgstr "Invalid value: must reference a composite typography token." + #: src/app/main/data/workspace/tokens/errors.cljs:61, src/app/main/data/workspace/tokens/errors.cljs:73, src/app/main/data/workspace/tokens/errors.cljs:77 msgid "workspace.tokens.invalid-value" msgstr "Invalid token value: %s" @@ -7539,15 +7694,23 @@ msgstr "Theme" msgid "workspace.tokens.label.theme-placeholder" msgstr "Add a theme (i.e. Light)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1047 +msgid "workspace.tokens.letter-spacing-value-enter-composite" +msgstr "Letter spacing or {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1043 +msgid "workspace.tokens.line-height-value-enter" +msgstr "Line height (multiplier, px, %) or {alias}" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "Margins" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "Max. size" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "Min. size" @@ -7555,7 +7718,7 @@ msgstr "Min. size" msgid "workspace.tokens.missing-references" msgstr "Missing token references: " -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:148 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:123 msgid "workspace.tokens.more-options" msgstr "Right click to see options" @@ -7567,7 +7730,7 @@ msgstr "No active sets" msgid "workspace.tokens.no-active-theme" msgstr "No theme active" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "You need to be an editor to activate / deactivate sets" @@ -7575,11 +7738,11 @@ msgstr "You need to be an editor to activate / deactivate sets" msgid "workspace.tokens.no-permission-themes" msgstr "You need to be an editor to use themes" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "There are no sets defined yet. Create one first." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "There are no sets yet." @@ -7607,12 +7770,12 @@ msgstr "Invalid token value. The resolved value is too large: %s" msgid "workspace.tokens.opacity-range" msgstr "Opacity must be between 0 and 100% or 0 and 1 (e.g. 50% or 0.5)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Original value: %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "Paddings" @@ -7620,16 +7783,20 @@ msgstr "Paddings" msgid "workspace.tokens.radius" msgstr "Radius" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Reference is not valid or is not in any active set" +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:744 +msgid "workspace.tokens.reference-composite" +msgstr "Enter a token typography alias" + #: src/app/main/ui/workspace/tokens/style_dictionary.cljs #, unused msgid "workspace.tokens.reference-error" msgstr "Reference Errors: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Resolved value: %s" @@ -7638,7 +7805,7 @@ msgstr "Resolved value: %s" msgid "workspace.tokens.save-theme" msgstr "Save theme" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Select set." @@ -7646,11 +7813,11 @@ msgstr "Select set." msgid "workspace.tokens.self-reference" msgstr "Token has self reference" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "Enter name (use '/' for groups)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "Define what token sets should be used as part of this theme option:" @@ -7671,7 +7838,7 @@ msgstr "Here you can configure the base font size, which defines the value of 1r msgid "workspace.tokens.settings" msgstr "Tokens settings" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "Size" @@ -7679,18 +7846,22 @@ msgstr "Size" msgid "workspace.tokens.stroke-width-range" msgstr "Stroke width must be greater than or equal to 0." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:865, src/app/main/ui/workspace/tokens/management/create/form.cljs:895 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1012, src/app/main/ui/workspace/tokens/management/create/form.cljs:1051 msgid "workspace.tokens.text-case-value-enter" -msgstr "Enter: none | uppercase | lowercase | capitalize or {alias}" +msgstr "none | uppercase | lowercase | capitalize or {alias}" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:871, src/app/main/ui/workspace/tokens/management/create/form.cljs:898 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1018, src/app/main/ui/workspace/tokens/management/create/form.cljs:1055 msgid "workspace.tokens.text-decoration-value-enter" -msgstr "Enter text decoration: none | underline | strike-through" +msgstr "none | underline | strike-through or {alias}" #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:130 msgid "workspace.tokens.theme-name" msgstr "Theme %s" +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:48 +msgid "workspace.tokens.theme-name-already-exists" +msgstr "A theme with this name already exists" + #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:96 msgid "workspace.tokens.themes-description" msgstr "" @@ -7701,44 +7872,52 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "Themes list" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Description" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:827 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:973 msgid "workspace.tokens.token-font-family-select" msgstr "Select font family" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:834, src/app/main/ui/workspace/tokens/management/create/form.cljs:885 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1029 msgid "workspace.tokens.token-font-family-value" msgstr "Font family" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:833, src/app/main/ui/workspace/tokens/management/create/form.cljs:886 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:979, src/app/main/ui/workspace/tokens/management/create/form.cljs:1031 msgid "workspace.tokens.token-font-family-value-enter" msgstr "Font family or list of fonts separated by comma (,)" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Name" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " is not a valid token name.\n" "Token names should only contain letters and digits separated by . " "characters and must not start with a $ sign." +#: src/app/main/ui/workspace/tokens/management/create/form.cljs +msgid "workspace.tokens.token-name-length-validation-error" +msgstr "Name should be at least 1 character" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs +msgid "workspace.tokens.token-name-duplication-validation-error" +msgstr "A token already exists at the path: %s" + #: src/app/main/ui/workspace/tokens/style_dictionary.cljs:259 #, unused msgid "workspace.tokens.token-not-resolved" msgstr "Could not resolve reference token with the name: %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Value" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "Enter a value or alias with {alias}" @@ -7746,7 +7925,7 @@ msgstr "Enter a value or alias with {alias}" msgid "workspace.tokens.tokens-section-title" msgstr "TOKENS - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Tools" @@ -7758,7 +7937,11 @@ msgstr "Import was successful. Some tokens were not included." msgid "workspace.tokens.unknown-token-type-section" msgstr "Type '%s' is not supported (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:715 +msgid "workspace.tokens.use-reference" +msgstr "Use a reference" + +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "The value is not valid" @@ -7770,11 +7953,11 @@ msgstr "Invalid value: % is not allowed." msgid "workspace.tokens.value-with-units" msgstr "Invalid value: Units are not allowed." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "Renaming this token will break any reference to its old name." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Assets" @@ -7782,7 +7965,7 @@ msgstr "Assets" msgid "workspace.toolbar.color-palette" msgstr "Color Palette (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Comments (%s)" @@ -7993,19 +8176,19 @@ msgstr "Operation over %s" msgid "workspace.undo.title" msgstr "History" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Dismiss" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "More info" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "There are updates in shared libraries" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Update" @@ -8073,11 +8256,11 @@ msgstr "Do you want to restore this version?" msgid "workspace.versions.snapshot-menu" msgstr "Open snapshot menu" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Actions" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "History" diff --git a/frontend/translations/es.po b/frontend/translations/es.po index 0875eaadfe..2211b83947 100644 --- a/frontend/translations/es.po +++ b/frontend/translations/es.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: Anonymous \n" +"PO-Revision-Date: 2025-10-07 16:35+0000\n" +"Last-Translator: Deleted User \n" "Language-Team: Spanish " "\n" "Language: es\n" @@ -9,7 +9,7 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -179,7 +179,7 @@ msgstr "La solución de código abierto para diseñar y prototipar." msgid "auth.terms-and-privacy-agreement" msgstr "Yo acepto los [términos de servicio](%s) y la [política de privacidad](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Términos de servicio" @@ -202,11 +202,21 @@ msgstr "Correo electrónico" msgid "branding-illustrations-marketing-pieces" msgstr "diseño de marca, ilustraciones, piezas de marketing..." +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:98, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:105 +msgid "color-row.token-color-row.deleted-token" +msgstr "Este token no existe o ha sido borrado." + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:35 +msgid "color-token.empty-state" +msgstr "" +"No hay tokens disponibles. Comprueba los sets/themes activos o crea nuevos " +"tokens de color." + #: src/app/main/ui/comments.cljs:530 msgid "comments.mentions.not-found" msgstr "No se encuentra miembros con @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publicar" @@ -278,7 +288,7 @@ msgstr "Compartir prototipos" msgid "common.share-link.view-all" msgstr "Selecctionar todas" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Despublicar" @@ -403,7 +413,7 @@ msgstr "El token no tiene fecha de expiración" msgid "dashboard.add-file" msgstr "Añadir archivo" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Añadir como Biblioteca Compartida" @@ -411,31 +421,31 @@ msgstr "Añadir como Biblioteca Compartida" msgid "dashboard.change-email" msgstr "Cambiar correo" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copia)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Crear nuevo equipo" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Guardar esta versión" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Tu Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Eliminar equipo" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Descargar archivo Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Descargar archivo estándar (.svg + .json)" @@ -519,7 +529,7 @@ msgstr "Empieza a crear cosas increíbles" msgid "dashboard.export-binary-multi" msgstr "Descargar %s archivos Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exportar tableros como PDF" @@ -535,7 +545,7 @@ msgstr "Exportar %s archivos Penpot" msgid "dashboard.export-multiple.selected" msgstr "%s de %s elementos seleccionados" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportar" @@ -750,11 +760,33 @@ msgstr "Enviando datos al servidor (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Enviando fichero: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:765 +msgid "dashboard.invitation-modal.delete" +msgstr "Vas a eliminar las invitaciones para:" + +#: src/app/main/ui/dashboard/team.cljs:766 +msgid "dashboard.invitation-modal.resend" +msgstr "Vas a reenviar las invitaciones para:" + +#: src/app/main/ui/dashboard/team.cljs:756 +msgid "dashboard.invitation-modal.title.delete-invitations" +msgstr "Eliminar invitaciones" + +#: src/app/main/ui/dashboard/team.cljs:757 +msgid "dashboard.invitation-modal.title.resend-invitations" +msgstr "Reenviar invitaciones" + +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Invitar a la gente" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/team.cljs:933 +msgid "team.invitations-selected" +msgid_plural "team.invitations-selected" +msgstr[0] "1 invitación seleccionada" +msgstr[1] "%s invitaciones seleccionadas" + +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Abandonar equipo" @@ -762,7 +794,7 @@ msgstr "Abandonar equipo" msgid "dashboard.libraries-and-templates" msgstr "Bibliotecas y plantillas" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "Aquí tienes algunas Bibliotecas y plantillas que puedes añadir a tu proyecto" @@ -770,7 +802,7 @@ msgstr "Aquí tienes algunas Bibliotecas y plantillas que puedes añadir a tu pr msgid "dashboard.libraries-and-templates.explore" msgstr "Explora más y descubre cómo contribuir" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Hubo un problema importando la plantilla. No ha podido ser importada." @@ -806,7 +838,7 @@ msgstr "Mover a otro equipo" msgid "dashboard.new-file" msgstr "+ Nuevo Archivo" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Nuevo Archivo" @@ -814,7 +846,7 @@ msgstr "Nuevo Archivo" msgid "dashboard.new-project" msgstr "+ Nuevo proyecto" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nuevo Proyecto" @@ -822,11 +854,11 @@ msgstr "Nuevo Proyecto" msgid "dashboard.no-matches-for" msgstr "No se encuentra “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Los proyectos fijados aparecerán aquí" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Notificaciones" @@ -838,7 +870,7 @@ msgstr "Tu dirección de correo ha sido actualizada" msgid "dashboard.notifications.email-verified-successfully" msgstr "Tu dirección de correo ha sido verificada" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Configuración de notificaciones actualizada" @@ -846,11 +878,11 @@ msgstr "Configuración de notificaciones actualizada" msgid "dashboard.notifications.password-saved" msgstr "¡Contraseña guardada!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Ver notificaciones" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s integrantes" @@ -862,6 +894,14 @@ msgstr "Abrir en una pestaña nueva" msgid "dashboard.options" msgstr "Opciones" +#: src/app/main/ui/dashboard/team.cljs:949 +msgid "dashboard.order-invitations-by-role" +msgstr "Ordenar por rol" + +#: src/app/main/ui/dashboard/team.cljs:958 +msgid "dashboard.order-invitations-by-status" +msgstr "Ordenar por estado" + #: src/app/main/ui/settings/password.cljs:94, src/app/main/ui/settings/password.cljs:107 msgid "dashboard.password-change" msgstr "Cambiar contraseña" @@ -882,7 +922,7 @@ msgstr "Ahora eres el dueño del equipo." msgid "dashboard.permissions-change.viewer" msgstr "Ahora eres lector del equipo." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Anclar/Desanclar" @@ -919,7 +959,7 @@ msgstr "Ya no eres parte del equipo “%s“." msgid "dashboard.save-settings" msgstr "Guardar opciones" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Buscar…" @@ -1011,7 +1051,7 @@ msgstr "Notificaciones" msgid "dashboard.show-all-files" msgstr "Ver todos los archivos" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Histórico de versiones" @@ -1035,7 +1075,7 @@ msgstr[1] "Tus archivos han sido duplicado con éxito" msgid "dashboard.success-duplicate-project" msgstr "Tu proyecto ha sido duplicado con éxito" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Tu archivo ha sido movido con éxito" @@ -1047,15 +1087,15 @@ msgstr "Tus archivos han sido movidos con éxito" msgid "dashboard.success-move-project" msgstr "Tu proyecto ha sido movido con éxito" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Información del equipo" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Integrantes del equipo" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Proyectos del equipo" @@ -1075,7 +1115,7 @@ msgstr "Resultados de búsqueda" msgid "dashboard.type-something" msgstr "Escribe algo para buscar" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Despublicar Biblioteca" @@ -1083,50 +1123,50 @@ msgstr "Despublicar Biblioteca" msgid "dashboard.update-settings" msgstr "Actualizar opciones" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Sin límites a la creatividad" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Gratis" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Activo" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Cuando se active este webhook se enviarán detalles del evento" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Sólo puedes borrar o modificar webhooks creados por ti." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Tipo de contenido" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Crear webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook creado con éxito." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Los webhooks son una forma simple de permitir notificar a otros sitios web " "y aplicaciones cuando ocurren ciertos eventos en Penpot. Enviaremos una " "petición POST a cada una de las URLs que indiques." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Pulsa el botón \"Crear webhook\" para añadir uno." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "No hay ningún webhook aún." @@ -1146,7 +1186,7 @@ msgstr "Correo" msgid "dashboard.your-name" msgstr "Tu nombre" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Tu Penpot" @@ -1162,15 +1202,15 @@ msgstr "Atención" msgid "ds.component-subtitle" msgstr "Componentes a actualizar:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Permitir" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Cancelar" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1186,17 +1226,17 @@ msgstr "No hay tokens aplicables en sets o temas activos." msgid "ds.inputs.numeric-input.no-matches" msgstr "No hay coincidencias" -#: src/app/main/ui/ds/controls/numeric_input.cljs:611 +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 msgid "ds.inputs.numeric-input.open-token-list-dropdown" msgstr "Abrir lista de tokens" -#: src/app/main/ui/ds/controls/utilities/token_field.cljs:84 +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 msgid "ds.inputs.token-field.detach-token" msgstr "Desvincular token" -#: src/app/main/ui/ds/controls/utilities/token_field.cljs:39 +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 msgid "ds.inputs.token-field.no-active-token-option" -msgstr "Este token no está disponible en ningún set ni tema activo." +msgstr "Este token no está disponible en ningún set o tiene un valor inválido." #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" @@ -1268,11 +1308,11 @@ msgstr "No puedes usar tu correo electrónico como contraseña" msgid "errors.email-domain-not-allowed" msgstr "Dominio no permitido" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "El correo electrónico «%s» tiene varios reportes de rebote permanente." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "El email «%s» tiene reportes de spam o de rebote permanente." @@ -1286,10 +1326,9 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Caracteristica no soportada: '%s'." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused +#: src/app/main/ui/workspace/tokens/management/create/form.cljs msgid "errors.field-max-length" -msgstr "Debe contener como máximo 1 caracter." +msgstr "Debe contener como máximo %s caracteres." #, unused msgid "errors.field-min-length" @@ -1311,7 +1350,7 @@ msgstr "" "del fichero que se esta intentando abrir. Falta aplicar migraciones para " "'%s' antes de poder abrir el fichero." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Ha ocurrido algún error." @@ -1361,11 +1400,11 @@ msgstr "Esta invitación puede haber sido cancelada o ha expirado." msgid "errors.ldap-disabled" msgstr "La autheticacion via LDAP esta deshabilitada." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Ha alcalzando el maximo de la quota '%s'. Contacte con soporte tecnico." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Se ha alcanzado el número máximo (%s) de correos electrónicos que se pueden " @@ -1385,7 +1424,7 @@ msgstr "" msgid "errors.media-type-not-allowed" msgstr "Parece que no es una imagen válida." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "El perfil que esta invitando tiene los emails silenciados (por reportes de " @@ -1413,7 +1452,7 @@ msgstr "Datos inválidos en el portapapeles" msgid "errors.profile-blocked" msgstr "El perfil esta blockeado" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Tu perfil tiene los emails silenciados (por reportes de spam o alto indice " @@ -1431,23 +1470,23 @@ msgstr "El SVG no es válido o está mal formado" msgid "errors.team-feature-mismatch" msgstr "Detectada funcionalidad incompatible '%s'" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "No hay miembros suficientes para salir del equipo, probablemente quieras " "borrarlo." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "El integrante que intentas designar no existe." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "El propietario no puede salir del equipo, tienes que asignar la propiedad a " "otra persona." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Ya existe un set con el mismo nombre" @@ -1456,13 +1495,13 @@ msgstr "Ya existe un set con el mismo nombre" msgid "errors.token-set-doesnt-exists" msgstr "No se puede duplicar un set que no existe." -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "" "No se ha podido mover el set, un set con el mismo nombre ya existe en la " "esa ruta." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Ya existe un theme con este nombre" @@ -1482,31 +1521,31 @@ msgstr "Error de validación" msgid "errors.version-not-supported" msgstr "El fichero tiene un número de versión incompatible" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Error de conexion, la url no es alcanzable" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "La URL no pasa la validación." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Hubo un problema en el último envío." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Error en la validación SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Timeout" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Error inesperado al validar" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Estado inesperado %s" @@ -1571,7 +1610,7 @@ msgstr "Ha ocurrido un error" msgid "inspect.attributes.blur" msgstr "Desenfocado" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Valor" @@ -1579,15 +1618,15 @@ msgstr "Valor" msgid "inspect.attributes.color" msgstr "Color" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1595,7 +1634,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Relleno" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Descargar imagen original" @@ -1689,35 +1728,37 @@ msgstr "Sólido" msgid "inspect.attributes.stroke.width" msgstr "Ancho" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografía" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Familia tipográfica" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Tamaño de fuente" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Estilo de fuente" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Grosor de fuente" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Espaciado de letras" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Interlineado" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Decoración de texto" @@ -1725,35 +1766,36 @@ msgstr "Decoración de texto" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "Tachar" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Ninguna" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Subrayar" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformación de texto" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Primera en mayúscula" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Minúsculas" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Ninguna" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Sin asignar" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Mayúsculas" @@ -1765,17 +1807,17 @@ msgstr "Propiedades de la variante" msgid "inspect.attributes.variants" msgstr "Propiedades de las variantes" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Si quieres saber más sobre la inspección puedes visitar el centro de ayuda " "de Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Más información sobre la inspección" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Elige una forma, tablero o grupo para inspeccionar sus propiedades y código" @@ -1847,74 +1889,42 @@ msgstr "Calculado" msgid "inspect.tabs.info" msgstr "Información" -#: src/app/main/ui/inspect/right_sidebar.cljs:107 -msgid "inspect.tabs.styles" -msgstr "Estilos" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.blur" -msgstr "Desenfoque" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.fill" -msgstr "Relleno" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 +#: src/app/main/ui/inspect/styles/style_box.cljs:22 msgid "inspect.tabs.styles.panel.geometry" msgstr "Tamaño y posición" -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.layout" -msgstr "Layout" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.layout-element" -msgstr "Layout de elemento" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.shadow" -msgstr "Sombra" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.stroke" -msgstr "Borde" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.svg" -msgstr "SVG" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.text" -msgstr "Texto" - -#: src/app/main/ui/inspect/styles/style_box.cljs:12 +#: src/app/main/ui/inspect/styles/style_box.cljs:59, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:179 msgid "inspect.tabs.styles.panel.toggle-style" msgstr "Alternar panel %s" -#: src/app/main/ui/inspect/styles/style_box.cljs:11 +#: src/app/main/ui/inspect/styles/style_box.cljs:21 msgid "inspect.tabs.styles.panel.token" msgstr "Sets y temas de tokens" -#: src/app/main/ui/inspect/styles/style_box.cljs:10 +#: src/app/main/ui/inspect/styles/style_box.cljs:20 msgid "inspect.tabs.styles.panel.variant" msgstr "Propiedades de las variantes" -#: src/app/main/ui/inspect/styles/style_box.cljs:12 -msgid "inspect.tabs.styles.panel.visibility" -msgstr "Visibilidad" +#: src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:102, src/app/main/ui/inspect/styles/rows/properties_row.cljs:53 +msgid "inspect.tabs.styles.token.resolved-value" +msgstr "Valor resuelto:" #: src/app/main/ui/inspect/right_sidebar.cljs:165 msgid "inspect.tabs.switcher.label" msgstr "Información sobre la capa" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Marcar todo como leído" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Atajos de teclado" +#: src/app/main/ui/dashboard/sidebar.cljs:1043 +msgid "labels.about-penpot" +msgstr "Acerca de Penpot" + #: src/app/main/data/common.cljs:90, src/app/main/ui/dashboard/import.cljs:530 msgid "labels.accept" msgstr "Aceptar" @@ -1923,11 +1933,11 @@ msgstr "Aceptar" msgid "labels.access-tokens" msgstr "Access tokens" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Activo" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Añadir" @@ -1935,11 +1945,11 @@ msgstr "Añadir" msgid "labels.add-custom-font" msgstr "Añadir fuente personalizada" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Añadiendo..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Administración" @@ -1947,7 +1957,7 @@ msgstr "Administración" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Todo" @@ -1970,7 +1980,11 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Error del servidor (Bad Gateway)" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/ui/inspect/styles/style_box.cljs:26 +msgid "labels.blur" +msgstr "Desenfoque" + +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Cancelar" @@ -1978,14 +1992,18 @@ msgstr "Cancelar" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Cerrar" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Colapsar" +#: src/app/main/ui/workspace/colorpicker.cljs:427 +msgid "labels.color" +msgstr "Color" + #: src/app/main/ui/comments.cljs:913 msgid "labels.comment" msgstr "Comentario" @@ -1994,19 +2012,23 @@ msgstr "Comentario" msgid "labels.comment.mark-as-solved" msgstr "Marcar como resuelto" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Comentarios" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Comunidad" +#: src/app/main/ui/dashboard/sidebar.cljs:1030 +msgid "labels.community-contributions" +msgstr "Comunidad y contribuciones" + #: src/app/main/ui/settings/password.cljs:91 msgid "labels.confirm-password" msgstr "Confirmar contraseña" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continuar" @@ -2022,11 +2044,11 @@ msgstr "Puedes continuar con una cuenta de Penpot" msgid "labels.copy" msgstr "Copiar" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Copiar color" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Copiar enlace" @@ -2034,7 +2056,7 @@ msgstr "Copiar enlace" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Crear" @@ -2054,7 +2076,7 @@ msgstr "Fuentes personalizadas" msgid "labels.dashboard" msgstr "Panel" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Borrar" @@ -2066,7 +2088,7 @@ msgstr "Eliminar comentario" msgid "labels.delete-comment-thread" msgstr "Eliminar hilo" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Eliminar invitation" @@ -2083,19 +2105,19 @@ msgstr "Desarrollo" msgid "labels.director" msgstr "Director" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Descartar" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Borradores" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "Duplicar" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Editar" @@ -2103,11 +2125,11 @@ msgstr "Editar" msgid "labels.edit-file" msgstr "Editar archivo" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Edición" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "Vacío" @@ -2120,11 +2142,11 @@ msgstr "Error" msgid "labels.event" msgstr "Evento" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Expirada" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exportar" @@ -2140,6 +2162,10 @@ msgstr "Opinión enviada" msgid "labels.figma" msgstr "Figma" +#: src/app/main/ui/inspect/styles/style_box.cljs:23 +msgid "labels.fill" +msgstr "Relleno" + #: src/app/main/ui/dashboard/fonts.cljs:430 msgid "labels.font-family" msgstr "Familia de fuente" @@ -2152,7 +2178,7 @@ msgstr "Proveedores de fuentes" msgid "labels.font-variants" msgstr "Estilos" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fuentes" @@ -2166,11 +2192,11 @@ msgstr "CEO o Fundador" msgid "labels.freelancer" msgstr "Autónomo" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repositorio de Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Danos tu opinión" @@ -2182,23 +2208,27 @@ msgstr "Volver" msgid "labels.graphic-design" msgstr "Diseño gráfico" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Centro de ayuda" +#: src/app/main/ui/dashboard/sidebar.cljs:1019 +msgid "labels.help-learning" +msgstr "Ayuda y aprendizaje" + #: src/app/main/ui/dashboard/templates.cljs:91 msgid "labels.hide" msgstr "Ocultar" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Ocultar comentarios resueltos" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Importar" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inactivo" @@ -2220,7 +2250,7 @@ msgstr "Error interno" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Invitaciones" @@ -2228,7 +2258,15 @@ msgstr "Invitaciones" msgid "labels.language" msgstr "Idioma" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/inspect/styles/style_box.cljs:28 +msgid "labels.layout" +msgstr "Layout" + +#: src/app/main/ui/dashboard/sidebar.cljs:798 +msgid "labels.learning-center" +msgstr "Centro de aprendizaje" + +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Bibliotecas y Plantillas" @@ -2244,7 +2282,7 @@ msgstr "Entra o regístrate" msgid "labels.login" msgstr "Entrar" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Salir" @@ -2252,11 +2290,11 @@ msgstr "Salir" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Integrante" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Integrantes" @@ -2264,7 +2302,7 @@ msgstr "Integrantes" msgid "labels.mention" msgstr "Mencionar" -#: src/app/main/ui/ds/controls/numeric_input.cljs:591 +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 msgid "labels.mixed-values" msgstr "Varios" @@ -2272,19 +2310,19 @@ msgstr "Varios" msgid "labels.new-password" msgstr "Nueva contraseña" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Siguiente" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "¡Ya estás al día! Nuevas notificaciones de comentarios aparecerán aquí." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "No hay invitaciones pendientes." -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "Reúne a tu gente y construid juntos grandes cosas." @@ -2301,7 +2339,7 @@ msgstr "¡Uy!" msgid "labels.notifications" msgstr "Notificaciones" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 archivo" @@ -2313,7 +2351,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 tablero" msgstr[1] "%s tableros" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 proyecto" @@ -2332,7 +2370,7 @@ msgstr "Contraseña anterior" msgid "labels.only-yours" msgstr "Sólo los tuyos" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Opciones" @@ -2348,7 +2386,7 @@ msgstr "Otra (especifica)" msgid "labels.other-short" msgstr "Otra" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Propiedad" @@ -2356,11 +2394,19 @@ msgstr "Propiedad" msgid "labels.password" msgstr "Contraseña" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Pendiente" -#: src/app/main/ui/dashboard/sidebar.cljs:750 +#: src/app/main/ui/dashboard/sidebar.cljs:878 +msgid "labels.penpot-changelog" +msgstr "Registro de cambios de Penpot" + +#: src/app/main/ui/dashboard/sidebar.cljs:804 +msgid "labels.penpot-hub" +msgstr "Penpot hub" + +#: src/app/main/ui/dashboard/sidebar.cljs:751 msgid "labels.pinned-projects" msgstr "Proyectos fijados" @@ -2384,11 +2430,15 @@ msgstr "Gestión de Productos" msgid "labels.profile" msgstr "Perfil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Proyectos" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:644 +msgid "labels.reference" +msgstr "Referencia" + +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Notas de versión" @@ -2402,11 +2452,11 @@ msgstr "Recargar archivo" msgid "labels.remove" msgstr "Quitar" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Eliminar integrante" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Renombrar" @@ -2434,7 +2484,11 @@ msgstr "nueva respuesta" msgid "labels.reply.thread" msgstr "Responder" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:788 +msgid "labels.resend" +msgstr "Reenviar" + +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Reenviar invitacion" @@ -2446,15 +2500,15 @@ msgstr "Restaurar" msgid "labels.retry" msgstr "Reintentar" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rol" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Guardar" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Buscar" @@ -2482,14 +2536,18 @@ msgstr "Estamos en una operación de mantenimiento programado de nuestros sistem msgid "labels.service-unavailable.main-message" msgstr "El servicio no está disponible" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Sets" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Configuración" +#: src/app/main/ui/inspect/styles/style_box.cljs:27 +msgid "labels.shadow" +msgstr "Sombra" + #: src/app/main/ui/viewer/header.cljs:204 msgid "labels.share" msgstr "Compartir" @@ -2498,7 +2556,7 @@ msgstr "Compartir" msgid "labels.share-prototype" msgstr "Compartir prototipo" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibliotecas" @@ -2506,7 +2564,7 @@ msgstr "Bibliotecas" msgid "labels.show" msgstr "Mostrar" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Mostrar todos los comentarios" @@ -2514,11 +2572,11 @@ msgstr "Mostrar todos los comentarios" msgid "labels.show-comments-list" msgstr "Mostrar lista de comentarios" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Mostrar sólo tus menciones" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Mostrar sólo tus comentarios" @@ -2526,7 +2584,7 @@ msgstr "Mostrar sólo tus comentarios" msgid "labels.sketch" msgstr "Sketch" -#: src/app/main/ui/dashboard/sidebar.cljs:729 +#: src/app/main/ui/dashboard/sidebar.cljs:730 msgid "labels.sources" msgstr "Recursos" @@ -2534,14 +2592,30 @@ msgstr "Recursos" msgid "labels.start" msgstr "Comenzar" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" +#: src/app/main/ui/inspect/styles/style_box.cljs:24, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:46 +msgid "labels.stroke" +msgstr "Borde" + #: src/app/main/ui/onboarding/questions.cljs:87 msgid "labels.student-teacher" msgstr "Estudiante o profesor" +#: src/app/main/ui/inspect/right_sidebar.cljs:107, src/app/main/ui/inspect/styles.cljs:107 +msgid "labels.styles" +msgstr "Estilos" + +#: src/app/main/ui/inspect/styles/style_box.cljs:33 +msgid "labels.svg" +msgstr "SVG" + +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:250 +msgid "labels.switch" +msgstr "Intercambiar" + #: src/app/main/ui/onboarding/questions.cljs:256 #, unused msgid "labels.team-leader" @@ -2552,15 +2626,23 @@ msgstr "Líder de equipo" msgid "labels.team-member" msgstr "Miembro de equipo" +#: src/app/main/ui/inspect/styles/style_box.cljs:25 +msgid "labels.text" +msgstr "Texto" + #: src/app/main/ui/workspace/tokens/themes.cljs:36 msgid "labels.themes" msgstr "Temas" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutoriales" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1148 +msgid "labels.typography" +msgstr "Tipografía" + +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Error desconocido" @@ -2588,15 +2670,27 @@ msgstr "Cargar fuente" msgid "labels.uploading" msgstr "Subiendo…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/inspect/right_sidebar.cljs:65, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:949, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:518 +msgid "labels.variant" +msgstr "Variante" + +#: src/app/main/ui/dashboard/sidebar.cljs:872 +msgid "labels.version-notes" +msgstr "Notas versión %s" + +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Solo lectura" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Lector" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/inspect/styles/style_box.cljs:32 +msgid "labels.visibility" +msgstr "Visibilidad" + +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2604,11 +2698,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Escribir un nuevo comentario" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(tú)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Tu cuenta" @@ -2641,7 +2735,7 @@ msgstr "Diseña de forma flexible con controles de diseño similares a CSS." #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Auto Layout como CSS" +msgstr "Layouts como en CSS" #: src/app/main/ui/ds/product/loader.cljs:27 msgid "loader.tips.04.message" @@ -2703,23 +2797,23 @@ msgstr "" msgid "loader.tips.10.title" msgstr "Soporte de Plugins" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Elegir imagen" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Gradiente" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Imagen" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Mantener la proporción" @@ -2737,7 +2831,7 @@ msgstr "Cargando imagen…" msgid "media.radial" msgstr "Radial" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Sólido" @@ -2810,19 +2904,19 @@ msgstr "Crear token" msgid "modals.create-access-token.title" msgstr "Generar access token" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Crear webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Crear webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Payload URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2868,11 +2962,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Eliminar conversación" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "¿Seguro que quieres borrar esta nota?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Borrar nota" @@ -2920,11 +3014,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Eliminando fuente" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "¿Seguro que quieres borrar esta página?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Borrar página" @@ -2970,29 +3064,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Borrando archivo" msgstr[1] "Borrando archivos" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Eliminar equipo" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "¿Seguro que quieres eliminar este equipo? Todos los proyectos y archivos " "asociados con el equipo serán eliminados permamentemente." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Eliminando equipo" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Eliminando miembro" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "¿Seguro que quieres eliminar este integrante del equipo?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Eliminar integrante del equipo" @@ -3006,57 +3100,57 @@ msgstr[1] "" "Los elementos que hayan sido utilizados en esos archivos permanecerán allí " "(¡ningún diseño se romperá!)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Borrar webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "¿Seguro que quieres borrar este webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Borrando webhook" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Modificar webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Modificar webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Enviar invitacion" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Emails, separados por coma" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Algunas direcciones de correo ya se encuentran entre los miembros. Estas " "invitaciones no serán enviadas." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Puedes invitar miembros al equipo para que puedan acceder a este fichero y " "a todos los demás ficheros del equipo." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Invitar a miembros al equipo" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Al ser la única persona integrante de este equipo, el equipo será eliminado " "junto con sus proyectos y archivos." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "¿Seguro que quieres abandonar el equipo %s?" @@ -3084,15 +3178,15 @@ msgstr "Selecciona un miembro a promocionar" msgid "modals.leave-and-reassign.title" msgstr "Antes de que abandones" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Abandonar el equipo" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "¿Seguro que quieres abandonar este equipo?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Abandonando el equipo" @@ -3114,39 +3208,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Mover biblioteca" msgstr[1] "Mover bibliotecas" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Desplazamiento" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Transferir propiedad" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Si transfieres la propiedad, tu rol cambiará a Administración, perdiendo " "algunos permisos sobre este equipo. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Tienes la propiedad de este equipo. ¿Seguro que quieres transferir la " "propiedad del equipo a %s?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Nueva propiedad del equipo" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publicar" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Tu biblioteca está vacía. ¿Seguro que quieres publicarla?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Publicar biblioteca vacía" @@ -3201,21 +3295,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Actualizar componentes en biblioteca" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Actualizar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Cancelar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Vas a actualizar un componente en una biblioteca compartida. Esto puede " "afectar a otros archivos que la usen." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Actualizar un componente en biblioteca" @@ -3329,11 +3423,15 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Una nueva versión está disponible, por favor actualiza la página" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:825 +msgid "notifications.invitation-deleted" +msgstr "Invitación eliminada con éxito" + +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Invitación enviada con éxito" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Enlace de invitacion copiado" @@ -3483,7 +3581,7 @@ msgstr "" "No olvides incluir personas de desarrollo, diseño, gestión… la diversidad " "suma :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Invitar con el rol:" @@ -3698,193 +3796,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Ir al login" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Desvincular" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Varios" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Eliminar color" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Seleccionar elementos que usan este estilo" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Básicos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Panel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Modo visualización" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Área de trabajo" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Alineamiento" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Editar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Genérico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Genérico" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu principal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modificar capas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navegación" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navegación" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navegación" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Paneles" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Ruta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Textos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Herramientas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Añadir comentarios" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Añadir nodo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Alinear abajo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Alinear al centro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Alinear al centro horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Alinear justificado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Alinear a la izquierda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Alinear a la derecha" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Alinear arriba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Alinear al centro verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Crear tablero desde la selección" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Alternar negrita" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Diferencia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Exclusión" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Interescción" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Unión" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Enviar detrás" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Enviar al fondo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Mover al frente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Mover hacia adelante" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Limpiar historial" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copiar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Copiar enlace" @@ -3893,275 +3991,275 @@ msgstr "Copiar enlace" msgid "shortcuts.copy-props" msgstr "Copiar propiedades" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 msgid "shortcuts.create-component-variant" msgstr "Crear componente / variante" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Crear nuevo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Cortar" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Reducir zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Borrar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Borrar nodo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Desvincular componente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Tablero" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Dibujar nodos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Ruta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rectángulo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Texto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplicar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Cancelar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Exportar elementos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Zoom abarcar todo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Voltear horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Voltear verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Decrementar el tamaño de fuente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Incrementar el tamaño de fuente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Ir a borradores" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Ir a bibliotecas compartidas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Buscar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribuir horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Mostrar/ocultar interfaz" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Aumentar zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Insertar imagen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Alternar cursiva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Unir nodos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 msgid "shortcuts.line-through" msgstr "Alternar tachado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Convertir en esquina" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Convertir en curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Máscara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Fusionar nodos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Mover" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Mover rápidamente hacia abajo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Mover rápidamente hacia la izquierda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Mover rápidamente hacia la derecha" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Mover rápidamente hacia arriba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Mover nodo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Mover hacia abajo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Mover hacia la izquierda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Mover hacia la derecha" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Mover hacia arriba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Siguiente tablero" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "No hay resultados" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Opacidad 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Opacidad 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Opacidad 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Opacidad 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Opacidad 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Opacidad 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Opacidad 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Opacidad 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Opacidad 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Opacidad 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Abrir selector de color" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Comentarios" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Ir al dashboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Ir al inspector" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Ir a interacciones" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Ir al modo de visualización" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Ir al área de trabajo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " o " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Pegar" @@ -4175,191 +4273,191 @@ msgstr "Pegar propiedades" msgid "shortcuts.plugins" msgstr "Gestor de extensiones" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Tablero anterior" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Rehacer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Renombrar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Reiniciar zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Escalado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Buscar atajos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Seleccionar todo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Seleccionar capa siguiente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Seleccionar capa padre" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Seleccionar capa anterior" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Separar nodos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Mostrar rejilla a pixel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Mostrar atajos de teclado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Alinear nodos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Activar alineación a rejilla de pixel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Comenzar edición" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Comenzar medida" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Terminar medida" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Activar miniaturas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Atajos de teclado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Alternar alineación" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Mostrar/ocultar recursos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Mostrar/ocultar paleta de colores" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Mostrar/ocultar focus mode" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Activar/desactivar pantalla completa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Mostrar/ocultar guías" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Mostrar/ocultar histórico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Mostrar/ocultar capas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Añadir/eliminar flex layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Añadir/eliminar grid layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Bloquear/Desbloquear" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Bloquear/Desbloquear proporciones" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Mostrar/ocultar reglas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Alinear a las guías" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Alinear a las guías de reglas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Mostrar/ocultar paleta de textos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Cambiar tema" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Mostrar/ocultar elemento" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Alternar estilo de zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Alternar subrayado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Deshacer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Desagrupar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Deshacer máscara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribuir verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Decrementar zoom a objetivo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Incrementar zoom a objetivo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zoom a selección" @@ -4468,7 +4566,7 @@ msgstr "" msgid "subscription.dashboard.unlimited-members-extra-editors-cta-title" msgstr "Invita a personas mientras estás en el plan Unlimited" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "Mejora" @@ -4658,7 +4756,7 @@ msgstr "Factura mensual limitada en $175" msgid "subscription.settings.unlimited.storage-benefit" msgstr "25 GB de almacenamiento" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "Mejora tu plan" @@ -4731,19 +4829,19 @@ msgstr "Contraseña - Penpot" msgid "title.settings.profile" msgstr "Perfil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Invitaciones - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Integrantes - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Configuración - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -4815,43 +4913,43 @@ msgstr "Mostrar interacciones al hacer click" msgid "viewer.header.sitemap" msgstr "Mapa del sitio" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "El último envío fue correcto." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Alinear al centro (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribuir espacio horizontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Alinear a la izquierda (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Alinear a la derecha (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Alinear abajo (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Alinear al centro (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribuir espacio vertical (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Alinear arriba (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Añadir biblioteca" @@ -4860,23 +4958,23 @@ msgstr "Añadir biblioteca" msgid "workspace.assets.assets" msgstr "Recursos" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Todos" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Colores" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Añadir color" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:80 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:81 msgid "workspace.assets.component-group-options" msgstr "Opciones del grupo de componentes" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Componentes" @@ -4884,25 +4982,25 @@ msgstr "Componentes" msgid "workspace.assets.components.add-component" msgstr "Añadir componente" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s Variantes" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Crear un grupo" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Tus elementos se renombrarán automáticamente a \"nombre grupo / nombre " "elemento\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Borrar" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplicar" @@ -4910,11 +5008,11 @@ msgstr "Duplicar" msgid "workspace.assets.duplicate-main" msgstr "Duplicar principal" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Editar" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filtrar" @@ -4923,27 +5021,27 @@ msgstr "Filtrar" msgid "workspace.assets.graphics" msgstr "Gráficos" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Ver como rejilla" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nombre del grupo" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Ver como lista" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "biblioteca local" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Gestionar biblioteca" @@ -4955,15 +5053,15 @@ msgstr "No se encontraron recursos" msgid "workspace.assets.open-library" msgstr "Abrir el fichero de la biblioteca" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Renombrar" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Renombrar grupo" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Buscar recursos" @@ -4979,21 +5077,21 @@ msgstr[1] "%s elementos seleccionados" msgid "workspace.assets.shared-library" msgstr "Biblioteca compartida" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 componente" msgstr[1] "%s componentes" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Ordenar" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografías" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Añadir tipografía" @@ -5018,7 +5116,7 @@ msgstr "Interletrado" msgid "workspace.assets.typography.line-height" msgstr "Interlineado" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -5030,62 +5128,73 @@ msgstr "Estilos de texto" msgid "workspace.assets.typography.text-transform" msgstr "Transformar texto" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Desagrupar" -msgid "workspace.component.swap.loop-error" -msgstr "Los componentes no pueden anidarse dentro de sí mismos" +#: src/app/main/ui/workspace/colorpicker.cljs:431, src/app/main/ui/workspace/colorpicker.cljs:443 +msgid "workspace.colorpicker.color-tokens" +msgstr "Tokens de color" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:464 +msgid "workspace.component.swap.loop-error" +msgstr "Los componentes no pueden anidarse dentro de sí mismos." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:463 +msgid "workspace.component.switch.loop-error-multi" +msgstr "" +"Algunas copias no se han podido intercambiar. Los componentes no pueden " +"anidarse dentro de sí mismos." + +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Crear area" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Crear tablero" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Fusionar celdas" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Añadir 1 columna a la derecha" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Añadir 1 columna a la izquierda" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Borrar columna" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Borrar columna con el contenido" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Duplicar columna" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Añadir 1 fila debajo" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Añadir 1 fila encima" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Borrar fila" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Borrar fila con el contenido" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Duplicar fila" @@ -5093,7 +5202,7 @@ msgstr "Duplicar fila" msgid "workspace.focus.focus-mode" msgstr "Modo foco" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Desactivar modo foco" @@ -5113,11 +5222,11 @@ msgstr "Degradado lineal" msgid "workspace.gradients.radial" msgstr "Degradado radial" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Desactivar alineamiento dinámico" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Desactivar escala proporcional" @@ -5126,23 +5235,23 @@ msgstr "Desactivar escala proporcional" msgid "workspace.header.menu.disable-scale-text" msgstr "Desactivar escalar texto" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Desactivar alinear a las guias" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Desactivar ajuste al pixel" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Desactivar alinear a las guias de reglas" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Activar alineamiento dinámico" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Activar escala proporcional" @@ -5151,111 +5260,111 @@ msgstr "Activar escala proporcional" msgid "workspace.header.menu.enable-scale-text" msgstr "Activar escalar texto" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Alinear a las guias" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Activar ajuste al pixel" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Alinear a las guias de reglas" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Ocultar nombres de tableros" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Ocultar guías" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Ocultar paleta de colores" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Ocultar rejilla de pixeles" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Ocultar reglas" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Ocultar paleta de textos" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Editar" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Archivo" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Ayuda e información" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferencias" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Ver" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Rehacer" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Seleccionar todo" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Mostrar nombres de tableros" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Mostrar guías" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Mostrar paleta de colores" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Mostrar rejilla de pixeles" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Mostrar reglas" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Mostrar paleta de textos" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Cambiar a tema oscuro" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Cambiar a tema claro" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "Cambiar a tema del sistema" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Deshacer" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Restablecer" @@ -5271,7 +5380,7 @@ msgstr "Guardado" msgid "workspace.header.saving" msgstr "Guardando" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Compartir" @@ -5280,11 +5389,11 @@ msgstr "Compartir" msgid "workspace.header.unsaved" msgstr "Cambios sin guardar" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Modo de visualización (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zoom" @@ -5296,7 +5405,7 @@ msgstr "Escalar para rellenar" msgid "workspace.header.zoom-fit" msgstr "Escalar para ajustar" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Zoom abarcar todo" @@ -5304,43 +5413,43 @@ msgstr "Zoom abarcar todo" msgid "workspace.header.zoom-full-screen" msgstr "Pantalla completa" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zoom a selección" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Editar rejilla" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Salir" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Padding inferior" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Mostrar el padding a 4 lados" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Padding horizontal" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Padding izquierdo" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Padding derecho" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Padding superior" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Padding vertical" @@ -5356,7 +5465,7 @@ msgstr "Hecho" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Mostrar" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Mostrar grid layout" @@ -5365,9 +5474,11 @@ msgstr "Mostrar grid layout" msgid "workspace.libraries.add" msgstr "Añadir" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 +#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133 msgid "workspace.libraries.colors" -msgstr "%s colores" +msgid_plural "workspace.libraries.colors" +msgstr[0] "1 color" +msgstr[1] "%s colores" #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" @@ -5395,43 +5506,51 @@ msgstr "Colores recientes" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Complementario" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Guardar estilo de color" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 +#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125 msgid "workspace.libraries.components" -msgstr "%s componentes" +msgid_plural "workspace.libraries.components" +msgstr[0] "1 componente" +msgstr[1] "%s componentes" -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:349 +msgid "workspace.libraries.connected-to" +msgstr "Conectada con" + +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "O añadir algunas de éstas para probar:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "No hay Bibliotecas Compartidas en tu equipo, puedes buscar" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "algunas plantillas aquí" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Biblioteca del archivo" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 +#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129 msgid "workspace.libraries.graphics" -msgstr "%s gráficos" +msgid_plural "workspace.libraries.graphics" +msgstr[0] "1 gráfico" +msgstr[1] "%s gráficos" -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTECAS EN ESTE ARCHIVO" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTECAS" @@ -5440,11 +5559,11 @@ msgstr "BIBLIOTECAS" msgid "workspace.libraries.library" msgstr "BIBLIOTECA" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "ACTUALIZACIONES DE BIBLIOTECAS" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Cargando…" @@ -5453,51 +5572,53 @@ msgstr "Cargando…" msgid "workspace.libraries.more-templates" msgstr "Puedes buscar " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "No hay bibliotecas que necesiten ser actualizadas" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "No se encuentra “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Buscar bibliotecas compartidas" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "BIBLIOTECAS COMPARTIDAS" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Conectar biblioteca" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Varias tipografías" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Desvincular todas las tipografías" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 +#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137 msgid "workspace.libraries.typography" -msgstr "%s tipografías" +msgid_plural "workspace.libraries.typography" +msgstr[0] "1 tipografía" +msgstr[1] "%s tipografías" -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Desconectar biblioteca" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Actualizar" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "ver todos los cambios" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ACTUALIZACIONES" @@ -5505,31 +5626,31 @@ msgstr "ACTUALIZACIONES" msgid "workspace.notification-pill.detail" msgstr "Detalles" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Pulsa el botón + para añadir interacciones." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Añadir desenfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Eliminar desenfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Desenfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Desenfoque del grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Desenfoque de la selección" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Mostrar/ocultar desenfoque" @@ -5537,117 +5658,117 @@ msgstr "Mostrar/ocultar desenfoque" msgid "workspace.options.canvas-background" msgstr "Color de fondo" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Truncar contenido" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Componente" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Nota" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Copia" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Crear una nota" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Editar una nota" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Principal" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Intercambiar componente" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Aún no hay recursos en esta biblioteca" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "Desvinculado" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 msgid "workspace.options.component.variant.duplicated.copy.locate" msgstr "Localizar variantes en conflicto" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:496 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:509 msgid "workspace.options.component.variant.duplicated.copy.title" msgstr "" "Este componente tiene variantes en conflicto. Comprueba que cada variante " "tenga un conjunto único de propiedades y valores." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1246 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 msgid "workspace.options.component.variant.duplicated.group.locate" msgstr "Localizar variantes duplicadas" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1243 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1278 msgid "workspace.options.component.variant.duplicated.group.title" msgstr "Algunas variantes tienen propiedades y valores idénticos" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:267 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:268 msgid "workspace.options.component.variant.duplicated.single.all" msgstr "" "Estas variantes tienen propiedades y valores idénticos. Ajusta los valores " "para que puedan ser encontradas" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:264 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 msgid "workspace.options.component.variant.duplicated.single.one" msgstr "" "Esta variante tiene propiedades y valores idénticos a los de otra variante. " "Ajusta los valores para que puedan ser encontradas" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:270 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 msgid "workspace.options.component.variant.duplicated.single.some" msgstr "" "Algunas de estas variantes tienen propiedades y valores idénticos. Ajusta " "los valores para que puedan ser encontradas" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:486 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 msgid "workspace.options.component.variant.malformed.copy" msgstr "" "Este componente tiene variantes con nombres no válidos. Asegúrate de que " "cada variante siga la estructura correcta." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "Localizar variantes no válidas" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "Algunas variantes tienen nombres no válidos" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:489 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:502 msgid "workspace.options.component.variant.malformed.locate" msgstr "Localizar variantes inválidas" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "Estas variantes tienen nombres no válidos." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "Esta variante tiene un nombre no válido." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "Algunas de estas variantes tienen nombres no válidos." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[propiedad]=[valor], [propiedad]=[valor]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "Prueba a utilizar la siguiente estructura:" @@ -5691,7 +5812,7 @@ msgstr "Arriba" msgid "workspace.options.constraints.topbottom" msgstr "Arriba y Abajo" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Diseño" @@ -5704,21 +5825,21 @@ msgstr "Exportar" msgid "workspace.options.export-multiple" msgstr "Exportar selección" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Exportar 1 elemento" msgstr[1] "Exportar %s elementos" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Añadir exportación" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Eliminar exportación" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Sufijo" @@ -5726,7 +5847,7 @@ msgstr "Sufijo" msgid "workspace.options.exporting-complete" msgstr "Exportación completa" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exportando…" @@ -5738,27 +5859,27 @@ msgstr "Exportación fallida" msgid "workspace.options.exporting-object-slow" msgstr "Exportación lenta" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Relleno" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Añadir relleno" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Eliminar relleno" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Redimensionar para ajustar al contenido" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Añadir inicio de flujo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Flujo" @@ -5767,19 +5888,19 @@ msgstr "Flujo" msgid "workspace.options.flows.flow-start" msgstr "Inicio de flujo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Inicios de flujo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Eliminar flujo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automático" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Columnas" @@ -5788,7 +5909,7 @@ msgstr "Columnas" msgid "workspace.options.grid.grid-title" msgstr "Rejilla" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Color" @@ -5797,15 +5918,15 @@ msgstr "Color" msgid "workspace.options.grid.params.columns" msgstr "Columnas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Espaciado" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Altura" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margen" @@ -5814,7 +5935,7 @@ msgstr "Margen" msgid "workspace.options.grid.params.rows" msgstr "Filas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Establecer valor por defecto" @@ -5828,159 +5949,159 @@ msgstr "Tamaño" msgid "workspace.options.grid.params.type" msgstr "Tipo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Abajo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Izquierda" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Derecha" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Estirar" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Arriba" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Usar valor por defecto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Ancho" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Filas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Cuadros" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Relleno de grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Borde de grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Añadir guía" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Eliminar guía" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Guías" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Mostrar/ocultar guía" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Altura" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspeccionar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Acción" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Tiempo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animación" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Disolver" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Ninguno" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Empujar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Deslizar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "automático" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Añadir sombreado de fondo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Cerrar al pulsar fuera" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Cerrar superposición" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Cerrar superposición: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Tiempo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destino" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Duración" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linear" @@ -5989,47 +6110,47 @@ msgstr "Linear" msgid "workspace.options.interaction-in" msgstr "Dentro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Pasar encima" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Retirar encima" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navegar a" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navegar a: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(sin definir)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Offset effect" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "En click" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Superposición" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Superposición: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Abrir URL" @@ -6038,87 +6159,87 @@ msgstr "Abrir URL" msgid "workspace.options.interaction-out" msgstr "Fuera" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Abajo centro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Abajo izquierda" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Abajo derecha" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manual" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Arriba centro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Arriba izquierda" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Arriba derecha" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Posición" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Conservar posición de desplazamiento" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Pantalla anterior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relativo a" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "mismo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Alternar superpos." -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Alternar superpos.: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Disparador" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Mientras pasa encima" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Mientras pulsa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interacciones" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Añadir interacción" @@ -6127,67 +6248,67 @@ msgstr "Añadir interacción" msgid "workspace.options.interactions.remove-interaction" msgstr "Eliminar interacción" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Color" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Color más oscuro" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Color más suave" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Oscurecer" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Diferencia" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Exclusión" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Luz fuerte" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Tono" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Aclarar" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminosidad" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiplicar" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Superponer" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturación" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Trama" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Luz suave" @@ -6206,7 +6327,7 @@ msgstr "Capas de grupo" msgid "workspace.options.layer-options.title.multiple" msgstr "Capas seleccionadas" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Mostrar/ocultar capa" @@ -6215,19 +6336,19 @@ msgstr "Mostrar/ocultar capa" msgid "workspace.options.layout-item.advanced-ops" msgstr "Opciones avanzadas" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Altura.Max" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Ancho.Max" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Altura.Min" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Ancho.Min" @@ -6341,15 +6462,15 @@ msgstr "espaciar" msgid "workspace.options.layout.top" msgstr "Arriba" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Más colores" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Más colores de la biblioteca" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacidad" @@ -6358,35 +6479,35 @@ msgstr "Opacidad" msgid "workspace.options.position" msgstr "Posición" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototipo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Radio" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Abajo izquierda" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Abajo derecha" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Arriba izquierda" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Arriba derecha" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Colapsar radios individuales" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Mostrar radios individuales" @@ -6398,7 +6519,7 @@ msgstr "Recientes" msgid "workspace.options.retry" msgstr "Reintentar" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotación" @@ -6406,33 +6527,33 @@ msgstr "Rotación" msgid "workspace.options.search-font" msgstr "Buscar fuente" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Selecciona una figura, tablero o grupo para arrastrar una conexión a otro " "tablero." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Colores seleccionados" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Relleno de selección" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Borde de selección" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Añadir sombra" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Desenfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Color de sombra" @@ -6444,63 +6565,64 @@ msgstr "Sombra arrojada" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Sombra interior" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Eliminar sombra" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Difusión" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Sombra" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Sombra del grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Sombras de la seleccíón" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Mostrar/ocultar sombra" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Mostrar al exportar" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Mostrar en modo visualización" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Tamaño" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Tamaños predefinidos" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "Bloquear proporción" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "Desbloquear proporción" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Borde" @@ -6509,7 +6631,7 @@ msgstr "Borde" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Marcador círculo" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Círculo" @@ -6518,7 +6640,7 @@ msgstr "Círculo" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Marcador diamante" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamante" @@ -6527,19 +6649,19 @@ msgstr "Diamante" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Flecha de línea" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Flecha" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Ninguno" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Redondo" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Cuadrado" @@ -6548,7 +6670,7 @@ msgstr "Cuadrado" msgid "workspace.options.stroke-cap.square-marker" msgstr "Marcador cuadrado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Rectángulo" @@ -6557,83 +6679,83 @@ msgstr "Rectángulo" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Flecha triángulo" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Triángulo" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Color del trazo" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Ancho del trazo" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Añadir color de borde" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Rayado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Punteado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Interior" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Mezclado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Exterior" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Eliminar borde" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Sólido" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Alinear abajo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Alinear al centro" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Alinear arriba" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Alto automático" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Ancho automático" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fijo" @@ -6655,35 +6777,35 @@ msgstr "Minúsculas" msgid "workspace.options.text-options.none" msgstr "Nada" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Tachado (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Alinear al centro" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Justificar" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Alinear a la izquierda" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Alinear a la derecha" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Texto" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Texto de grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Texto de selección" @@ -6692,7 +6814,7 @@ msgstr "Texto de selección" msgid "workspace.options.text-options.titlecase" msgstr "Título" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Subrayado (%s)" @@ -6701,19 +6823,19 @@ msgstr "Subrayado (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Mayúsculas" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Usa el botón de play de la cabecera para arrancar la vista de prototipo." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Ancho" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "eje X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "eje Y" @@ -6757,82 +6879,82 @@ msgstr "Separar nodos (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Alinear nodos (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Abrir" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Descubre [más extensiones](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "No se encuentran extensiones" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "El manifiesto de la expansión es incorrecto." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Debes ser un editor para usar este plugin" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "La extensión no existe o la url no es correcta." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Instalar" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Extensiones instaladas" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Gestor de extensiones" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Extensiones" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "EXTENSIÓN ACTUALIZADA" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "La extensión ha cambiado desde la última vez que la abriste. Ahora quiere " "acceder a:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Comenzar descargas de ficheros." -#: src/app/main/ui/workspace/plugins.cljs:285 +#: src/app/main/ui/workspace/plugins.cljs:286 msgid "workspace.plugins.permissions.allow-localstorage" msgstr "Guardar datos en el navegador." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Leer tus comentarios y respuestas." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Leer y modificar tus comentarios y responder en tu nombre." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Leer el contenido de sus archivos." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Leer y modificar el contenido de sus archivos." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Ten en cuenta que las extensiones están desarrolladas por terceros, " @@ -6840,31 +6962,31 @@ msgstr "" "seguridad es importante para nosotros. Si tienes cualquier duda, contacta " "con soporte." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Leer la información de sus bibliotecas y recursos." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Leer y modificar la información de sus bibliotecas y recursos." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "LA EXTENSIÓN '%s' SOLICITA PERMISO PARA ACCEDER:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Leer la información del usuario actual." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Lista de extensiones" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Eliminar extensión" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Intruduzca URL de la extensión" @@ -6872,26 +6994,26 @@ msgstr "Intruduzca URL de la extensión" msgid "workspace.plugins.success" msgstr "Extensión cargada correctamente." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Extensiones" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "AHORA NO" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "¿Quieres echar un vistazo?. Crearemos un nuevo borrador en tu equipo " "actual. (Si no, puedes encontrar los plugins instalados en cualquier " "fichero.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "¡LA EXTENSIÓN '%s' HA SIDO INSTALADA PARA TU USUARIO!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "PROBAR PLUGIN" @@ -6903,15 +7025,15 @@ msgstr "Añadir flex layout" msgid "workspace.shape.menu.add-grid" msgstr "Añadir grid layout" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Añadir layout" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Crear variante" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "Añadir nueva propiedad" @@ -6923,11 +7045,11 @@ msgstr "Enviar al fondo" msgid "workspace.shape.menu.backward" msgstr "Enviar atrás" -#: src/app/main/ui/workspace/context_menu.cljs:615, src/app/main/ui/workspace/sidebar/assets/components.cljs:638, src/app/main/ui/workspace/sidebar/assets/groups.cljs:74, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1021 +#: src/app/main/ui/workspace/context_menu.cljs:617, src/app/main/ui/workspace/sidebar/assets/components.cljs:634, src/app/main/ui/workspace/sidebar/assets/groups.cljs:75, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1041 msgid "workspace.shape.menu.combine-as-variants" msgstr "Combinar como variantes" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:640 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:636 msgid "workspace.shape.menu.combine-as-variants-error" msgstr "Los componentes tienen que estar en la misma página" @@ -6963,7 +7085,7 @@ msgstr "Copiar como SVG" msgid "workspace.shape.menu.copy-text" msgstr "Copiar como texto" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Crear una nota" @@ -6971,11 +7093,11 @@ msgstr "Crear una nota" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Tablero de selección" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Crear componente" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Crear múltiples componentes" @@ -6983,7 +7105,7 @@ msgstr "Crear múltiples componentes" msgid "workspace.shape.menu.cut" msgstr "Cortar" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Eliminar" @@ -6991,15 +7113,15 @@ msgstr "Eliminar" msgid "workspace.shape.menu.delete-flow-start" msgstr "Eliminar inicio de flujo" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Desvincular instancia" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Desvincular instancias" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Diferencia" @@ -7011,11 +7133,11 @@ msgstr "Duplicar" msgid "workspace.shape.menu.edit" msgstr "Editar" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Exclusión" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Aplanar" @@ -7048,19 +7170,19 @@ msgstr "Ir al archivo del componente principal" msgid "workspace.shape.menu.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Ocultar" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Mostrar/Ocultar Interfaz" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Intersección" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Bloquear" @@ -7068,7 +7190,7 @@ msgstr "Bloquear" msgid "workspace.shape.menu.mask" msgstr "Crear máscara" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Pegar" @@ -7088,15 +7210,15 @@ msgstr "Eliminar flex layout" msgid "workspace.shape.menu.remove-grid" msgstr "Eliminar grid layout" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Eliminar layout" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "Eliminar propiedad" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1221 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1256 msgid "workspace.shape.menu.remove-variant-property.last-property" msgstr "La variante debe tener al menos una propiedad" @@ -7104,15 +7226,15 @@ msgstr "La variante debe tener al menos una propiedad" msgid "workspace.shape.menu.rename" msgstr "Renombrar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Deshacer modificaciones" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Restaurar componente principal" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "Restaurar variante" @@ -7120,15 +7242,15 @@ msgstr "Restaurar variante" msgid "workspace.shape.menu.select-layer" msgstr "Seleccionar capa" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Mostrar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Ver en el panel de recursos" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Ver componente principal" @@ -7141,6 +7263,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Poner como miniatura" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Convertir en vector" @@ -7148,11 +7271,11 @@ msgstr "Convertir en vector" msgid "workspace.shape.menu.ungroup" msgstr "Desagrupar" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Unión" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Desbloquear" @@ -7165,7 +7288,7 @@ msgstr "Quitar máscara" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Actualizar componentes" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Actualizar componente principal" @@ -7177,11 +7300,11 @@ msgstr "Cerrar barra lateral" msgid "workspace.sidebar.expand" msgstr "Abrir barra lateral" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Historial" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Capas" @@ -7221,11 +7344,11 @@ msgstr "Textos" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Atributos del SVG Importado" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Páginas" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Añadir página" @@ -7242,23 +7365,23 @@ msgstr "%s temas activos" msgid "workspace.tokens.add set" msgstr "Añadir set" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Añadir nuevo tema" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "Añadir un set a este grupo" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "Añadir token: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Aplicado a" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Volver al listado de temas" @@ -7280,19 +7403,25 @@ msgstr "Elige archivo" msgid "workspace.tokens.choose-folder" msgstr "Elige carpeta" +#: src/app/main/data/workspace/tokens/errors.cljs:97 +msgid "workspace.tokens.composite-line-height-needs-font-size" +msgstr "" +"El Line Height depende del Font Size. Añade un Font Size para obtener el " +"valor computado." + #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:53 msgid "workspace.tokens.create-new-theme" msgstr "Crea un nuevo tema ahora." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Crear uno." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Crear un token de %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Eliminar token" @@ -7300,19 +7429,19 @@ msgstr "Eliminar token" msgid "workspace.tokens.delete-theme-title" msgstr "Borrar theme" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Duplicar token" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "copiar" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Editar token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Editar tema" @@ -7320,15 +7449,15 @@ msgstr "Editar tema" msgid "workspace.tokens.edit-themes" msgstr "Editar temas" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:551 msgid "workspace.tokens.edit-token" -msgstr "Editar token" +msgstr "Editar token de %s" #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "El valor del token no puede estar vacío" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Introduce un nombre para el token %s" @@ -7356,15 +7485,19 @@ msgstr "Previsualizar:" msgid "workspace.tokens.export.single-file" msgstr "fichero único" -#: src/app/main/data/workspace/tokens/application.cljs:366 +#: src/app/main/data/workspace/tokens/application.cljs:292 msgid "workspace.tokens.font-variant-not-found" msgstr "" "Error al configurar el font-weight/style de la fuente. Este estilo de " "fuente no existe en la fuente actual." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:877, src/app/main/ui/workspace/tokens/management/create/form.cljs:889 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1024, src/app/main/ui/workspace/tokens/management/create/form.cljs:1039 msgid "workspace.tokens.font-weight-value-enter" -msgstr "Introduce un valor (300, Bold, Regular Italic...) o un {alias}" +msgstr "Font weight (300, Bold, Regular Italic...) o un {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs +msgid "workspace.tokens.font-size-value-enter" +msgstr "Font size o {alias}" #: src/app/main/ui/workspace/tokens/style_dictionary.cljs #, unused @@ -7384,19 +7517,19 @@ msgstr "La agrupación de sets aun no está soportada." msgid "workspace.tokens.import-error" msgstr "Error al importar:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "" "En multiples archivos, el nombre o la ruta del archivo serán los nombres de " "los sets." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "" "En un archivo JSON único, las claves de primer nivel deben ser los nombres " "de los sets de tokens." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "Import tokens" @@ -7405,7 +7538,7 @@ msgstr "Import tokens" msgid "workspace.tokens.import-tooltip" msgstr "Al importar un fichero JSON sobreescribirás todos tus tokens, sets y themes" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "Al importar tokens sobreescribirás todos tus tokens, sets y themes." @@ -7419,6 +7552,10 @@ msgstr "" "Este set no está activo. Cambia el tema o activa este set para ver los " "cambios en el viewport" +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:711 +msgid "workspace.tokens.individual-tokens" +msgstr "Usa tokens individuales" + #: src/app/main/data/workspace/tokens/errors.cljs:49 msgid "workspace.tokens.invalid-color" msgstr "Valor de color inválido: %s" @@ -7445,6 +7582,10 @@ msgstr "" "Los nombres de token solo pueden contener letras y dígitos separados por " "caracteres . y no pueden empezar con un signo $." +#: src/app/main/data/workspace/tokens/errors.cljs:93 +msgid "workspace.tokens.invalid-token-value-typography" +msgstr "Valor no válido: debe hacer referencia a un token tipográfico compuesto." + #: src/app/main/data/workspace/tokens/errors.cljs:61, src/app/main/data/workspace/tokens/errors.cljs:73, src/app/main/data/workspace/tokens/errors.cljs:77 msgid "workspace.tokens.invalid-value" msgstr "Valor de token no válido: %s" @@ -7465,11 +7606,19 @@ msgstr "Tema" msgid "workspace.tokens.label.theme-placeholder" msgstr "Añade un Tema (p. ej. Claro)" +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1047 +msgid "workspace.tokens.letter-spacing-value-enter-composite" +msgstr "Letter spacing o {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1043 +msgid "workspace.tokens.line-height-value-enter" +msgstr "Line height (multiplicador, px o %) o {alias}" + #: src/app/main/data/workspace/tokens/errors.cljs:57 msgid "workspace.tokens.missing-references" msgstr "Referéncias de tokens no encontradas:" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:148 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:123 msgid "workspace.tokens.more-options" msgstr "Click derecho para ver opciones" @@ -7481,7 +7630,7 @@ msgstr "No hay sets activos" msgid "workspace.tokens.no-active-theme" msgstr "No hay temas activos" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Debes ser editor para activar / desactivar sets" @@ -7489,7 +7638,7 @@ msgstr "Debes ser editor para activar / desactivar sets" msgid "workspace.tokens.no-permission-themes" msgstr "Debes ser editor para usar temas" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Aun no hay sets definidos. Crea uno primero" @@ -7513,12 +7662,12 @@ msgstr "Valor de token no valido. El valor resuelto es muy grande: %s" msgid "workspace.tokens.opacity-range" msgstr "La opacidad debe estar entre 0 y 100% o 0 y 1 (p.e. 50% o 0.5)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Valor original: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "La referencia no es válida o no se encuentra en ningún set activo." @@ -7527,7 +7676,7 @@ msgstr "La referencia no es válida o no se encuentra en ningún set activo." msgid "workspace.tokens.reference-error" msgstr "Errores en referencias: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Valor resuelto: %s" @@ -7536,7 +7685,7 @@ msgstr "Valor resuelto: %s" msgid "workspace.tokens.save-theme" msgstr "Guardar tema" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Selecciona set" @@ -7544,11 +7693,11 @@ msgstr "Selecciona set" msgid "workspace.tokens.self-reference" msgstr "El token tiene una autoreferencia" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "Añade un nombre - usa '/' para grupos" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "Define que sets de tokens deberian formar parte de este tema:" @@ -7575,18 +7724,22 @@ msgstr "Configuración de tokens" msgid "workspace.tokens.stroke-width-range" msgstr "Stroke width debe ser mayor o igual a 0." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:865, src/app/main/ui/workspace/tokens/management/create/form.cljs:895 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1012, src/app/main/ui/workspace/tokens/management/create/form.cljs:1051 msgid "workspace.tokens.text-case-value-enter" -msgstr "Introduce: none | uppercase | lowercase | capitalize o {alias}" +msgstr "none | uppercase | lowercase | capitalize o {alias}" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:871, src/app/main/ui/workspace/tokens/management/create/form.cljs:898 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1018, src/app/main/ui/workspace/tokens/management/create/form.cljs:1055 msgid "workspace.tokens.text-decoration-value-enter" -msgstr "Introduce text decoration: none | underline | strike-through" +msgstr "none | underline | strike-through o {alias}" #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:130 msgid "workspace.tokens.theme-name" msgstr "Tema %s" +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:48 +msgid "workspace.tokens.theme-name-already-exists" +msgstr "Ya existe un tema con este nombre" + #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:96 msgid "workspace.tokens.themes-description" msgstr "" @@ -7597,29 +7750,44 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "Lista de temas" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Descripción" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Nombre" +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 +msgid "workspace.tokens.token-name-validation-error" +msgstr "" +" es un nombre de token no válido.\n" +"Los nombres de token deben contener letras o dígitos separados por . " +"y no deben empezar con el símbolo $." + #: src/app/main/ui/workspace/tokens/style_dictionary.cljs:259 #, unused msgid "workspace.tokens.token-not-resolved" msgstr "No se pudo resolver el token de referencia con el nombre: %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs +msgid "workspace.tokens.token-name-duplication-validation-error" +msgstr "Ya existe un token en la ruta: %s" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs +msgid "workspace.tokens.token-name-length-validation-error" +msgstr "El nombre debería ser de al menos 1 caracter" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Valor" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "Introduce un valor o un alias usando {alias}" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Herramientas" @@ -7633,7 +7801,11 @@ msgstr "" msgid "workspace.tokens.unknown-token-type-section" msgstr "El tipo '%s' no está soportado (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:715 +msgid "workspace.tokens.use-reference" +msgstr "Usa una referencia" + +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "El valor no es válido" @@ -7641,11 +7813,11 @@ msgstr "El valor no es válido" msgid "workspace.tokens.value-with-units" msgstr "Valor no válido: No se permiten unidades." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "Al renombrar este token se romperán las referencias al nombre anterior" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Recursos" @@ -7653,7 +7825,7 @@ msgstr "Recursos" msgid "workspace.toolbar.color-palette" msgstr "Paleta de colores (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Comentarios (%s)" @@ -7864,19 +8036,19 @@ msgstr "Operación sobre %s" msgid "workspace.undo.title" msgstr "Histórico" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Ignorar" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Más información" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Hay actualizaciones en bibliotecas compartidas" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Actualizar" @@ -7936,11 +8108,11 @@ msgstr "¿Quieres restaurar esta versión?" msgid "workspace.versions.snapshot-menu" msgstr "Abrir menu de versiones" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Acciones" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Histórico" diff --git a/frontend/translations/es_419.po b/frontend/translations/es_419.po index b4b362f627..672d621652 100644 --- a/frontend/translations/es_419.po +++ b/frontend/translations/es_419.po @@ -144,7 +144,7 @@ msgstr "Crea una cuenta" msgid "auth.sidebar-tagline" msgstr "La solución de código abierto para diseño y creación de prototipos." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Términos de servicio" @@ -163,7 +163,7 @@ msgstr "Hemos enviado un correo electrónico de verificación" msgid "branding-illustrations-marketing-pieces" msgstr "...marca, ilustraciones, piezas de marketing, etc." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publicar" @@ -235,7 +235,7 @@ msgstr "Compartir prototipos" msgid "common.share-link.view-all" msgstr "Seleccionar todo" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Despublicar" @@ -356,7 +356,7 @@ msgstr "El token caducará el %s" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "El token no tiene fecha de vencimiento" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Agregar como biblioteca compartida" @@ -364,27 +364,27 @@ msgstr "Agregar como biblioteca compartida" msgid "dashboard.change-email" msgstr "Cambiar el correo electrónico" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copiar)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Crear nuevo equipo" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Tu Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Eliminar equipo" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Descargar el archivo Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Descargar archivo estándar (.svg + .json)" @@ -400,7 +400,7 @@ msgstr "Duplicar %s archivos" msgid "dashboard.export-binary-multi" msgstr "Descargar %s archivos Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exportar tableros como PDF" @@ -416,7 +416,7 @@ msgstr "Exportar %s archivos de Penpot" msgid "dashboard.export-multiple.selected" msgstr "%s de %s elementos seleccionados" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportar" @@ -494,11 +494,11 @@ msgstr "Subiendo datos al servidor (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Subiendo archivo: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Invitar a la gente" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "dejar el equipo" @@ -510,7 +510,7 @@ msgstr "Bibliotecas y plantillas" msgid "dashboard.libraries-and-templates.explore" msgstr "Explore más de ellos y sepa cómo contribuir" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Hubo un problema al importar la plantilla. La plantilla no fue importada." @@ -542,7 +542,7 @@ msgstr "Pasar a otro equipo" msgid "dashboard.new-file" msgstr "+ Nuevo archivo" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Archivo nuevo" @@ -550,7 +550,7 @@ msgstr "Archivo nuevo" msgid "dashboard.new-project" msgstr "+ Nuevo proyecto" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nuevo proyecto" @@ -558,7 +558,7 @@ msgstr "Nuevo proyecto" msgid "dashboard.no-matches-for" msgstr "No se encontraron coincidencias para \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Los proyectos fijados aparecerán aquí" @@ -566,10 +566,9 @@ msgstr "Los proyectos fijados aparecerán aquí" msgid "dashboard.notifications.email-changed-successfully" msgstr "Su dirección de correo electrónico se ha actualizado correctamente" -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused +#: src/app/main/ui/workspace/tokens/management/create/form.cljs msgid "errors.field-max-length" -msgstr "El nombre debe contener como máximo 1 caracter." +msgstr "El nombre debe contener como máximo %s caracteres." #: src/app/main/ui/settings/team-form.cljs, src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/settings/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs #, unused diff --git a/frontend/translations/eu.po b/frontend/translations/eu.po index c5d13a6f7f..f6728dfbdc 100644 --- a/frontend/translations/eu.po +++ b/frontend/translations/eu.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Mikel Larreategi \n" -"Language-Team: Basque " -"\n" +"Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -142,7 +142,7 @@ msgstr "Sortu kontua" msgid "auth.sidebar-tagline" msgstr "Diseinuak eta prototipoak egiteko kode irekiko soluzioa." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Zerbitzuaren erabilpen-baldintzak" @@ -150,7 +150,7 @@ msgstr "Zerbitzuaren erabilpen-baldintzak" msgid "auth.verification-email-sent" msgstr "Egiaztapen mezu bat bidali dugu helbide honetara" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Argitaratu" @@ -220,7 +220,7 @@ msgstr "Partekatu prototipoak" msgid "common.share-link.view-all" msgstr "Aukeratu guztiak" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Argitaraketa atzera bota" @@ -270,7 +270,7 @@ msgstr "Hasi" msgid "dasboard.walkthrough-hero.title" msgstr "Interfazea ezagutu" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Gehitu partekatutako liburutegi bezala" @@ -278,27 +278,27 @@ msgstr "Gehitu partekatutako liburutegi bezala" msgid "dashboard.change-email" msgstr "Eposta aldatu" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopia)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Sortu talde berria" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Zure Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Ezabatu taldea" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Deskargatu Penpot fitxategia (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Deskargatu fitxategi estandarra (.svg + .json)" @@ -314,7 +314,7 @@ msgstr "%s fitxategi bizkoiztu" msgid "dashboard.export-binary-multi" msgstr "Deskargatu %s Penpot fitxategi (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Esportatu arbelak PDFra" @@ -330,7 +330,7 @@ msgstr "Esportatu %s Penpot fitxategi" msgid "dashboard.export-multiple.selected" msgstr "Aukeratutakoak: %s / %s" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Esportatu" @@ -499,11 +499,11 @@ msgstr "Datuak zerbitzarira bidaltzen (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Fitxategia bidaltzen: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Gonbidatu taldera" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Utzi taldea" @@ -515,7 +515,7 @@ msgstr "Liburutegi eta txantiloiak" msgid "dashboard.libraries-and-templates.explore" msgstr "Gehiago ikusi eta ikasi nola lagundu" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Arazo bat egon da txantiloia inportatzean. Ezin izan da inportatu." @@ -547,7 +547,7 @@ msgstr "Mugitu beste talde batera" msgid "dashboard.new-file" msgstr "+ Fitxategi berria" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Fitxategi berria" @@ -555,7 +555,7 @@ msgstr "Fitxategi berria" msgid "dashboard.new-project" msgstr "+ Proiektu berria" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Proiektu berria" @@ -563,7 +563,7 @@ msgstr "Proiektu berria" msgid "dashboard.no-matches-for" msgstr "Ez da \"%s\" aurkitu" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Ainguratutako proiektuak hemen agertuko dira" @@ -579,7 +579,7 @@ msgstr "Zure eposta helbidea egiaztatu egin da" msgid "dashboard.notifications.password-saved" msgstr "Pasahitza ondo gorde da!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s kide" @@ -595,7 +595,7 @@ msgstr "Aukerak" msgid "dashboard.password-change" msgstr "Aldatu pasahitza" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Ainguratu/Desainguratu" @@ -616,7 +616,7 @@ msgstr "Ezabatu partekatutako liburutegi gisa" msgid "dashboard.save-settings" msgstr "Gorde aukerak" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Bilatu…" @@ -652,7 +652,7 @@ msgstr "Zure fitxategia ondo bikoiztu da" msgid "dashboard.success-duplicate-project" msgstr "Zure proiektua ondo bikoiztu da" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Zure fitxategia ondo mugitu da" @@ -664,15 +664,15 @@ msgstr "Zure fitxategiak ondo mugitu dira" msgid "dashboard.success-move-project" msgstr "Zure proiektua ondo mugitu da" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Taldearen informazioa" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Taldekideak" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Taldearen proiektuak" @@ -688,7 +688,7 @@ msgstr "Bilaketaren emaitzak" msgid "dashboard.type-something" msgstr "Idatzi bilaktzeko zerbaitu" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Atzera bota liburutegia argitaratzea" @@ -696,37 +696,37 @@ msgstr "Atzera bota liburutegia argitaratzea" msgid "dashboard.update-settings" msgstr "Eguneratu aukerak" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Aktibo" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Webhook hau aktibatzen denean gertaeraren xehetasunak bidaliko dira" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Elementu mota" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Sortu webhooka" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhooka ondo sortu da." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhookak beste webgune batzuei Penpoten zerbait gertatu dela jakinarazteko " "modu bat dira. Adierazitako URLtara POST eskaera bat bidaliko dugu." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Sakatu \"Sortu webhooka\" botoia bat gehitzeko." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Ez dago webhookik." @@ -746,7 +746,7 @@ msgstr "Eposta" msgid "dashboard.your-name" msgstr "Izena" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Zure Penpot" @@ -762,11 +762,11 @@ msgstr "Oharra" msgid "ds.component-subtitle" msgstr "Eguneratzeko dauden osagaiak:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Utzi" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ados" @@ -806,11 +806,11 @@ msgstr "Eposta helbide hori egiaztatuta dago." msgid "errors.email-as-password" msgstr "Ezin duzu zure eposta helbidea pasahitz gisa erabiliz" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "«%s» helbideak ez ditu mezuak ondo jasotzen, itzuli egiten ditu." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "" "«%s» helbideak ez ditu mezuak ondo jasotzen, itzuli egiten ditu edo " @@ -827,7 +827,7 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Ezaugarria ezin da erabili: '%s'." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Erroreren bat gertatu da." @@ -860,7 +860,7 @@ msgstr "Gonbidapen hau bertan behera utzi dute edo iraungi egin da." msgid "errors.ldap-disabled" msgstr "LDAP bidez sartzea desgaituta dago." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "" "Kuotaren maximora heldu zara: '%s'. Jarri kontaktuan laguntza " @@ -878,7 +878,7 @@ msgstr "Irudiaren edukia eta luzapena bat ez datozela dirudi." msgid "errors.media-type-not-allowed" msgstr "Irudia zuzena ez dela dirudi." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Gonbidatzen ari zaren profilak ez ditu eposta bidezko mezuak jasotzen (spam " @@ -898,7 +898,7 @@ msgstr "Pasahitzak gutxienez 8 karaktere izan behar ditu" msgid "errors.profile-blocked" msgstr "Profila blokeatuta dago" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Zure profilak ez ditu eposta mezuak jasotzen (spam gisa markatu delako edo " @@ -908,17 +908,17 @@ msgstr "" msgid "errors.registration-disabled" msgstr "Erregistroa desgaituta dago." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Ez dago taldetik irteteko behar beste kide, seguru aski ezabatu egin nahiko " "duzu." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Izendatu nahi duzun kidea ez da existitzen." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Jabea ezin da taldetik irten, jabetza beste pertsona bati eman behar diozu." @@ -930,31 +930,31 @@ msgstr "Errore bat gertatut da." msgid "errors.unexpected-token" msgstr "Tokena ez da zuzena" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Konexio errorea, URLa ezin da ireki" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URLak ez du balidazioa gainditu." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Errore bat gertatu da azken bidalketan." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Errorea gertatu da SSL balidazioan." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Denbora muga gainditu da" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Errore ezezaguna balidazioan" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Espero ez zen egoera %s" @@ -1016,19 +1016,19 @@ msgstr "Errore bat gertatu da" msgid "inspect.attributes.blur" msgstr "Desenfokatuta" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Balioa" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1036,7 +1036,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Betegarria" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Deskargatu jatorrizko irudia" @@ -1130,77 +1130,80 @@ msgstr "Solidoa" msgid "inspect.attributes.stroke.width" msgstr "Zabalera" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Letra-tipo" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Letra-tipo familia" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Letra-tipoaren tamaina" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Letra-tipoaren estiloa" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Letra tipoaren lodiera" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Hizkien tartea" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Lerroartea" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Testuaren apainketa" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Bat ere ez" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Azpimarratu" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Testua eraldatu" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Lehenengoa letra larriz" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Letra xeheak" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Bat ere ez" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Letra larriz" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Diseinua ikuskatzeari buruz gehiago jakin nahi baduzu zoaz Penpoten " "laguntza zentrora" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Informazio gehiago ikuskatzeari buruz" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Aukeratu forma bat, taula bat edo talde bat beren propietateak eta kodea " @@ -1262,7 +1265,7 @@ msgstr "Testua" msgid "inspect.tabs.info" msgstr "Informazioa" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Lasterteklak" @@ -1270,7 +1273,7 @@ msgstr "Lasterteklak" msgid "labels.accept" msgstr "Onartu" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktibo" @@ -1278,11 +1281,11 @@ msgstr "Aktibo" msgid "labels.add-custom-font" msgstr "Gehitu letra-tipo pertsonalizatua" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Kudeaketa" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Guztia" @@ -1305,19 +1308,19 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Zerbitzariaren errorea (Bad Gateway)" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Utzi" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Itxi" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Iruzkinak" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Komunitatea" @@ -1325,7 +1328,7 @@ msgstr "Komunitatea" msgid "labels.confirm-password" msgstr "Berretsi pasahitza" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Jarraitu" @@ -1337,11 +1340,11 @@ msgstr "Honekin jarraitu" msgid "labels.continue-with-penpot" msgstr "Penpot kontu batekin jarraitu dezakezu" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Kopiatu esteka" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Sortu" @@ -1361,7 +1364,7 @@ msgstr "Pertsonalizatutako letra-tipoak" msgid "labels.dashboard" msgstr "Lanlekua" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Ezabatu" @@ -1373,7 +1376,7 @@ msgstr "Ezabatu iruzkina" msgid "labels.delete-comment-thread" msgstr "Ezabatu haria" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Ezabatu gonbidapena" @@ -1381,11 +1384,11 @@ msgstr "Ezabatu gonbidapena" msgid "labels.delete-multi-files" msgstr "Ezabatu %s fitxategi" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Zirriborroak" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Editatu" @@ -1393,15 +1396,15 @@ msgstr "Editatu" msgid "labels.edit-file" msgstr "Editatu fitxategia" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Edizioa" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Iraungita" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Esportatu" @@ -1425,15 +1428,15 @@ msgstr "Letra-tipo hornitzaileak" msgid "labels.font-variants" msgstr "Estiloak" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Letra-tipoak" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "GitHubeko errepositorioa" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Eman zure iritzia" @@ -1441,15 +1444,15 @@ msgstr "Eman zure iritzia" msgid "labels.go-back" msgstr "Itzuli" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Laguntza zentroa" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Ezkutatu ebatzitzako iruzkinak" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inaktibo" @@ -1467,7 +1470,7 @@ msgstr "" msgid "labels.internal-error.main-message" msgstr "Barneko errorea" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Gonbidapenak" @@ -1475,7 +1478,7 @@ msgstr "Gonbidapenak" msgid "labels.language" msgstr "Hizkuntzak" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Liburutegi eta Txantiloiak" @@ -1483,15 +1486,15 @@ msgstr "Liburutegi eta Txantiloiak" msgid "labels.log-or-sign" msgstr "Sartu edo eman izena" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Irten" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Kidea" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Kideak" @@ -1499,11 +1502,11 @@ msgstr "Kideak" msgid "labels.new-password" msgstr "Pasahitz berria" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Ez duzu iruzkinen inguruko jakinarazpenik." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Ez dago gonbidapenik." @@ -1516,7 +1519,7 @@ msgstr "Orrialde hau ez da existitzen edo ez duzu ikusteko baimenik." msgid "labels.not-found.main-message" msgstr "Atx!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "Fitxategi 1" @@ -1528,7 +1531,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "Arbel 1" msgstr[1] "%s arbel" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "Proiektu 1" @@ -1547,7 +1550,7 @@ msgstr "Zureak bakarrik" msgid "labels.or" msgstr "edo" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Jabea" @@ -1555,7 +1558,7 @@ msgstr "Jabea" msgid "labels.password" msgstr "Pasahitza" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Zain" @@ -1563,11 +1566,11 @@ msgstr "Zain" msgid "labels.profile" msgstr "Profila" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Proiektuak" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Bertsioaren oharrak" @@ -1581,11 +1584,11 @@ msgstr "Birkargatu fitxategia" msgid "labels.remove" msgstr "Kendu" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Kendu kidea" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Berrizendatu" @@ -1593,7 +1596,7 @@ msgstr "Berrizendatu" msgid "labels.rename-team" msgstr "Berrizendatu taldea" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Birbidali gonbidapena" @@ -1601,11 +1604,11 @@ msgstr "Birbidali gonbidapena" msgid "labels.retry" msgstr "Berriz saiatu" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rola" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Gorde" @@ -1629,7 +1632,7 @@ msgstr "Gure sistemaren programatutako mantentze-lanak egiten ari gara." msgid "labels.service-unavailable.main-message" msgstr "Zerbitzua ez dago martxan" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Ezarpenak" @@ -1637,11 +1640,11 @@ msgstr "Ezarpenak" msgid "labels.share-prototype" msgstr "Partekatu prototipoa" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Partekatutako liburutegiak" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Erakutsi iruzkin guztiak" @@ -1649,15 +1652,15 @@ msgstr "Erakutsi iruzkin guztiak" msgid "labels.show-comments-list" msgstr "Erakutsi iruzkinen zerrenda" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Erakutsi zure iruzkinak bakarrik" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Egoera" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutorialak" @@ -1685,15 +1688,15 @@ msgstr "Kargatu letra-tipoa" msgid "labels.uploading" msgstr "Kargatzen…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "IKUSTEKO BAKARRIK" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Bistarazlea" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhookak" @@ -1701,11 +1704,11 @@ msgstr "Webhookak" msgid "labels.write-new-comment" msgstr "Idatzi iruzkin berria" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(zu)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "zure kontua" @@ -1753,19 +1756,19 @@ msgstr "Aldatu posta elektronikoa" msgid "modals.change-email.title" msgstr "Aldatu zure posta elektronikoa" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Sortu webhooka" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Sortu webhooka" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Informazioaren URLa" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -1845,11 +1848,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Letra-tipoa ezabatzen" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Benetan orrialde hau ezabatu egin nahi duzu?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Ezabatu orrialdea" @@ -1883,75 +1886,75 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Ezabatu fitxategia" msgstr[1] "Ezabatu fitxategiak" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Ezabatu taldea" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Benetan talde hau ezabatu egin nahi duzu? Taldeari lotutako proiektu eta " "fitxategi guztiak betiko ezabatuko dira." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Taldea ezabatzen" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Kidea ezabatzen" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Benetan kide hau taldetik ezabatu egin nahi duzu?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Taldekidea ezabatzen" -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Ezabatu webhooka" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Benetan webhook hau ezabatu egin nahi duzu?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Webhooka ezabatzen" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Aldatu webhooka" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Aldatu webhooka" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Bidali gonbidapena" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Posta elektronikoak, komarekin banatuta" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "Eposta helbide batzuk jada taldekideenak dira. Ez da gonbidapenik bidaliko." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Gonbidatu kideak taldera" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Talde honetako kide bakarra zarenez, taldea bere proiektu eta fitxategiekin " "ezabatuko da." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Benetan %s taldea utzi egin nahi duzu?" @@ -1977,37 +1980,37 @@ msgstr "Aukeratu jabe berria" msgid "modals.leave-and-reassign.title" msgstr "Utzi aurretik" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Utzi taldea" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Benetal taldea utzi egin nahi duzu?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Taldea uzten" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Desplazamendua" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Eman jabetza" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Jabetza ematen baduzu, zure rola Kudeatzaile izatera pasatuko da, " "taldearekiko zure baimen batzuk galduz. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "Taldearen jabea zara. Benetan %s taldearen gabe egin nahi duzu?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Taldearen jabe berria" @@ -2060,29 +2063,29 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Eguneratu liburutegiaren osagaiak" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Eguneratu" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Utzi" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Partekatutako liburutegi baten osagai bat eguneratzera zoaz. Honek berau " "darabilten beste fitxategi batzuengan eragina izan dezake." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Eguneratu liburutegiaren osagaia" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Gonbidapena ondo bidali da" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Gonbidapenaren esteka kopiatu da" @@ -2205,7 +2208,7 @@ msgstr "" "Ez ahaztu garapeneko, diseinuko, kudeaketako... pertsonak sartzea, " "dibertsitatea ona da :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Gonbidatu rol honekin:" @@ -2273,613 +2276,597 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Sartu" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Batzuk" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Oinarrizkoak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Lanlekua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Ikusteko modua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Mahaigaina" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Lerrokatzea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Editatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Orokorra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Orokorra" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu nagusia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Aldatu geruzak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Nabigazioa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Nabigazioa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Nabigazioa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panelak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Bidea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Testuak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Tresnak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Gehitu iruzkinak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Gehitu nodoa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Lerrokatu behean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Erdian lerrokatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Lerrokatu erdian horizontalki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Justifikatuta lerrokatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Lerrokatu ezkerrean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Lerrokatu eskuman" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Lerrokatu goian" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Lerrokatu erdian bertikalki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Sortu arbela hautapenetik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Aktibatu/desaktibatu beltza" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Diferentzia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Baztertu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Ebakidura" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Elkarketa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Bidali atzera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Bidali hondora" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Mugitu aurrealdera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Mugitu aurrera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Garbitu historiala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopiatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Sortu berria" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Moztu" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Jaitsi zooma" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Ezabatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Ezabatu nodoa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Banandu osagaian" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Kurba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipsea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Arbela" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Marraztu nodoak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Bidea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Laukia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Testua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Bikoiztu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Utzi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Esportatu osagaiak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Zoom dena ikusteko" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Irauli horizontalki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Irauli bertikalki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Letra tipoaren tamaina txikitu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Letra tipoaren tamaina handitu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Joan zirriborroetara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Joan partekatutako liburutegietara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Bilatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Taldekatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Banatu horizontalki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Erakutsi/ezkutatu interfazea" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Zooma handitu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Txertatu irudia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Aktibatu/desaktibatu etzana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Elkartu nodoak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Hizkien arteko espazioa txikitu" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Hizkien arteko espazioa handitu" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Lerroen arteko tartea txikitu" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Lerroen arteko tartea handitu" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Aktibatu/desaktibatu marratzea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Bihurtu ertz" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Bihurtu kurba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maskara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Elkartu nodoak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Mugitu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Mugitu behera azkar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Mugitu ezkerrera azkar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Mugitu eskumara azar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Mugitu gora azkar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Mugitu nodoa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Mugitu behera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Mugitu ezkerrera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Mugitu eskumara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Mugitu gora" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Hurrengo arbela" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Ez dago emaitzarik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Opakutasuna %100" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Opakutasuna %10" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Opakutasuna %20" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Opakutasuna %30" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Opakutasuna %40" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Opakutasuna %50" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Opakutasuna %60" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Opakutasuna %70" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Opakutasuna %80" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Opakutasuna %90" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Ireki kolore-hautatzailea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Iruzkinak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Joan lan-lekura" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Ikuskagailura joan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Joan interakzioetara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Joan ikusteko modura" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Joan zure mahaigainera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " edo " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Itsatsi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Aurreko arbela" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Berregin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Berrezarri zooma" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Bilatu lasterbideak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Aukeratu guztia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Aukeratu hurrengo geruza" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Aukeratu aurreko geruza" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Banatu nodoak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Erakutsi/ezkutatu pixel sarea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Erakutsi/ezkutatu lasterbideak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Lerrokatu nodoak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Aktibatu sarea pixelera lerrokatzea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Hasi edizioa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Hasi neurketa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Amaitu neurketa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Aktibatu iruditxoak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Lasterteklak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Lerrokatzea aldatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Erakutsi/ezkutatu baliabideak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Erakutsi/ezkutatu kolore paleta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Erakutsi/ezkutatu foko-modua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Aktibatu/desaktibatu pantaila osoa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Erakutsi/Ezkutatu historikoa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Erakutsi/ezkutatu geruzak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Gehitu/kendu flex diseinua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Blokeatu/Desblokeatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Blokeatu/Desblokeatu proportzioak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Erakutsi/Ezkutatu testuen paleta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Erakutsi/Ezkutatu elementua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Erakutsi/Ezkutatu zoomaren estiloa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Aktibatu/desaktibatu azpimarraketa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Desegin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Banatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Desegin maskara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Banatu bertikalki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Zooma txikitu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Zooma handitu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zooma aukeraketara" @@ -2927,19 +2914,19 @@ msgstr "Pasahitza - Penpot" msgid "title.settings.profile" msgstr "Profila - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Gonbidapenak - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Kideak - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Ezarpenak - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhookak - %s - Penpot" @@ -3011,39 +2998,39 @@ msgstr "Erakutsi interakzioak klik egitean" msgid "viewer.header.sitemap" msgstr "Webgunearen mapa" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Azken bidalketa ondo joan da." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Lerrokatu erdian (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Banatu espazioa horizontalki (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Lerrokatu ezkerrean (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Lerrokatu eskuman (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Lerrokatu behean (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Lerrokatu erdian (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Banatu espazioa bertikalki (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Lerrokatu goian (%s)" @@ -3052,33 +3039,33 @@ msgstr "Lerrokatu goian (%s)" msgid "workspace.assets.assets" msgstr "Baliabideak" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Guztiak" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Koloreak" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Osagaiak" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Sortu talde bat" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Zure elementuak berrizendatu egingo dira: \"taldearen izena / elementuaren " "izena\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Ezabatu" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Bikoiztu" @@ -3086,7 +3073,7 @@ msgstr "Bikoiztu" msgid "workspace.assets.duplicate-main" msgstr "Bikoiztu nagusia" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Editatu" @@ -3095,15 +3082,15 @@ msgstr "Editatu" msgid "workspace.assets.graphics" msgstr "Grafikoak" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Taldekatu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Taldearen izena" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "liburutegi lokala" @@ -3111,15 +3098,15 @@ msgstr "liburutegi lokala" msgid "workspace.assets.not-found" msgstr "Ez da baliabiderik aurkitu" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Izena aldatu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Berrizendatu taldea" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Bilatu baliabideak" @@ -3130,7 +3117,7 @@ msgid_plural "workspace.assets.selected-count" msgstr[0] "%s elementu aukeratuta" msgstr[1] "Ez da elementurik aukeratu" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Letra-tipoak" @@ -3155,7 +3142,7 @@ msgstr "Hizkien tartea" msgid "workspace.assets.typography.line-height" msgstr "Lerroaren altuera" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -3167,7 +3154,7 @@ msgstr "Testuen estiloak" msgid "workspace.assets.typography.text-transform" msgstr "Testua eraldatu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Banatu" @@ -3175,7 +3162,7 @@ msgstr "Banatu" msgid "workspace.focus.focus-mode" msgstr "Foku-modua" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Fokua kendu" @@ -3195,11 +3182,11 @@ msgstr "Gradiente lineala" msgid "workspace.gradients.radial" msgstr "Gradiente erradiala" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Desaktibatu lerrokatze dinamikoa" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Desaktibatu eskala proportzionala" @@ -3208,19 +3195,19 @@ msgstr "Desaktibatu eskala proportzionala" msgid "workspace.header.menu.disable-scale-text" msgstr "Desaktibatu testu eskala" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Desaktibatu gidetara atxikitzea" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Desaktibatu pixelera atxikitzea" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Aktibatu lerrokatze dinamikoa" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Aktibatu eskala proportzionala" @@ -3229,83 +3216,83 @@ msgstr "Aktibatu eskala proportzionala" msgid "workspace.header.menu.enable-scale-text" msgstr "Aktibatu testua eskalatzea" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Atxikitu gidetara" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Aktibatu pixelera atxikitzea" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Ezkutatu arbelen izenak" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Ezkutatu kolore-paleta" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Ezkutatu pixel sareta" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Ezkutatu erregleank" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Ezkutatu letra-tipoen paleta" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Editatu" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Fitxategia" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Laguntza eta informazioa" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Hobespenak" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Ikusi" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Berregin" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Guztiak aukeratu" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Erakutsi arbelen izenak" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Erakutsi kolore-paleta" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Erakutsi erregelak" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Erakutsi letra-tipoen paleta" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Desegin" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Berrezarri" @@ -3326,7 +3313,7 @@ msgstr "Gordetzen" msgid "workspace.header.unsaved" msgstr "Gorde gabeko aldaketak" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Ikusteko modua (%s)" @@ -3338,7 +3325,7 @@ msgstr "Bete - Eskala betetzeko" msgid "workspace.header.zoom-fit" msgstr "Egokitu - Eskalatu egokitzeko" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Zoom dena ikusteko" @@ -3346,7 +3333,7 @@ msgstr "Zoom dena ikusteko" msgid "workspace.header.zoom-full-screen" msgstr "Pantaila osoa" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zooma aukeraketara" @@ -3355,10 +3342,6 @@ msgstr "Zooma aukeraketara" msgid "workspace.libraries.add" msgstr "Gehitu" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s kolore" - #: src/app/main/ui/workspace/color_palette_ctx_menu.cljs:88, src/app/main/ui/workspace/colorpicker/libraries.cljs:48, src/app/main/ui/workspace/text_palette_ctx_menu.cljs:49 msgid "workspace.libraries.colors.file-library" msgstr "Fitxategien liburutegia" @@ -3377,31 +3360,23 @@ msgstr "Azken koloreak" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Osagarria" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Gorde kolorearen estiloa" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s osagai" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Fitxategien liburutegia" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s grafiko" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "FITXATEGI HONETAKO LIBURUTEGIAK" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "LIBURUTEGIAK" @@ -3410,55 +3385,51 @@ msgstr "LIBURUTEGIAK" msgid "workspace.libraries.library" msgstr "LIBURUTEGIA" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Ez dago eguneraketa behar duen partekatutako liburutegirik" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Ez da ezer aurkitu bilaketa honentzat: \"%s\"" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Bilatu partekatutako liburutegiak" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "Partekatutako liburutegiak" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Letra-tipo anitz" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Kendu esteka letra-tipo guztiei" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s letra-tipo" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Eguneratu" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "EGUNERAKETAK" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Sakatu + botoia interakzioak gehitzeko." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Lausotu" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Taldea lausotu" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Aukeraketa lausotu" @@ -3466,11 +3437,11 @@ msgstr "Aukeraketa lausotu" msgid "workspace.options.canvas-background" msgstr "Mihisearen atzeko planoa" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Edukia aukeratu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Osagaia" @@ -3514,7 +3485,7 @@ msgstr "Goian" msgid "workspace.options.constraints.topbottom" msgstr "Goian eta behean" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Diseinua" @@ -3527,13 +3498,13 @@ msgstr "Esportatu" msgid "workspace.options.export-multiple" msgstr "Esportatu aukeraketa" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Esportatu elementu 1" msgstr[1] "Esportatu %s elementu" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Aurrizkia" @@ -3541,7 +3512,7 @@ msgstr "Aurrizkia" msgid "workspace.options.exporting-complete" msgstr "Esportazioa osatu da" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Esportazen…" @@ -3553,11 +3524,11 @@ msgstr "Esportazioak huts egin du" msgid "workspace.options.exporting-object-slow" msgstr "Esportazio oso geldoa" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Bete" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Gehitu fluxuaren hasiera" @@ -3566,15 +3537,15 @@ msgstr "Gehitu fluxuaren hasiera" msgid "workspace.options.flows.flow-start" msgstr "Fluxuaren hasiera" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Fluxua hasi da" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Auto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Zutabeak" @@ -3583,7 +3554,7 @@ msgstr "Zutabeak" msgid "workspace.options.grid.grid-title" msgstr "Sareta" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Kolorea" @@ -3592,15 +3563,15 @@ msgstr "Kolorea" msgid "workspace.options.grid.params.columns" msgstr "Zutabeak" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Erretena" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Altuera" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margina" @@ -3609,7 +3580,7 @@ msgstr "Margina" msgid "workspace.options.grid.params.rows" msgstr "Lerroak" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Defektuzko orri gisa ezarri" @@ -3623,143 +3594,143 @@ msgstr "Tamaina" msgid "workspace.options.grid.params.type" msgstr "Elementu mota" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Behean" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Erdiratu" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Ezkerrean" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Eskuman" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Luzatu" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Goian" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Erabili defektuzkoa" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Zabalera" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Lerroak" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Karratua" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Taldea bete" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Taldea trazatu" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Altuera" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Ikuskatu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Ekintza" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Atzerapen baten ostean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animazioa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Disolbatu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Bat ere ez" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Sartu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Irristatu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "automatikoa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Gehitu atzeko planoko geruzi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Itxi kanpoan klik egitean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Itxi geruza" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Itxi geruza: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Atzeratu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Helburua" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Iraupena" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Mugimendua" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Mugitu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Mugitu barrura" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Mugitu barrura eta kanpora" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Mugitu kanpora" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Lineala" @@ -3768,47 +3739,47 @@ msgstr "Lineala" msgid "workspace.options.interaction-in" msgstr "Barrura" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Sagua sartzean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Sagua urruntzean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Nabigatu hona" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Nabigatu hona: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(ez da ezarri)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Desplazamenduaren efektua" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Klik egitean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Ireki geruza" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Ireki geruz: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Ireki helbidea" @@ -3817,147 +3788,147 @@ msgstr "Ireki helbidea" msgid "workspace.options.interaction-out" msgstr "Kanpoan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Behean erdian" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Behean ezkerrean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Behean eskuman" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Erdiratu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Eskuzkoa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Goian erdian" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Goian ezkerrean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Goian eskuman" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Posizioa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Mantendu scrollaren posizioa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Aurreko pantaila" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Honekiko erlatiboa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "norbera" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Erakutsi/Ezkutatu geruza" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Erakutsi/Ezkutatu geruza: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Hasi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Sagua gainetik pasatzean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Sakatzean" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interakzioak" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Kolorea" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Erretako kolorea" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Saihestu kolorea" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Ilundu" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Diferentzia" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Baztertu" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Argi gogorra" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Ñabardura" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Argitu" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Argitasuna" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Biderkatu" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normala" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Geruza" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Asetasuna" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Pantaila" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Argi biguna" @@ -3981,19 +3952,19 @@ msgstr "Aukeratutako geruzak" msgid "workspace.options.layout-item.advanced-ops" msgstr "Aukera aurreratuak" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Gehieneko altuera" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Gehieneko zabalera" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Gutxieneko altuera" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Gutxieneko zabalera" @@ -4107,15 +4078,15 @@ msgstr "Tarteko espazioa" msgid "workspace.options.layout.top" msgstr "Goian" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Kolore gehiago" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Liburutegiko kolore gehiago" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opakotasuna" @@ -4124,27 +4095,27 @@ msgstr "Opakotasuna" msgid "workspace.options.position" msgstr "Posizioa" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototipoa" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Erradioa" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Behean ezkerrean" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Behean eskuman" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Goian ezkerrean" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Goian eskuman" @@ -4156,7 +4127,7 @@ msgstr "Azkenak" msgid "workspace.options.retry" msgstr "Berriz saiatu" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Biraketa" @@ -4164,29 +4135,29 @@ msgstr "Biraketa" msgid "workspace.options.search-font" msgstr "Bilatu letra-tipoa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Aukeratu forma bat, arbel bat edo talde bat eta arrastatu konexioa beste " "arbel batera." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Aukeratutako koloreak" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Aukeraketa bete" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Aukeraketa trazatu" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Lausotu" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Itzalaren kolorea" @@ -4198,47 +4169,48 @@ msgstr "Kendu itzala" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Barruko itzala" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Banatu" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Itzala" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Taldearen itzala" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Aukeraketaren itzalak" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Erakutsi esportazioan" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Erakutsi ikusteko moduan" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Tamaina" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Aurredefinitutako tamaina" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Trazua" @@ -4257,15 +4229,15 @@ msgstr "Diamante erako markatzailea" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Lerro erako gezia" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Bat ere ez" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Txanda" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Karratua" @@ -4279,71 +4251,71 @@ msgstr "Lauki erako marka" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Hiruki gezia" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Trazuaren kolorea" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Marraren zabalera" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Erdiratu" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Marrekin" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Muntuekin" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Barruan" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Nahastuta" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Kanpoan" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Solidoa" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Lerrokatu behean" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Lerrokatu erdian" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Lerrokatu goian" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Altuera automatikoa" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Zabalera automatikoa" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Finkoa" @@ -4365,35 +4337,35 @@ msgstr "Letra xeheak" msgid "workspace.options.text-options.none" msgstr "Bat ere ez" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Gaineko marra (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Lerrokatu erdian" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Justifikatu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Lerrokatu ezkerrean" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Lerrokatu eskuman" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Kontsultaren testua" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Taldekatu testua" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Aukeraketa testua" @@ -4402,7 +4374,7 @@ msgstr "Aukeraketa testua" msgid "workspace.options.text-options.titlecase" msgstr "Izenburuaren mota" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Azpimarra (%s)" @@ -4411,19 +4383,19 @@ msgstr "Azpimarra (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Letra larriak" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Erabili goiburuko play botoia prototipoa ikusteko." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Zabalera" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y" @@ -4487,7 +4459,7 @@ msgstr "Kopiatu" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Aukeraketa arbelera" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Sortu osagaia" @@ -4495,7 +4467,7 @@ msgstr "Sortu osagaia" msgid "workspace.shape.menu.cut" msgstr "Ebaki" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Ezabatu" @@ -4503,15 +4475,15 @@ msgstr "Ezabatu" msgid "workspace.shape.menu.delete-flow-start" msgstr "Ezabatu fluxuaren hasiera" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Askatu instantzia" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Askatu instantziak" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Diferentzia" @@ -4523,11 +4495,11 @@ msgstr "Bikoiztu" msgid "workspace.shape.menu.edit" msgstr "Editatu" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Baztertu" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Lautu" @@ -4560,19 +4532,19 @@ msgstr "Joan osagai nagusiaren fitxategira" msgid "workspace.shape.menu.group" msgstr "Taldea" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Ezkutatu" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Erakutsi/Ezkuatu interfazea" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Ebakidura" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Blokeatu" @@ -4580,7 +4552,7 @@ msgstr "Blokeatu" msgid "workspace.shape.menu.mask" msgstr "Maskara aplikatu" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Itsatsi" @@ -4592,11 +4564,11 @@ msgstr "Bidea" msgid "workspace.shape.menu.remove-flex" msgstr "Ezabatu flex diseinua" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Berrezarri gainidazketak" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Berrezarri osagai nagusia" @@ -4604,15 +4576,15 @@ msgstr "Berrezarri osagai nagusia" msgid "workspace.shape.menu.select-layer" msgstr "Aukeratu geruza" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Erakutsi" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Ikusi baliabideen panelean" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Erakutsi osagai nagusia" @@ -4625,6 +4597,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Ezarri iruditxo gisa" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Eraldatu bidera" @@ -4632,11 +4605,11 @@ msgstr "Eraldatu bidera" msgid "workspace.shape.menu.ungroup" msgstr "Banatu" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Batu" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Desblokeatu" @@ -4649,7 +4622,7 @@ msgstr "Desegin maskara" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Eguneratu osagai nagusiak" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Eguneratu osagai nagusia" @@ -4661,11 +4634,11 @@ msgstr "Itxi alboko barra" msgid "workspace.sidebar.expand" msgstr "Ireki alboko barra" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Historikoa" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Geruzak" @@ -4705,7 +4678,7 @@ msgstr "Testuak" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Inportatutako SVG atributuak" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Orrialdeak" @@ -4713,7 +4686,7 @@ msgstr "Orrialdeak" msgid "workspace.sitemap" msgstr "Web mapa" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Baliabideak" @@ -4721,7 +4694,7 @@ msgstr "Baliabideak" msgid "workspace.toolbar.color-palette" msgstr "Kolore paleta (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Iruzkinak (%s)" @@ -4911,15 +4884,15 @@ msgstr "Honen gaineko eragiketa: %s" msgid "workspace.undo.title" msgstr "Historia" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Baztertu" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Eguneraketak daude partekatutako liburutegietan" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Eguneratu" diff --git a/frontend/translations/fa.po b/frontend/translations/fa.po index 6ce157fe6b..b5ffaa6431 100644 --- a/frontend/translations/fa.po +++ b/frontend/translations/fa.po @@ -178,7 +178,7 @@ msgstr "" "من با قوانین و مقررات این سرویس و چگونگی مراقبت از اطلاعات شخصی در این " "سرویس را قبول میکنم." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "شرایط استفاده از خدمات" @@ -197,7 +197,7 @@ msgstr "ما یک ایمیل تأیید ارسال کردیم به" msgid "auth.work-email" msgstr "ایمیلِ کار" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "انتشار" @@ -269,7 +269,7 @@ msgstr "اشتراک‌گذاری پروتوتایپ‌ها" msgid "common.share-link.view-all" msgstr "انتخاب همه" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "لغو انتشار" @@ -387,7 +387,7 @@ msgstr "توکن دسترسی تاریخ انقضایش در تاریخ %s تم msgid "dashboard.access-tokens.token-will-not-expire" msgstr "این توکن دسترسی تاریخ انقضا ندارد" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "افزودن به‌عنوان کتابخانه مشترک" @@ -395,27 +395,27 @@ msgstr "افزودن به‌عنوان کتابخانه مشترک" msgid "dashboard.change-email" msgstr "تغییر ایمیل" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(کپی)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "ایجاد تیم جدید" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Penpot شما" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "حذف تیم" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "دانلود فایل پنپات (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "دانلود فایل استاندارد (.svg + .json)" @@ -431,7 +431,7 @@ msgstr "فایل‌های %s را کپی کنید" msgid "dashboard.export-binary-multi" msgstr "دانلود %s عدد فایل های پنپات (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "خروجی آرت‌بوردها به پی‌دی‌اف" @@ -447,7 +447,7 @@ msgstr "خروجی فایل‌های %s پن‌پات" msgid "dashboard.export-multiple.selected" msgstr "%s از %s عناصر انتخاب‌شده" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "اکسپورت" @@ -607,11 +607,11 @@ msgstr "در حال آپلود اطلاعات روی سرور (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "در حال آپلود فایل: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "دعوت به تیم" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "خروج از تیم" @@ -623,7 +623,7 @@ msgstr "کتابخانه‌ها و قالب‌ها" msgid "dashboard.libraries-and-templates.explore" msgstr "بیشتر آنها را کاوش کنید و بدانید که چگونه مشارکت کنید" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "مشکلی در ایمپورت کردن قالب وجود داشت. قالب ایمپورت نشد." @@ -655,7 +655,7 @@ msgstr "انتقال به تیم دیگر" msgid "dashboard.new-file" msgstr "+ فایل جدید" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "فایل جدید" @@ -663,7 +663,7 @@ msgstr "فایل جدید" msgid "dashboard.new-project" msgstr "+ پروژه جدید" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "پروژه جدید" @@ -671,7 +671,7 @@ msgstr "پروژه جدید" msgid "dashboard.no-matches-for" msgstr "هیچ منطبقی برای «%s» یافت نشد" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "پروژه‌های پین شده در اینجا ظاهر می‌شوند" @@ -687,7 +687,7 @@ msgstr "آدرس ایمیل شما با موفقیت تایید شد" msgid "dashboard.notifications.password-saved" msgstr "رمزعبور با موفقیت ذخیره شد!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "اعضای %s" @@ -703,7 +703,7 @@ msgstr "گزینه‌ها" msgid "dashboard.password-change" msgstr "تغییر رمزعبور" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "پین/برداشتن پین" @@ -724,7 +724,7 @@ msgstr "حذف به عنوان کتابخانه مشترک" msgid "dashboard.save-settings" msgstr "ذخیره تنظیمات" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "جستجو…" @@ -760,7 +760,7 @@ msgstr "فایل شما با موفقیت duplicate شد" msgid "dashboard.success-duplicate-project" msgstr "پروژه شما با موفقیت duplicate شد" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "فایل شما با موفقیت منتقل شد" @@ -772,15 +772,15 @@ msgstr "فایل‌های شما با موفقیت منتقل شدند" msgid "dashboard.success-move-project" msgstr "پروژه شما با موفقیت منتقل شد" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "اطلاعات تیم" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "اعضای تیم" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "پروژه‌های تیم" @@ -796,7 +796,7 @@ msgstr "نتایج جستجو" msgid "dashboard.type-something" msgstr "برای نمایش نتایج جستجو تایپ کنید" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "لغو انتشار کتابخانه" @@ -816,7 +816,7 @@ msgstr "ایمیل" msgid "dashboard.your-name" msgstr "نام شما" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "پن‌پات شما" @@ -832,11 +832,11 @@ msgstr "توجه" msgid "ds.component-subtitle" msgstr "کامپوننت‌ها برای به‌روزرسانی:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "لغو" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "بله" @@ -876,7 +876,7 @@ msgstr "ایمیل قبلاً تأیید شده است." msgid "errors.email-as-password" msgstr "شما نمی‌توانید از ایمیل خود به عنوان رمزعبور استفاده کنید" -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "اشتباهی رخ داده است." @@ -934,15 +934,15 @@ msgstr "پروفایل مسدود شده" msgid "errors.registration-disabled" msgstr "ثبت‌نام در حال حاضر غیرفعال است." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "اعضای کافی برای ترک تیم وجود ندارد، احتمالاً می‌خواهید آن را حذف کنید." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "عضوی که می‌خواهید اختصاص دهید وجود ندارد." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "مالک نمی‌تواند تیم را ترک کند، شما باید نقش مالک را مجدداً اختصاص دهید." @@ -1014,19 +1014,19 @@ msgstr "خطایی رخ داده است" msgid "inspect.attributes.blur" msgstr "محو" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "مقدار" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1034,7 +1034,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "پر" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "دانلود تصویر منبع" @@ -1124,51 +1124,52 @@ msgstr "جامد" msgid "inspect.attributes.stroke.width" msgstr "عرض" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "تایپوگرافی" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "خانواده فونت" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "اندازه فونت" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "استایل فونت" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "فاصله بین حروف" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "ارتفاع خط" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "هیچ‌یک" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "خط‌زیر" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "تبدیل متن" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "حروف کوچک" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "هیچ‌یک" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "حروف بزرگ" @@ -1228,7 +1229,7 @@ msgstr "متن" msgid "inspect.tabs.info" msgstr "اطلاعات" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "میانبرها" @@ -1240,11 +1241,11 @@ msgstr "تایید" msgid "labels.add-custom-font" msgstr "اضافه کردن فونت سفارشی" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "مدیر" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "همه" @@ -1263,19 +1264,19 @@ msgstr "" "به نظر می‌رسد باید کمی صبر کنید و دوباره تلاش کنید; ما در حال انجام تعمیرات " "کوچک روی سرورهای خود هستیم." -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "لغو" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "بستن" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "نظرات" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "انجمن" @@ -1283,7 +1284,7 @@ msgstr "انجمن" msgid "labels.confirm-password" msgstr "تایید رمزعبور" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "ادامه" @@ -1295,7 +1296,7 @@ msgstr "ادامه دادن با" msgid "labels.continue-with-penpot" msgstr "شما می‌توانید با یک حساب Penpot ادامه دهید" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "ایجاد" @@ -1315,7 +1316,7 @@ msgstr "فونت‌های سفارشی" msgid "labels.dashboard" msgstr "داشبورد" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "حذف" @@ -1327,7 +1328,7 @@ msgstr "حذف نظر" msgid "labels.delete-comment-thread" msgstr "حذف موضوع" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "حذف دعوت" @@ -1335,11 +1336,11 @@ msgstr "حذف دعوت" msgid "labels.delete-multi-files" msgstr "حذف فایل‌های %s" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "پیش‌نویس‌ها" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "ویرایش" @@ -1347,15 +1348,15 @@ msgstr "ویرایش" msgid "labels.edit-file" msgstr "ویرایش فایل" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "ویرایشگر" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "منقضی شده" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "اکسپورت" @@ -1379,15 +1380,15 @@ msgstr "ارائه‌دهندگان فونت" msgid "labels.font-variants" msgstr "استایل‌ها" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "فونت‌ها" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "مخزن Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "بازخورد بده" @@ -1395,11 +1396,11 @@ msgstr "بازخورد بده" msgid "labels.go-back" msgstr "برگرد" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "مرکز کمک" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "پنهان کردن نظرات حل شده" @@ -1417,7 +1418,7 @@ msgstr "" msgid "labels.internal-error.main-message" msgstr "خطای داخلی" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "دعوت‌نامه‌ها" @@ -1425,7 +1426,7 @@ msgstr "دعوت‌نامه‌ها" msgid "labels.language" msgstr "زبان" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "کتابخانه‌ها و قالب‌ها" @@ -1433,15 +1434,15 @@ msgstr "کتابخانه‌ها و قالب‌ها" msgid "labels.log-or-sign" msgstr "ورود یا ثبت نام" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "خروج" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "عضو" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "اعضا" @@ -1449,11 +1450,11 @@ msgstr "اعضا" msgid "labels.new-password" msgstr "رمزعبور جدید" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "هیچ اعلان نظر معلقی ندارید" -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "هیچ دعوتنامه‌ای وجود ندارد." @@ -1466,7 +1467,7 @@ msgstr "ممکن است این صفحه وجود نداشته باشد یا شم msgid "labels.not-found.main-message" msgstr "اوپس!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "۱ فایل" @@ -1478,7 +1479,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "۱ برد" msgstr[1] "%s برد" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "۱ پروژه" @@ -1497,7 +1498,7 @@ msgstr "فقط برای تو" msgid "labels.or" msgstr "یا" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "مالک" @@ -1505,7 +1506,7 @@ msgstr "مالک" msgid "labels.password" msgstr "کلمه‌عبور" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "در انتظار" @@ -1513,11 +1514,11 @@ msgstr "در انتظار" msgid "labels.profile" msgstr "پروفایل" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "پروژه‌ها" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "یادداشت‌های انتشار" @@ -1526,11 +1527,11 @@ msgstr "یادداشت‌های انتشار" msgid "labels.remove" msgstr "حذف" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "حذف عضو" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "تغییرنام" @@ -1538,7 +1539,7 @@ msgstr "تغییرنام" msgid "labels.rename-team" msgstr "تغییر نام تیم" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "فرستادن مجدد دعوتنامه" @@ -1546,11 +1547,11 @@ msgstr "فرستادن مجدد دعوتنامه" msgid "labels.retry" msgstr "امتحان دوباره" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "نقش" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "ذخیره" @@ -1574,7 +1575,7 @@ msgstr "ما در حال تعمیر و نگهداری برنامه‌ریزی ش msgid "labels.service-unavailable.main-message" msgstr "سرویس در دسترس نیست" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "تنظیمات" @@ -1582,11 +1583,11 @@ msgstr "تنظیمات" msgid "labels.share-prototype" msgstr "به اشتراک گذاشتن پروتوتایپ" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "کتابخانه‌های مشترک" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "نمایش همه نظرات" @@ -1594,15 +1595,15 @@ msgstr "نمایش همه نظرات" msgid "labels.show-comments-list" msgstr "نمایش لیست نظرات" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "فقط نظرات خودتان را نشان دهید" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "وضعیت" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "آموزش‌ها" @@ -1626,7 +1627,7 @@ msgstr "آپلود فونت‌های سفارشی" msgid "labels.uploading" msgstr "درحال بارگذاری…" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "بیننده" @@ -1634,11 +1635,11 @@ msgstr "بیننده" msgid "labels.write-new-comment" msgstr "نظر جدید بنویس" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(شما)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "حساب شما" @@ -1756,11 +1757,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "درحال حذف فونت" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "آیا مطمئن هستید که می‌خواهید این صفحه را حذف کنید؟" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "حذف صفحه" @@ -1794,51 +1795,51 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "درحال حذف فایل" msgstr[1] "درحال حذف فایل‌ها" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "حذف تیم" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "آیا مطمئنید که می‌خواهید این تیم را حذف کنید؟ تمام پروژه‌ها و فایل‌های " "مرتبط با تیم به طور دائم حذف خواهند شد." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "درحال حذف تیم" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "حذف عضو" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "آیا مطمئن هستید که می‌خواهید این عضو را از تیم حذف کنید؟" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "حذف عضو تیم" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "ارسال دعوت‌نامه" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "ایمیل‌ها، با کاما از هم جدا شده‌اند" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "دعوت اعضا به تیم" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "از آنجایی که شما تنها عضو این تیم هستید، تیم به همراه پروژه‌ها و فایل‌هایش " "حذف خواهد شد." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "آیا مطمئنید که می‌خواهید تیم %s را ترک کنید؟" @@ -1862,35 +1863,35 @@ msgstr "انتخاب یک عضو برای ارتقا" msgid "modals.leave-and-reassign.title" msgstr "قبل از رفتن" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "خروج از تیم" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "آیا مطمئنید که می‌خواهید این تیم را ترک کنید؟" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "درحال ترک تیم" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "انتقال مالکیت" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "اگر مالکیت را منتقل کنید، نقش خود را به مدیر تغییر می‌دهید و برخی از " "مجوزهای این تیم را از دست می‌دهید. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "شما مالک فعلی این تیم هستید. آیا مطمئنید که می‌خواهید %s را مالک جدید تیم " "کنید؟" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "مالک جدید تیم" @@ -1906,11 +1907,11 @@ msgstr "" "پس از حذف به‌عنوان کتابخانه مشترک، کتابخانه فایل این فایل برای استفاده در " "بین بقیه فایل‌های شما در دسترس نخواهد بود." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "به‌روزرسانی" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "لغو" @@ -1938,139 +1939,139 @@ msgstr "پس از نامگذاری تیم خود، می‌توانید افرا msgid "onboarding.welcome.alt" msgstr "Penpot" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "مخلوط" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "داشبورد" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "بیننده" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "ویرایش" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "منوی اصلی" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "پنل‌ها" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "مسیرها" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "شکل‌ها" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "ابزار" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "بزرگنمایی" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "بزرگنمایی" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "نظرات" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "افزودن گره" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "تراز به پایین" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "کپی" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "حذف" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "منحنی" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "بیضی" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "آرت‌بورد" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "مسیر" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "مستطیل" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "متن" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "لغو" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "حرکت افقی" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "حرکت عمودی" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "جستجو" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "گروه" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "ماسک" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "انتقال" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "چسباندن" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "واگرد" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "حذف گروه" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "برداشتن ماسک" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "توزیع به صورت عمودی" @@ -2114,15 +2115,15 @@ msgstr "رمزعبور - Penpot" msgid "title.settings.profile" msgstr "پروفایل - پن‌پات" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "دعوت‌نامه‌ها - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "اعضا - %s - پن‌پات" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "تنظیمات - %s - پن‌پات" @@ -2190,31 +2191,31 @@ msgstr "نمایش تعاملات در کلیک" msgid "viewer.header.sitemap" msgstr "نقشه سایت" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "تراز کردن مرکز افقی (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "توزیع فاصله افقی (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "تراز به چپ (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "تراز کردن به راست (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "تراز کردن پایین (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "تراز کردن مرکز عمودی (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "توزیع فاصله عمودی (%s)" @@ -2223,35 +2224,35 @@ msgstr "توزیع فاصله عمودی (%s)" msgid "workspace.assets.assets" msgstr "دارایی‌ها" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "تمام دارایی‌ها" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "رنگ‌ها" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "کامپوننت‌ها" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "ایجاد یک گروه" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "آیتم‌های شما به طور خودکار به عنوان \"نام گروه / نام آیتم\" نامگذاری می‌شوند" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "حذف" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "تکثیر" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "ویرایش" @@ -2260,15 +2261,15 @@ msgstr "ویرایش" msgid "workspace.assets.graphics" msgstr "گرافیک" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "گروه" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "تغییرنام" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "تایپوگرافی‌ها" @@ -2281,7 +2282,7 @@ msgstr "فونت" msgid "workspace.assets.typography.font-size" msgstr "اندازه" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "مثال" @@ -2289,7 +2290,7 @@ msgstr "مثال" msgid "workspace.assets.typography.text-transform" msgstr "تبدیل متن" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "حذف گروه" @@ -2297,31 +2298,31 @@ msgstr "حذف گروه" msgid "workspace.focus.selection" msgstr "انتخاب" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "پنهان کردن پالت فونت‌ها" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "ویرایش" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "فایل" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "اولویت‌ها" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "بازدید" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "نمایش پالت فونت‌ها" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "بازنشانی" @@ -2352,15 +2353,15 @@ msgstr "افزودن" msgid "workspace.libraries.colors.hsv" msgstr "HSV" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "ذخیره استایل رنگ" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "کتابخانه‌ها" @@ -2369,31 +2370,31 @@ msgstr "کتابخانه‌ها" msgid "workspace.libraries.library" msgstr "کتابخانه" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "هیچ کتابخانه مشترکی وجود ندارد که نیاز به به‌روزرسانی داشته باشد" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "جستجوی کتابخانه‌های مشترک" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "کتابخانه‌های مشترک" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "به‌روزرسانی" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "به‌روزرسانی‌ها" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "محو" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "کامپوننت" @@ -2425,7 +2426,7 @@ msgstr "مقیاس" msgid "workspace.options.constraints.top" msgstr "بالا" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "طراحی" @@ -2433,27 +2434,27 @@ msgstr "طراحی" msgid "workspace.options.export" msgstr "اکسپورت" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "پسوند" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "درحال گرفتن خروجی…" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "پر" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "خودکار" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "ستون‌ها" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "رنگ" @@ -2462,11 +2463,11 @@ msgstr "رنگ" msgid "workspace.options.grid.params.columns" msgstr "ستون‌ها" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "ارتفاع" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "لبه" @@ -2475,7 +2476,7 @@ msgstr "لبه" msgid "workspace.options.grid.params.rows" msgstr "ردیف‌ها" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "تنظیم به عنوان پیش‌فرض" @@ -2489,87 +2490,87 @@ msgstr "اندازه" msgid "workspace.options.grid.params.type" msgstr "نوع" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "پایین" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "مرکز" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "چپ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "راست" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "بالا" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "پهنا" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "ردیف‌ها" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "مربع" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "بلندی" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "عمل" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "انیمیشن" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "حل کردن" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "هیچ‌یک" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "هل" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "اسلاید" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "تاخیر" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "مقصد" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "مدت‌زمان" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "تسهیل" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "سهولت" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "خطی" @@ -2578,11 +2579,11 @@ msgstr "خطی" msgid "workspace.options.interaction-in" msgstr "در" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "م‌ث" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(تنظیم نشده)" @@ -2591,63 +2592,63 @@ msgstr "(تنظیم نشده)" msgid "workspace.options.interaction-out" msgstr "خارج" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "مرکز" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "دستی" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "موقعیت" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "خود" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "رنگ" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "تاریک" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "تفاوت" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "رنگ" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "روشن کردن" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "درخشندگی" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "تکثیر" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "معمولی" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "اشباع" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "صفحه نمایش" @@ -2661,11 +2662,11 @@ msgstr "لایه" msgid "workspace.options.position" msgstr "موقعیت" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "پروتوتایپ" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "گردی" @@ -2677,103 +2678,104 @@ msgstr "اخیر" msgid "workspace.options.retry" msgstr "تلاش دوباره" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "چرخش" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "یک شکل، برد یا گروه را برای کشیدن اتصال به تابلوی دیگر انتخاب کنید." -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "محو" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "سایه" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "اندازه" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "استروک" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "هیچ‌یک" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "گردی" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "مربع" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "مرکز" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "نقطه‌چین" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "خط‌چین" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "داخل" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "مخلوط" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "خارج" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "تراز پایین" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "تراز وسط" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "تراز بالا" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "ارتفاع خودکار" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "عرض خودکار" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "درست شد" @@ -2795,31 +2797,31 @@ msgstr "حروف کوچک" msgid "workspace.options.text-options.none" msgstr "هیچ‌یک" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "تراز در مرکز" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "تراز چپ" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "تراز راست" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "متن" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "متن گروهی" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "متن انتخابی" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "خط‌زیر (%s)" @@ -2828,19 +2830,19 @@ msgstr "خط‌زیر (%s)" msgid "workspace.options.text-options.uppercase" msgstr "حروف بزرگ" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "از دکمه پخش در هدر برای اجرای نمای پروتوتایپ استفاده کنید." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "پهنا" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y" @@ -2872,7 +2874,7 @@ msgstr "فرستادن به عقب" msgid "workspace.shape.menu.copy" msgstr "کپی" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "ایجاد کامپوننت" @@ -2880,11 +2882,11 @@ msgstr "ایجاد کامپوننت" msgid "workspace.shape.menu.cut" msgstr "برش" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "حذف" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "تفاوت" @@ -2896,7 +2898,7 @@ msgstr "تکرار" msgid "workspace.shape.menu.edit" msgstr "ویزایش" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "صاف" @@ -2929,19 +2931,19 @@ msgstr "به فایل کامپوننت اصلی بروید" msgid "workspace.shape.menu.group" msgstr "گروه" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "مخفی" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "نمایش/پنهان کردن رابط کاربری" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "تقاطع" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "قفل" @@ -2949,7 +2951,7 @@ msgstr "قفل" msgid "workspace.shape.menu.mask" msgstr "ماسک" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "چسباندن" @@ -2957,7 +2959,7 @@ msgstr "چسباندن" msgid "workspace.shape.menu.path" msgstr "مسیر" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "بازیابی کامپوننت اصلی" @@ -2965,15 +2967,15 @@ msgstr "بازیابی کامپوننت اصلی" msgid "workspace.shape.menu.select-layer" msgstr "انتخاب لایه" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "نمایش" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "نمایش در پنل دارایی" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "نمایش کامپوننت اصلی" @@ -2986,6 +2988,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "تنظیم بعنوان تصویر کوچک" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "تبدیل به مسیر" @@ -2993,11 +2996,11 @@ msgstr "تبدیل به مسیر" msgid "workspace.shape.menu.ungroup" msgstr "حذف گروه" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "متحد" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "بازکردن قفل" @@ -3010,7 +3013,7 @@ msgstr "حذف ماسک" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "به‌روزرسانی کامپوننت‌های اصلی" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "به‌روزرسانی کامپوننت اصلی" @@ -3018,11 +3021,11 @@ msgstr "به‌روزرسانی کامپوننت اصلی" msgid "workspace.sidebar.expand" msgstr "گسترش نوار کناری" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "تاریخچه" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "لایه‌ها" @@ -3062,7 +3065,7 @@ msgstr "متن‌ها" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "ویژگی‌های SVG ایمپورت شد" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "صفحات" @@ -3070,7 +3073,7 @@ msgstr "صفحات" msgid "workspace.sitemap" msgstr "نقشه سایت" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "دارایی‌ها" @@ -3078,7 +3081,7 @@ msgstr "دارایی‌ها" msgid "workspace.toolbar.color-palette" msgstr "پالت رنگ (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "نظرات (%s)" @@ -3264,15 +3267,15 @@ msgstr "عملیات بیش‌از %s" msgid "workspace.undo.title" msgstr "تاریخچه" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "رد" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "به‌روزرسانی در کتابخانه‌های مشترک وجود دارد" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "به‌روزرسانی" diff --git a/frontend/translations/fin_FI.po b/frontend/translations/fin_FI.po index eea454cb6d..9461d58748 100644 --- a/frontend/translations/fin_FI.po +++ b/frontend/translations/fin_FI.po @@ -142,7 +142,7 @@ msgstr "Luo uusi käyttäjä" msgid "auth.sidebar-tagline" msgstr "Avoimen lähdekoodin ratkaisu suunnitteluun ja prototyyppien valmistukseen." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Käyttöehdot" @@ -150,7 +150,7 @@ msgstr "Käyttöehdot" msgid "auth.verification-email-sent" msgstr "Lähetimme vahvistussähköpostin osoitteeseen" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Julkaise" @@ -222,7 +222,7 @@ msgstr "Jaa prototyypit" msgid "common.share-link.view-all" msgstr "Valitse kaikki" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Peruuta julkaisu" diff --git a/frontend/translations/fo.po b/frontend/translations/fo.po index 0939c3c9d1..add89f372d 100644 --- a/frontend/translations/fo.po +++ b/frontend/translations/fo.po @@ -176,7 +176,7 @@ msgstr "Stovna eina konto" msgid "auth.sidebar-tagline" msgstr "Loysnin við opnari keldukotu, at formgeva og frumsniða." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Treytir" @@ -184,7 +184,7 @@ msgstr "Treytir" msgid "auth.verification-email-sent" msgstr "Vit hava sent ein váttanar teldupost til" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Gev út" @@ -256,7 +256,7 @@ msgstr "Deil frumsnið" msgid "common.share-link.view-all" msgstr "Vel alt" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Angra útgevan" @@ -299,7 +299,7 @@ msgstr "Kom ein túr gjøgnum Penpot og lær høvuðsfunkurnar at kenna." msgid "dasboard.walkthrough-hero.start" msgstr "Byrja rundferð" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Legg afturat sum Deilt Savn" @@ -307,27 +307,27 @@ msgstr "Legg afturat sum Deilt Savn" msgid "dashboard.change-email" msgstr "Broyt teldupost" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(avrita)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Stovna nýtt toymi" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Títt Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Strika toymi" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Heinta Penpot fílu (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Heinta standarafílu (.svg + .json)" @@ -343,7 +343,7 @@ msgstr "Tvítak %s fílur" msgid "dashboard.export-binary-multi" msgstr "Heinta %s Penpot fílur (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Útflyt borð sum PDF" @@ -359,7 +359,7 @@ msgstr "Útflyt Penpot %s fílur" msgid "dashboard.export-multiple.selected" msgstr "%s av %s lutum eru valdir" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Útflyt" @@ -452,11 +452,11 @@ msgstr "Sendur upp dátur til ambætara (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Innleggur fílu: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Bjóða við í toymi" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Far úr toymu" @@ -484,7 +484,7 @@ msgstr "Flyt til eitt annað toymi" msgid "dashboard.new-file" msgstr "+ Nýggja fílu" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Nýggja fílu" @@ -492,7 +492,7 @@ msgstr "Nýggja fílu" msgid "dashboard.new-project" msgstr "+ Nýggj verkætlan" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nýggj verkætlan" @@ -500,7 +500,7 @@ msgstr "Nýggj verkætlan" msgid "dashboard.no-matches-for" msgstr "Onki samsvar funnið fyri \"%\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Festar verkætlanir verða víst her" @@ -516,7 +516,7 @@ msgstr "Tín teldupostadressa er váttta" msgid "dashboard.notifications.password-saved" msgstr "Loyniorði er goymt!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s limir" @@ -532,7 +532,7 @@ msgstr "Valmøguleikar" msgid "dashboard.password-change" msgstr "Broyt loyniorð" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Fest/Loys" @@ -553,7 +553,7 @@ msgstr "Strikað sum Deilt Savn" msgid "dashboard.save-settings" msgstr "Goym stillingar" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Leita…" @@ -581,7 +581,7 @@ msgstr "Tín fíla er strikað" msgid "dashboard.success-delete-project" msgstr "Tín verkætlan er strikað" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Tín fíla er flutt" @@ -593,15 +593,15 @@ msgstr "Tínar fílur eru fluttar" msgid "dashboard.success-move-project" msgstr "Tín verkætlan er flutt" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Toymisupplýsingar" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Toymislimir" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Toymisverkætlanir" @@ -621,7 +621,7 @@ msgstr "Skriva fyri at leita eftir úrslitum" msgid "ds.alert-ok" msgstr "Ókey" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ókey" @@ -637,7 +637,7 @@ msgstr "Strikað %s fílur" msgid "labels.edit-file" msgstr "Broyt fílu" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 fíla" @@ -715,6 +715,6 @@ msgstr "%s - Penpot" msgid "title.settings.profile" msgstr "Vangamynd - Penpot" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Fílu" diff --git a/frontend/translations/fr.po b/frontend/translations/fr.po index 4f0678b5ff..470e559128 100644 --- a/frontend/translations/fr.po +++ b/frontend/translations/fr.po @@ -1,19 +1,19 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" -"Last-Translator: Ingrid Pigueron \n" -"Language-Team: French " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Pablo Alba \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -"X-Generator: Weblate 5.13\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" -msgstr "Avez-vous déjà un compte ?" +msgstr "Vous avez déjà un compte ?" #: src/app/main/ui/auth/recovery_request.cljs:113, src/app/main/ui/auth/register.cljs:238 msgid "auth.check-mail" @@ -23,7 +23,7 @@ msgstr "Vérifiez vos emails" #, unused msgid "auth.check-your-email" msgstr "" -"Vérifiez votre email et cliquez sur le lien pour vérifier et commencer à " +"Vérifiez votre e-mail et cliquez sur le lien pour vérifier et commencer à " "utiliser Penpot." #: src/app/main/ui/auth/recovery.cljs:67 @@ -147,7 +147,7 @@ msgstr "Pas encore de compte ?" msgid "auth.register-account-tagline" msgstr "" "Faites nous savoir ce que nous devons vous montrer sur le tableau de bord " -"et dans les emails." +"et dans les e-mails." #: src/app/main/ui/auth/register.cljs:350 msgid "auth.register-account-title" @@ -181,7 +181,7 @@ msgstr "" "J'accepte les [termes du service](%s) et la [politique de " "confidentialité](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Conditions générales d'utilisation" @@ -208,7 +208,7 @@ msgstr "...image de marque, illustrations, supports marketing, etc." msgid "comments.mentions.not-found" msgstr "Aucun membre trouvé avec @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publier" @@ -280,7 +280,7 @@ msgstr "Partager les prototypes" msgid "common.share-link.view-all" msgstr "Tout sélectionner" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Dépublier" @@ -403,7 +403,7 @@ msgstr "Le jeton n'a pas de date d'expiration" msgid "dashboard.add-file" msgstr "Ajouter un fichier" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Ajouter une bibliothèque partagée" @@ -411,31 +411,31 @@ msgstr "Ajouter une bibliothèque partagée" msgid "dashboard.change-email" msgstr "Changer l'adresse e‑mail" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copie)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "+ Créer une nouvelle équipe" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Sauvegarder cette version" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Votre Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Supprimer l’équipe" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Télécharger le fichier Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Télécharger le fichier standard (.svg + .json)" @@ -519,7 +519,7 @@ msgstr "Commencez à fabriquer des choses géniales" msgid "dashboard.export-binary-multi" msgstr "Télécharger %s fichiers Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exporter les plans de travail au format PDF" @@ -535,7 +535,7 @@ msgstr "Exporter %s fichiers" msgid "dashboard.export-multiple.selected" msgstr "%s éléments sur les %s sélectionnés" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exporter" @@ -759,11 +759,11 @@ msgstr "Envoi des données au serveur (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Envoi du fichier : %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Inviter des personnes" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Quitter l’équipe" @@ -771,7 +771,7 @@ msgstr "Quitter l’équipe" msgid "dashboard.libraries-and-templates" msgstr "Bibliothèques et Modèles" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "" "Voici quelques bibliothèques et modèles que vous pouvez ajouter à votre " @@ -781,7 +781,7 @@ msgstr "" msgid "dashboard.libraries-and-templates.explore" msgstr "En explorez plus et découvrir comment contribuer" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "" "Il y avait un problème pendant l'importation de la modèle. La modèle n'est " @@ -819,7 +819,7 @@ msgstr "Déplacer vers une autre équipe" msgid "dashboard.new-file" msgstr "+ Nouveau fichier" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Nouveau fichier" @@ -827,7 +827,7 @@ msgstr "Nouveau fichier" msgid "dashboard.new-project" msgstr "+ Nouveau projet" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nouveau projet" @@ -835,11 +835,11 @@ msgstr "Nouveau projet" msgid "dashboard.no-matches-for" msgstr "Aucune correspondance pour « %s »" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Les projets épinglés apparaîtront ici" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Notifications" @@ -851,7 +851,7 @@ msgstr "Votre adresse e‑mail a bien été mise à jour" msgid "dashboard.notifications.email-verified-successfully" msgstr "Votre adresse e‑mail a bien été vérifiée" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Les paramètres des notifications ont été mis à jour" @@ -859,11 +859,11 @@ msgstr "Les paramètres des notifications ont été mis à jour" msgid "dashboard.notifications.password-saved" msgstr "Mot de passe enregistré avec succès !" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Voir les notifications" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s membres" @@ -895,7 +895,7 @@ msgstr "Vous êtes maintenant propriétaire dans cette équipe." msgid "dashboard.permissions-change.viewer" msgstr "Vous êtes maintenant lecteur dans cette équipe." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Épingler/Désépingler" @@ -932,7 +932,7 @@ msgstr "Vous ne faites plus partie de l'équipe « %s »." msgid "dashboard.save-settings" msgstr "Enregistrer les paramètres" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Rechercher…" @@ -1024,7 +1024,7 @@ msgstr "Notifications" msgid "dashboard.show-all-files" msgstr "Voir tous les fichiers" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Historique des versions" @@ -1048,7 +1048,7 @@ msgstr[1] "Vos fichiers ont bien été dupliqués" msgid "dashboard.success-duplicate-project" msgstr "Votre projet a bien été dupliqué" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Votre fichier a été déplacé avec succès" @@ -1060,15 +1060,15 @@ msgstr "Vos fichiers ont bien été déplacés" msgid "dashboard.success-move-project" msgstr "Votre projet a bien été déplacé" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Information de l’équipe" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Membres de l’équipe" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Projets de l’équipe" @@ -1088,7 +1088,7 @@ msgstr "Résultats de recherche" msgid "dashboard.type-something" msgstr "Écrivez pour rechercher" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Retirer la Bibliothèque" @@ -1096,41 +1096,41 @@ msgstr "Retirer la Bibliothèque" msgid "dashboard.update-settings" msgstr "Mettre à jour les paramètres" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Aucune limite à la créativité" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Gratuit" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Actif" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Quand ce webhook sera activé, les détails de l'évènement seront envoyés" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "" "Uniquement vous pouvez supprimer ou modifier les webhooks que vous avez " "créés." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Type de contenu" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Créer un webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook créé avec succès." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Les webhooks sont une manière simple de permettre à d'autres site web et " @@ -1138,11 +1138,11 @@ msgstr "" "dans Penpot. Nous enverrons une requête POST à toutes les URLs que vous " "avez indiquées." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Appuyez sur le bouton « Ajouter un webhook » pour en ajouter un." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Aucun webhook créé jusqu’à présent." @@ -1162,7 +1162,7 @@ msgstr "E‑mail" msgid "dashboard.your-name" msgstr "Votre nom complet" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Votre Penpot" @@ -1178,15 +1178,15 @@ msgstr "Attention" msgid "ds.component-subtitle" msgstr "Composants à mettre à jour :" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Autoriser" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Annuler" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "OK" @@ -1194,6 +1194,26 @@ msgstr "OK" msgid "ds.confirm-title" msgstr "Voulez-vous vraiment ?" +#: src/app/main/ui/ds/controls/numeric_input.cljs:98 +msgid "ds.inputs.numeric-input.no-applicable-tokens" +msgstr "Aucun token n'est applicable dans la collection ou le thème actif." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:99 +msgid "ds.inputs.numeric-input.no-matches" +msgstr "Aucune correspondance." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 +msgid "ds.inputs.numeric-input.open-token-list-dropdown" +msgstr "Ouvrir la liste des tokens" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 +msgid "ds.inputs.token-field.detach-token" +msgstr "Détacher le token" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 +msgid "ds.inputs.token-field.no-active-token-option" +msgstr "Ce token n'est pas disponible dans la collection ou le thème actif." + #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" msgstr "Le fournisseur d'authentification n'est pas autorisé pour ce profil" @@ -1248,7 +1268,7 @@ msgstr "Même si Penpot ne prend plus en charge ce type de ressource, vous pouve msgid "errors.deprecated.contact.text" msgstr "nous contacter" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "" "Impossible de mettre une collection parent dans le chemin d'un de ses " @@ -1274,11 +1294,11 @@ msgstr "L'adresse e-mail ne correspond pas à celle de l'invitation." msgid "errors.email-domain-not-allowed" msgstr "Domaine non autorisé" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "L'adresse e-mail « %s » a un taux de rebond trop élevé." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "L'e-mail \"%s\" a été signalé comme spam ou a été rejeté." @@ -1292,10 +1312,9 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "La fonctionnalité '%s' n'est pas prise en charge." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused +#: src/app/main/ui/workspace/tokens/management/create/form.cljs msgid "errors.field-max-length" -msgstr "Doit contenir au plus 1 caractère." +msgstr "Doit contenir au plus %s caractères." #, unused msgid "errors.field-min-length" @@ -1317,7 +1336,7 @@ msgstr "" "celles du fichier que tentez d'ouvrir. Vous devez activer les migrations " "pour '%s' avant de pouvoir ouvrir le fichier." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Un problème s’est produit." @@ -1367,13 +1386,13 @@ msgstr "Cette invitation est peut-être été annulée ou a expiré." msgid "errors.ldap-disabled" msgstr "Authentification LDAP désactivée." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "" "Vous avez atteint le quota maximal de « %s ». Contactez l'assistance " "technique." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Le nombre maximum (%s) d'e-mails qui peuvent être invités dans une seule " @@ -1393,7 +1412,7 @@ msgstr "" msgid "errors.media-type-not-allowed" msgstr "L’image ne semble pas être valide." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "L'adresse e-mail du profil que vous invitez est ignorée (signalée comme " @@ -1429,7 +1448,7 @@ msgstr "Données dans le presse-papier non valides" msgid "errors.profile-blocked" msgstr "Le profil est bloqué" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "L'adresse e-mail de votre profil est ignorée (signalée comme spam ou taux " @@ -1447,23 +1466,23 @@ msgstr "Le fichier SVG n'est pas valide ou est mal formé" msgid "errors.team-feature-mismatch" msgstr "Fonctionnalité incompatible détectée '%s'" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Il n'y a pas assez de membres pour quitter l'équipe, vous voulez " "probablement la supprimer." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Le membre que vous essayez d'assigner n'existe pas." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Le propriétaire ne peut pas quitter l'équipe, vous devez réassigner le rôle " "de propriétaire." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Une collection avec le même nom existe déjà" @@ -1472,13 +1491,13 @@ msgstr "Une collection avec le même nom existe déjà" msgid "errors.token-set-doesnt-exists" msgstr "Impossible de dupliquer une collection inconnue" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "" "Impossible de déposer, une collection avec le même nom existe déjà dans ce " "chemin." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Une option de thème avec le même nom existe déjà" @@ -1488,7 +1507,7 @@ msgstr "Une erreur inattendue s’est produite." #: src/app/main/ui/auth/verify_token.cljs:62 msgid "errors.unexpected-token" -msgstr "Token inconnu" +msgstr "Jeton inconnu" #, unused msgid "errors.validation" @@ -1508,31 +1527,31 @@ msgstr "" msgid "errors.version-not-supported" msgstr "Le numéro de version du fichier est incompatible" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Erreur de connexion, URL inaccessible" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "L'URL ne passe pas la validation." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Il y a eu une erreur dans le dernier envoi." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Erreur lors de la validation SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Délai d'attente dépassé" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Erreur inattendue lors de la validation" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Statut inattendu %s" @@ -1575,7 +1594,7 @@ msgstr "" #: src/app/main/ui/settings/feedback.cljs:65 msgid "feedback.title" -msgstr "Email" +msgstr "E-mail" #: src/app/main/ui/settings/feedback.cljs:102 msgid "feedback.twitter-go-to" @@ -1597,7 +1616,7 @@ msgstr "Une erreur s’est produite" msgid "inspect.attributes.blur" msgstr "Flou" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Valeur" @@ -1605,15 +1624,15 @@ msgstr "Valeur" msgid "inspect.attributes.color" msgstr "Couleur" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1621,7 +1640,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Remplir" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Télécharger l’image source" @@ -1715,35 +1734,37 @@ msgstr "Solide" msgid "inspect.attributes.stroke.width" msgstr "Épaisseur" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Typographie" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Police de caractères" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Taille de police" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Style de police" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Graisse de la police" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Interlettrage" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Interlignage" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Décoration de texte" @@ -1751,35 +1772,36 @@ msgstr "Décoration de texte" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "Barré" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Aucune" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Souligné" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformation de texte" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Première lettre en capitale" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Minuscule" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Aucune" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Non assigné" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Majuscules" @@ -1791,15 +1813,15 @@ msgstr "Propriétés de la variante" msgid "inspect.attributes.variants" msgstr "Propriétés des variantes" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "Pour en savoir plus sur l'inspection, visitez le centre d'aide de Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Plus d'informations sur l'inspection" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Sélectionnez une forme, un plan de travail ou un groupe pour inspecter " @@ -1865,15 +1887,23 @@ msgstr "SVG" msgid "inspect.tabs.code.selected.text" msgstr "Texte" +#: src/app/main/ui/inspect/right_sidebar.cljs:109 +msgid "inspect.tabs.computed" +msgstr "Calculé" + #: src/app/main/ui/inspect/right_sidebar.cljs:114 msgid "inspect.tabs.info" msgstr "Information" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/inspect/right_sidebar.cljs:165 +msgid "inspect.tabs.switcher.label" +msgstr "Info sur la couche" + +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Tout marquer comme lu" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Raccourcis" @@ -1885,11 +1915,11 @@ msgstr "Accepter" msgid "labels.access-tokens" msgstr "Jetons d'accès" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Activé" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Ajouter" @@ -1897,11 +1927,11 @@ msgstr "Ajouter" msgid "labels.add-custom-font" msgstr "Ajouter police personnalisée" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Ajout…" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Administration" @@ -1909,7 +1939,7 @@ msgstr "Administration" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Tous" @@ -1932,7 +1962,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Bad Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Annuler" @@ -1940,11 +1970,11 @@ msgstr "Annuler" msgid "labels.canva" msgstr "Canevas" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Fermer" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Réduire" @@ -1956,11 +1986,11 @@ msgstr "Commentaire" msgid "labels.comment.mark-as-solved" msgstr "Marquer comme résolu" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Commentaires" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Communauté" @@ -1968,7 +1998,7 @@ msgstr "Communauté" msgid "labels.confirm-password" msgstr "Confirmer le mot de passe" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continuer" @@ -1984,11 +2014,11 @@ msgstr "Vous pouvez continuer avec un compte Penpot" msgid "labels.copy" msgstr "Copier" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Copier la couleur" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Copier le lien" @@ -1996,7 +2026,7 @@ msgstr "Copier le lien" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Créer" @@ -2016,7 +2046,7 @@ msgstr "Polices personnalisées" msgid "labels.dashboard" msgstr "Tableau de bord" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Supprimer" @@ -2028,7 +2058,7 @@ msgstr "Supprimer le commentaire" msgid "labels.delete-comment-thread" msgstr "Supprimer le fil" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Supprimer l'invitation" @@ -2045,19 +2075,19 @@ msgstr "Développeur" msgid "labels.director" msgstr "Directeur" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Rejeter" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Brouillons" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "Dupliquer" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Modifier" @@ -2065,11 +2095,11 @@ msgstr "Modifier" msgid "labels.edit-file" msgstr "Modifier le fichier" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Éditeur" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "Vide" @@ -2082,11 +2112,11 @@ msgstr "Erreur" msgid "labels.event" msgstr "Événement" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Expirée" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exporter" @@ -2114,7 +2144,7 @@ msgstr "Fournisseurs de polices" msgid "labels.font-variants" msgstr "Styles" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Polices" @@ -2128,11 +2158,11 @@ msgstr "Fondateur/Direction" msgid "labels.freelancer" msgstr "Je suis freelance" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Référentiel GitHub" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Donnez votre avis" @@ -2144,7 +2174,7 @@ msgstr "Retour" msgid "labels.graphic-design" msgstr "Designer graphique" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Centre d'aide" @@ -2152,15 +2182,15 @@ msgstr "Centre d'aide" msgid "labels.hide" msgstr "Cacher" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Masquer les commentaires résolus" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Importer" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inactif" @@ -2182,7 +2212,7 @@ msgstr "Erreur interne" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Invitations" @@ -2190,7 +2220,7 @@ msgstr "Invitations" msgid "labels.language" msgstr "Langue" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Bibliothèques et modèles" @@ -2210,7 +2240,7 @@ msgstr "Se connecter ou s'inscrire" msgid "labels.login" msgstr "Connexion" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Se déconnecter" @@ -2218,11 +2248,11 @@ msgstr "Se déconnecter" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Membre" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Membres" @@ -2230,23 +2260,27 @@ msgstr "Membres" msgid "labels.mention" msgstr "Mention" +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 +msgid "labels.mixed-values" +msgstr "Mélangé" + #: src/app/main/ui/settings/password.cljs:84 msgid "labels.new-password" msgstr "Nouveau mot de passe" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Suivant" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Vous n’avez aucune notification de commentaire en attente." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Aucune invitation en attente." -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "Rassemblez votre équipe et créez de grandes choses ensemble." @@ -2265,7 +2299,7 @@ msgstr "Oups !" msgid "labels.notifications" msgstr "Notifications" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 fichier" @@ -2277,7 +2311,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 plan de travail" msgstr[1] "%s plans de travail" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 projet" @@ -2296,7 +2330,7 @@ msgstr "Ancien mot de passe" msgid "labels.only-yours" msgstr "Seulement les vôtres" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Options" @@ -2312,7 +2346,7 @@ msgstr "Autres (précisez)" msgid "labels.other-short" msgstr "Autre" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Propriétaire" @@ -2320,11 +2354,11 @@ msgstr "Propriétaire" msgid "labels.password" msgstr "Mot de passe" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "En attente" -#: src/app/main/ui/dashboard/sidebar.cljs:750 +#: src/app/main/ui/dashboard/sidebar.cljs:751 msgid "labels.pinned-projects" msgstr "Projets épinglés" @@ -2348,7 +2382,7 @@ msgstr "Gestionnaire de produit ou de projet" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projets" @@ -2356,7 +2390,7 @@ msgstr "Projets" msgid "labels.refresh" msgstr "Actualiser" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Notes de version" @@ -2370,11 +2404,11 @@ msgstr "Actualiser le fichier" msgid "labels.remove" msgstr "Supprimer" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Retirer le membre" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Renommer" @@ -2402,7 +2436,7 @@ msgstr "nouvelle réponse" msgid "labels.reply.thread" msgstr "Répondre" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Renvoyer l'invitation" @@ -2414,15 +2448,15 @@ msgstr "Restaurer" msgid "labels.retry" msgstr "Réessayer" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rôle" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Enregistrer" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Rechercher" @@ -2450,11 +2484,11 @@ msgstr "Nous sommes en maintenance planifiée de nos systèmes." msgid "labels.service-unavailable.main-message" msgstr "Service non disponible" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Collections" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Configuration" @@ -2466,7 +2500,7 @@ msgstr "Partager" msgid "labels.share-prototype" msgstr "Partager le prototype" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibliothèques" @@ -2474,7 +2508,7 @@ msgstr "Bibliothèques" msgid "labels.show" msgstr "Afficher" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Afficher tous les commentaires" @@ -2482,11 +2516,11 @@ msgstr "Afficher tous les commentaires" msgid "labels.show-comments-list" msgstr "Afficher la liste des commentaires" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Afficher uniquement vos mentions" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Afficher uniquement vos commentaires" @@ -2494,11 +2528,15 @@ msgstr "Afficher uniquement vos commentaires" msgid "labels.sketch" msgstr "Sketch" +#: src/app/main/ui/dashboard/sidebar.cljs:730 +msgid "labels.sources" +msgstr "Sources" + #: src/app/main/ui/onboarding/questions.cljs:55 msgid "labels.start" msgstr "Commencer" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Statut" @@ -2520,11 +2558,11 @@ msgstr "Membre d'une équipe" msgid "labels.themes" msgstr "Thèmes" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutoriels" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Erreur inconnue" @@ -2556,15 +2594,15 @@ msgstr "Télécharger des polices personnalisées" msgid "labels.uploading" msgstr "Téléchargement…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Lecture seule" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Spectateur" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2572,11 +2610,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Écrire un nouveau commentaire" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(vous)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Votre compte" @@ -2609,7 +2647,7 @@ msgstr "Concevez de manière agile en contrôlant la disposition comme avec du C #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Disposition automatique comme avec le CSS" +msgstr "Disposition comme avec le CSS" #: src/app/main/ui/ds/product/loader.cljs:27 msgid "loader.tips.04.message" @@ -2671,23 +2709,23 @@ msgstr "" msgid "loader.tips.10.title" msgstr "Gestion des extensions" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Choisir image" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Dégradé" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Image" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Conserver le ratio" @@ -2705,7 +2743,7 @@ msgstr "Chargement de l’image…" msgid "media.radial" msgstr "Radial" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Solide" @@ -2781,19 +2819,19 @@ msgstr "Créer un jeton" msgid "modals.create-access-token.title" msgstr "Générer un jeton d'accès" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Créer un webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Créer un webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL de charge utile" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2841,11 +2879,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Supprimer une conversation" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Confirmez-vous vouloir supprimer cette note ?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Supprimer la note" @@ -2893,11 +2931,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Suppression de la police" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Voulez-vous vraiment supprimer cette page ?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Supprimer une page" @@ -2943,29 +2981,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Suppression du fichier" msgstr[1] "Suppression des fichiers" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Supprimer l’équipe" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Voulez-vous vraiment supprimer cette équipe ? Tous les projets et fichiers " "associés à l’équipe seront définitivement supprimés." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Suppression d’une équipe" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Supprimer le membre" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Voulez-vous vraiment supprimer ce membre de l’équipe ?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Supprimer un membre d’équipe" @@ -2979,57 +3017,57 @@ msgstr[1] "" "Les éléments déjà utilisés dans ces fichiers resteront en place (aucun " "design ne sera altéré)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Supprimer le webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Vous confirmez vouloir supprimer le webhook ?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Suppression du webhook en cours" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Modifier le webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Modifier le webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Envoyer l'invitation" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Adresse e-mail, séparées par des virgules" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Certains emails appartiennent à des membres actuels de l'équipe. Les " "invitations ne leur seront pas envoyées." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Vous pouvez inviter des membres dans l'équipe pour qu'ils accèdent à ce " "fichier ainsi que tous les autres fichiers de l'équipe." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Inviter des membres dans l'équipe" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Comme vous êtes le seul membre de l'équipe, celle-ci sera supprimée avec " "ses projets et fichiers." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Voulez-vous vraiment quitter l'équipe %s ?" @@ -3057,15 +3095,15 @@ msgstr "Sélectionnez un membre à promouvoir" msgid "modals.leave-and-reassign.title" msgstr "Sélectionnez un membre à promouvoir" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Quitter l’équipe" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Voulez-vous vraiment quitter cette équipe ?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Quitter l’équipe" @@ -3087,39 +3125,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Déplacer librairie" msgstr[1] "Déplacer librairies" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Taille du décalage" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Promouvoir" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Si vous transférez la propriété, vous changerez votre rôle en Admin, " "perdant ainsi certaines permissions sur cette équipe. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Vous êtes le propriétaire actuel de cette équipe. Voulez-vous vraiment " "promouvoir %s comme nouveau propriétaire de l'équipe ?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Promouvoir propriétaire" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publier" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Votre bibliothèque est vide. Voulez-vous la publier quand même ?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Publier la bibliothèque vide" @@ -3174,21 +3212,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Mise à jour des composants dans une bibliothèque partagée" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Actualiser le composant" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Annuler" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Vous êtes sur le point de mettre à jour le composant d’une bibliothèque " "partagée. Cela peut affecter d’autres fichiers qui l’utilisent." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Actualiser le composant d’une bibliothèque" @@ -3304,11 +3342,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Il y a une nouvelle version disponible. Rafraîchissez la page" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "L'e‑mail d'invitation a bien été envoyé" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Lien d'invitation copié" @@ -3468,7 +3506,7 @@ msgstr "" "N'oubliez pas d'inclure tout le monde. Développeurs, concepteurs, " "gestionnaires... la diversité fait la force :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Inviter avec le rôle :" @@ -3686,193 +3724,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Aller à la page de connexion" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Détacher" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Divers" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Supprimer la couleur" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Sélectionnez les éléments qui utilisent ce style" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Bases" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Tableau de bord" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Spectateur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Espace de travail" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Alignement" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Modifier" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Générique" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Générique" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu principal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modifier les calques" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panneaux" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Tracés" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Textes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Outils" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Commentaires" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Ajouter un nœud" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Aligner en bas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Aligner au centre" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Aligner horizontalement au centre" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Aligner justifié" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Aligner à gauche" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Aligner à droite" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Aligner en haut" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Aligner verticalement au centre" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Créer un plan de travail à partir de la sélection" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Basculer en gras" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Soustraction booléenne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Exclusion booléenne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Intersection booléenne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Union booléenne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Mettre à l'arrière-plan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Déplacer en arrière" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Déplacer vers l'avant" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Mettre au premier plan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Rétablir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copier" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Copier le lien" @@ -3881,287 +3919,271 @@ msgstr "Copier le lien" msgid "shortcuts.copy-props" msgstr "Copier les propriétés" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Créer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Couper" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Dézoomer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Supprimer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Supprimer le nœud" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Détacher le composant" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Courbe" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Ellipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Plan de travail" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Dessiner un tracé" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Tracé" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rectangle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Texte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Dupliquer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Annuler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Exporter les formes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Zoom ajusté" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Retourner horizontalement" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Retourner verticalement" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Réduire la taille de la police" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Augmenter la taille de la police" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Accéder aux brouillons" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Accéder aux bibliothèques partagées" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Recherche" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Grouper" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Répartir horizontalement" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Afficher/masquer l'interface utilisateur" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Zoom avant" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Insérer une image" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Basculer en italique" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Joindre les nœuds" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Réduire l'espacement entre les lettres" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Augmenter l'espacement entre les lettres" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Réduire la hauteur de ligne" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Augmenter la hauteur de ligne" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Activer/désactiver texte barré" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Créer un coin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Faire une courbe" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Masque" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Fusionner les nœuds" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Déplacer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Déplacement rapide vers le bas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Déplacement rapide vers la gauche" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Déplacez-vous rapidement vers la droite" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Déplacement rapide vers le haut" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Déplacer le nœud" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Déplacer vers le bas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Déplacer vers la gauche" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Déplacer vers la droite" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Déplacer vers le haut" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Plan de travail suivant" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Aucun raccourci trouvé" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Définir l'opacité à 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Définir l'opacité à 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Définir l'opacité à 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Définir l'opacité à 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Définir l'opacité à 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Définir l'opacité à 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Définir l'opacité à 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Définir l'opacité à 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Définir l'opacité à 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Définir l'opacité à 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Sélecteur de couleurs" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Accéder aux commentaires des spectateurs" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Accéder au tableau de bord" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Aller à l'inspecteur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Accéder aux interactions des spectateurs" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Accéder aux interactions des spectateurs" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Accéder à l’espace de travail" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " ou " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Coller" @@ -4175,191 +4197,191 @@ msgstr "Coller les propriétés" msgid "shortcuts.plugins" msgstr "Gestionnaire d'extensions" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Plan de travail précédent" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Rétablir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Renommer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Réinitialiser le zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Échelle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Rechercher des raccourcis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Tout sélectionner" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Sélectionner le calque suivant" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Sélectionner le calque parent" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Sélectionner le calque précédent" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Séparer les nœuds" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Afficher/masquer la grille de pixels" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Afficher/masquer les raccourcis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Aligner sur les nœuds" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Aligner sur la grille de pixels" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Commencer l'édition" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Commencer la mesure" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Arrêter la mesure" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Définir les vignettes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Raccourcis clavier" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Activer/désactiver l'alignement dynamique" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Activer/désactiver les ressources" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Activer/désactiver la palette de couleurs" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Activer/désactiver le mode focus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Activer/désactiver le plein écran" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Afficher/Masquer les repères" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Activer/désactiver l'historique" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Activer/désactiver les calques" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Ajouter/supprimer flex layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Ajouter / Retirer grid layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Verrou sélectionné" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Verrouiller les proportions" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Afficher/Masquer les règles" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Aligner sur les repères" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Aligner sur les repères de règles" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Afficher/masquer la palette de texte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Changer de thème" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Afficher/Masquer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Alterner le style de zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Activer/désactiver le soulignement" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Annuler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Dissocier" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Démasquer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribuer verticalement" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Réduire le zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Augmenter le zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zoomer sur la sélection" @@ -4415,7 +4437,7 @@ msgstr "Votre abonnement :" msgid "subscription.dashboard.team-plan" msgstr "Abonnement Équipe" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "Mise à niveau" @@ -4537,7 +4559,7 @@ msgstr "Illimité (essai)" msgid "subscription.settings.unlimited.bill" msgstr "Facture mensuelle plafonnée" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "Mettre à niveau votre abonnement" @@ -4593,19 +4615,19 @@ msgstr "Mot de passe – Penpot" msgid "title.settings.profile" msgstr "Profil – Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Invitations – %s – Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Membres – %s – Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Paramètres – %s – Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks – %s – Penpot" @@ -4677,43 +4699,43 @@ msgstr "Afficher les interactions au clic" msgid "viewer.header.sitemap" msgstr "Plan du site" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Le dernier envoi a réussi." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Aligner horizontalement au centre (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Répartir l’espacement horizontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Aligner à gauche (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Aligner à droite (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Aligner en bas (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Aligner verticalement au centre (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Répartir l’espacement vertical (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Aligner en haut (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Ajouter une bibliothèque" @@ -4722,19 +4744,19 @@ msgstr "Ajouter une bibliothèque" msgid "workspace.assets.assets" msgstr "Ressources" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Toutes les ressources" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Couleurs" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Ajouter une couleur" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Composants" @@ -4742,25 +4764,25 @@ msgstr "Composants" msgid "workspace.assets.components.add-component" msgstr "Ajouter un composant" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s variantes" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Créer un groupe" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Vos éléments seront nommées automatiquement sous la forme « nom du groupe / " "nom de l'élément »" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Supprimer" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Dupliquer" @@ -4768,11 +4790,11 @@ msgstr "Dupliquer" msgid "workspace.assets.duplicate-main" msgstr "Dupliquer le principal" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Modifier" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filtrer" @@ -4781,27 +4803,27 @@ msgstr "Filtrer" msgid "workspace.assets.graphics" msgstr "Graphiques" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Vue en grille" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Grouper" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nom du groupe" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Vue en liste" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "Bibliothèque locale" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Gérer la bibliothèque" @@ -4813,15 +4835,15 @@ msgstr "Aucune ressource trouvée" msgid "workspace.assets.open-library" msgstr "Ouvrir le fichier de la bibliothèque" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Renommer" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Renommer le groupe" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Chercher des ressources" @@ -4837,21 +4859,21 @@ msgstr[1] "%s éléments sélectionnés" msgid "workspace.assets.shared-library" msgstr "Bibliothèque partagée" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 composant" msgstr[1] "%s composants" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Trier" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Typographies" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Ajouter une typographie" @@ -4876,7 +4898,7 @@ msgstr "Interlettrage" msgid "workspace.assets.typography.line-height" msgstr "Interlignage" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4888,59 +4910,59 @@ msgstr "Styles de texte" msgid "workspace.assets.typography.text-transform" msgstr "Transformer le texte" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Dissocier" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Créer une zone" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Créer un tableau" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Fusionner les cellules" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Ajouter une colonne à droite" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Ajouter une colonne à gauche" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Supprimer la colonne" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Supprimer la colonne et le contenu" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Dupliquer la colonne" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Ajouter une ligne en-dessous" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Ajouter une ligne au-dessus" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Supprimer la ligne" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Supprimer la ligne et son contenu" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Dupliquer la ligne" @@ -4948,7 +4970,7 @@ msgstr "Dupliquer la ligne" msgid "workspace.focus.focus-mode" msgstr "Mode focus" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Focus désactivé" @@ -4968,11 +4990,11 @@ msgstr "Dégradé linéaire" msgid "workspace.gradients.radial" msgstr "Dégradé radial" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Désactiver l’alignement dynamique" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Désactiver l'échelle proportionnelle" @@ -4981,23 +5003,23 @@ msgstr "Désactiver l'échelle proportionnelle" msgid "workspace.header.menu.disable-scale-text" msgstr "Désactiver la mise à l'échelle du texte" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Désactiver l’alignement sur les repères" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Désactiver l’accrochage au pixel" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Désactiver l'alignement sur les repères de règles" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Activer l’alignement dynamique" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Activer l'échelle proportionnelle" @@ -5006,51 +5028,51 @@ msgstr "Activer l'échelle proportionnelle" msgid "workspace.header.menu.enable-scale-text" msgstr "Activer le redimensionnement du texte" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Aligner sur les repères" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Activer l’alignement au pixel" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Aligner sur les repères de règles" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Masquer le nom des plans de travail" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Masquer les repères" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Masquer la palette de couleurs" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Masquer la grille de pixels" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Masquer les règles" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Masquer la palette de polices" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Modifier" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Fichier" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Aide et information" @@ -5059,63 +5081,63 @@ msgstr "Aide et information" msgid "workspace.header.menu.option.power-up" msgstr "Booster votre offre" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Préférences" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Vue" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Rétablir" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Tout sélectionner" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Afficher le nom des plans de travail" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Afficher les repères" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Afficher la palette de couleurs" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Afficher la grille de pixels" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Afficher les règles" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Afficher la palette des polices" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Basculer vers le thème sombre" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Basculer vers le thème clair" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "Activer le thème système" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Annuler" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Réinitialiser" @@ -5131,7 +5153,7 @@ msgstr "Enregistré" msgid "workspace.header.saving" msgstr "Enregistrement" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Partager" @@ -5140,11 +5162,11 @@ msgstr "Partager" msgid "workspace.header.unsaved" msgstr "Modifications non enregistrées" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Mode spectateur (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zoom" @@ -5156,7 +5178,7 @@ msgstr "Remplir l’écran" msgid "workspace.header.zoom-fit" msgstr "Ajuster à l’écran" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Zoomer pour montrer tous les éléments" @@ -5164,43 +5186,43 @@ msgstr "Zoomer pour montrer tous les éléments" msgid "workspace.header.zoom-full-screen" msgstr "Plein écran" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zoomer sur la sélection" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Modifier la grille" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Quitter" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Marge intérieure du bas" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Afficher les options de marge intérieure sur les 4 côtés" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Marge intérieure horizontale" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Marge intérieure de gauche" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Marge intérieure de droite" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Marge intérieure du haut" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Marge intérieure verticale" @@ -5216,7 +5238,7 @@ msgstr "Terminé" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Montrer" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Montrer la disposition en grille" @@ -5225,10 +5247,6 @@ msgstr "Montrer la disposition en grille" msgid "workspace.libraries.add" msgstr "Ajouter" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s couleurs" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Il n'y a pas encore de styles de couleur dans votre bibliothèque" @@ -5255,45 +5273,37 @@ msgstr "Dernières couleurs utilisées" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Couleurs complémentaires RVB" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RVBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Enregistrer le style de couleur" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s composants" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Ou ajouter une parmi celles-ci pour essayer :" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "" "Il n'y a pas de bibliothèque partagée dans votre équipe, vous pouvez " "regarder" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "quelques modèles par ici" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Bibliothèque du fichier" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s graphiques" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTHÈQUES DANS CE FICHIER" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTHÈQUES" @@ -5302,11 +5312,11 @@ msgstr "BIBLIOTHÈQUES" msgid "workspace.libraries.library" msgstr "BIBLIOTHÈQUE" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "MISES À JOUR DE LA BIBLIOTHÈQUE" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Chargement…" @@ -5315,51 +5325,47 @@ msgstr "Chargement…" msgid "workspace.libraries.more-templates" msgstr "Vous pouvez rechercher " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Aucune bibliothèque partagée n’a besoin d’être mise à jour" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Aucune correspondance pour « %s »" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Rechercher des bibliothèques partagées" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "BIBLIOTHÈQUES PARTAGÉES" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Connecter librairie" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Plusieurs typographies" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Dissocier toutes les typographies" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s typographies" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Déconnecter librairie" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Mettre à jour" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "Voir tous les changements" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "MISES À JOUR" @@ -5367,31 +5373,31 @@ msgstr "MISES À JOUR" msgid "workspace.notification-pill.detail" msgstr "Détails" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Cliquez sur le bouton « + » pour ajouter des interactions." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Ajouter du flou" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Supprimer le flou" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Flou" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Flou de groupe" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Flou de sélection" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Activer/Désactiver le flou" @@ -5399,83 +5405,83 @@ msgstr "Activer/Désactiver le flou" msgid "workspace.options.canvas-background" msgstr "Couleur de fond du canvas" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Tronquer le contenu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Composant" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Note" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Copier" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Créer une note" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Modifier une note" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Principal" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Échanger composant" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Cette librairie ne contient aucun élément pour le moment" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "Délié" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:264 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 msgid "workspace.options.component.variant.duplicated.single.one" msgstr "" "Cette variante possède des propriétés et des valeurs identiques à celles " "d'une autre variante." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:270 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 msgid "workspace.options.component.variant.duplicated.single.some" msgstr "" "Certaines de ces variantes possèdent des propriétés et des valeurs " "identiques." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "Chercher les variantes non valides" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "Le nom de certaines variantes n'est pas valide" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "Le nom de ces variantes n'est pas valide." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "Le nom de cette variante n'est pas valide." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "Le nom de certaines de ces variantes n'est pas valide." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[propriété]=[valeur], [propriété]=[valeur]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "Essayez d'utiliser la structure suivante :" @@ -5497,7 +5503,7 @@ msgstr "Sont du même type" msgid "workspace.options.component.variants-help-modal.rule3" msgstr "Possèdent le même niveau hiérarchique" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:935, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1157, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 msgid "workspace.options.component.variants-help-modal.title" msgstr "Comment les variantes restent connectées" @@ -5541,7 +5547,7 @@ msgstr "Haut" msgid "workspace.options.constraints.topbottom" msgstr "Haut et bas" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Conception" @@ -5554,21 +5560,21 @@ msgstr "Exporter" msgid "workspace.options.export-multiple" msgstr "Exporter la sélection" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Exporter 1 élément" msgstr[1] "Exporter %s éléments" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Ajouter une exportation" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Supprimer l'exportation" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Suffixe" @@ -5576,7 +5582,7 @@ msgstr "Suffixe" msgid "workspace.options.exporting-complete" msgstr "Exportation terminée" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exportation…" @@ -5588,27 +5594,27 @@ msgstr "L'exportation a échoué" msgid "workspace.options.exporting-object-slow" msgstr "L'exportation est d'une lenteur inattendue" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Remplissage" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Ajouter remplissage" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Supprimer la couleur de remplissage" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Ajuster la taille du plan de travail au contenu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Indiquer le début du flux" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Flux" @@ -5617,19 +5623,19 @@ msgstr "Flux" msgid "workspace.options.flows.flow-start" msgstr "Début du flux" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Début des flux" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Supprimer le flux" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automatique" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Colonnes" @@ -5638,7 +5644,7 @@ msgstr "Colonnes" msgid "workspace.options.grid.grid-title" msgstr "Quadrillage" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Couleur" @@ -5647,15 +5653,15 @@ msgstr "Couleur" msgid "workspace.options.grid.params.columns" msgstr "Colonnes" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Gouttière" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Hauteur" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Marge" @@ -5664,7 +5670,7 @@ msgstr "Marge" msgid "workspace.options.grid.params.rows" msgstr "Lignes" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Définir par défaut" @@ -5678,159 +5684,159 @@ msgstr "Taille" msgid "workspace.options.grid.params.type" msgstr "Type" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Bas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centre" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Gauche" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Droite" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Étirer" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Haut" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Utiliser la valeur par défaut" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Largeur" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Lignes" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Carré" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Remplissage de groupe" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Contour de groupe" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Ajouter un repère" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Supprimer le repère" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Guides" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Afficher/Masquer le repère" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Hauteur" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspecter" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Action" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Après un délai" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animation" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Dissolution" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Aucune" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Pousser" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Glissement" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "automatique" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Ajouter une superposition d'arrière-plan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Fermer en cliquant a l'extérieur" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Fermer la superposition" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Fermer la superposition : %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Délai" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destination" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Durée" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linéaire" @@ -5839,47 +5845,47 @@ msgstr "Linéaire" msgid "workspace.options.interaction-in" msgstr "Dans" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Entrée de la souris" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Sortie de la souris" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Naviguer vers" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Naviguer vers : %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(non définie)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Effet de décalage" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Au clic" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Ouvrir la superposition" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Ouvrir la superposition : %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Ouvrir l'URL" @@ -5888,87 +5894,87 @@ msgstr "Ouvrir l'URL" msgid "workspace.options.interaction-out" msgstr "Sortie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Centré en bas" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "En bas à gauche" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "En bas à droite" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Au centre" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manuel" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Centrer en haut" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "En haut à gauche" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "En haut à droite" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Position" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Conserver la position du défilement" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Écran précédent" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relatif à" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "soi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Activer/désactiver la superposition" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Activer/désactiver la superposition : %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Déclencheur" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "En survolant" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "En appuyant" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interactions" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Ajouter une interaction" @@ -5977,67 +5983,67 @@ msgstr "Ajouter une interaction" msgid "workspace.options.interactions.remove-interaction" msgstr "Supprimer l'interaction" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Couleur" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Densité plus forte" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Densité plus faible" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Assombrir" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Différence" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Exclusion" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Lumière crue" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Teinte" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Éclaircir" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminosité" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Produit" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Incrustation" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturation" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Superposition" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Lumière tamisée" @@ -6056,7 +6062,7 @@ msgstr "Grouper les calques" msgid "workspace.options.layer-options.title.multiple" msgstr "Calques sélectionnés" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Afficher/Cacher le calque" @@ -6065,19 +6071,19 @@ msgstr "Afficher/Cacher le calque" msgid "workspace.options.layout-item.advanced-ops" msgstr "Options avancées" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Hauteur max" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Largeur max" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Hauteur min" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Largeur min" @@ -6191,15 +6197,15 @@ msgstr "espace entre" msgid "workspace.options.layout.top" msgstr "En haut" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Plus de couleurs" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Plus de couleurs de la bibliothèque" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacité" @@ -6208,35 +6214,35 @@ msgstr "Opacité" msgid "workspace.options.position" msgstr "Position" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototype" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Rayon" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "En bas à gauche" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "En bas à droite" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "En haut à gauche" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "En haut à droite" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Cacher les rayons indépendants" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Afficher les rayons indépendants" @@ -6248,7 +6254,7 @@ msgstr "Récentes" msgid "workspace.options.retry" msgstr "Réessayer" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotation" @@ -6256,33 +6262,33 @@ msgstr "Rotation" msgid "workspace.options.search-font" msgstr "Rechercher une police" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Sélectionnez une forme, un plan de travail ou un groupe pour faire glisser " "une connexion vers un autre plan de travail." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Couleurs sélectionnées" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Remplissage de sélection" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Contour de sélection" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Ajouter une ombre" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Flou" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Couleur de l'ombre" @@ -6294,63 +6300,64 @@ msgstr "Ombre portée" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Ombre intérieure" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Supprimer l'ombre" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Diffusion" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Ombre" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Ombre de groupe" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Ombres de la sélection" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Afficher/Cacher l'ombre" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Afficher dans les exportations" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Montrer en mode spectateur" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Taille" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Tailles prédéfinies" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "Bloquer le ratio" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "Débloquer le ratio" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Bordure" @@ -6359,7 +6366,7 @@ msgstr "Bordure" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Marqueur cercle" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Cercle" @@ -6368,7 +6375,7 @@ msgstr "Cercle" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Marqueur diamant" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamant" @@ -6377,19 +6384,19 @@ msgstr "Diamant" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Flèche de ligne" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Flèche" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Aucune" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Rond" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Carré" @@ -6398,7 +6405,7 @@ msgstr "Carré" msgid "workspace.options.stroke-cap.square-marker" msgstr "Marqueur carré" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Rectangle" @@ -6407,83 +6414,83 @@ msgstr "Rectangle" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Flèche triangle" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Triangle" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Couleur du tracé" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Largeur du tracé" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Ajouter une couleur du tracé" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centre" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Tirets" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Pointillé" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Intérieur" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Mixte" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Extérieur" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Supprimer la couleur du tracé" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Solide" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Aligner en bas" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Aligner verticalement au milieu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Aligner en haut" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "Gauche à droite" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "Droite à gauche" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Hauteur automatique" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Largeur automatique" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fixe" @@ -6505,35 +6512,35 @@ msgstr "Minuscule" msgid "workspace.options.text-options.none" msgstr "Aucune" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Barré (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Aligner au centre" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Justifier" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Aligner à gauche" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Aligner à droite" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Texte" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Texte de groupe" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Texte de la sélection" @@ -6542,7 +6549,7 @@ msgstr "Texte de la sélection" msgid "workspace.options.text-options.titlecase" msgstr "Premières Lettres en Capitales" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Soulignage (%s)" @@ -6551,21 +6558,21 @@ msgstr "Soulignage (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Majuscule" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Utilisez le bouton de lecture dans l’en‑tête pour exécuter la vue du " "prototype." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Largeur" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Axe X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Axe Y" @@ -6609,82 +6616,82 @@ msgstr "Dissocier les nœuds (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Aligner les nœuds (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Ouvrir" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Découvrir [plus d'extensions](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Aucune extension installée pour le moment" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Le fichier de définition de l'extension est incorrect." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Vous devez être éditeur pour utiliser cette extension" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Cette extension n'existe pas ou l'URL n'est pas correcte." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Installer" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Extensions installées" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Gestionnaire d'extensions" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Extensions" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "METTRE À JOUR CETTE EXTENSION" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "Cette extension a été modifiée depuis que vous l'avez ouverte. Elle " "souhaite maintenant accéder à :" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Télécharger des fichiers." -#: src/app/main/ui/workspace/plugins.cljs:285 +#: src/app/main/ui/workspace/plugins.cljs:286 msgid "workspace.plugins.permissions.allow-localstorage" msgstr "Stockez les données dans le navigateur." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Lire vos commentaires et réponses." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Lire et modifier vos commentaires et répondre en votre nom." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Lire le contenu des fichiers dont l'utilisateur a accès." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Lire et modifier le contenu des fichiers dont l'utilisateur a accès." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Notez que cette extension est créée par un utilisateur externe. Avant de " @@ -6692,31 +6699,31 @@ msgstr "" "confiance. La confidentialité de vos données et votre sécurité sont " "importantes pour nous. Si vous avez des questions, contactez l'assistance." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Lire vos bibliothèques et composants." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Lire et modifier vos bibliothèques et composants." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "L'EXTENSION « %s » SOUHAITE ACCÉDER À :" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Lire les informations du profil de l'utilisateur." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Liste des extensions" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Supprimer l'extension" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Entrez l'URL d'une extension" @@ -6724,26 +6731,26 @@ msgstr "Entrez l'URL d'une extension" msgid "workspace.plugins.success" msgstr "Extension correctement chargée." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Extensions" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "PAS MAINTENANT" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Envie d'y jeter un œil ? Cela ouvrira un nouveau brouillon pour votre " "équipe actuelle. (Si non, vous pouvez toujours le trouver dans les " "extensions installés dans n'importe quel fichier.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "L'EXTENSION « %s » EST INSTALLÉE POUR VOTRE UTILISATEUR !" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "ESSAYER L'EXTENSION" @@ -6755,15 +6762,15 @@ msgstr "Ajouter une disposition flex" msgid "workspace.shape.menu.add-grid" msgstr "Ajouter une disposition en grille" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Ajouter une disposition" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Créer une variante" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "Ajouter une nouvelle propriété" @@ -6775,7 +6782,7 @@ msgstr "Envoyer au fond" msgid "workspace.shape.menu.backward" msgstr "Éloigner" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:640 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:636 msgid "workspace.shape.menu.combine-as-variants-error" msgstr "Les composants doivent se trouver sur la même page" @@ -6811,7 +6818,7 @@ msgstr "Copier sous forme de fichier SVG" msgid "workspace.shape.menu.copy-text" msgstr "Copier en texte" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Créer une note" @@ -6819,11 +6826,11 @@ msgstr "Créer une note" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Créer un plan de travail depuis la sélection" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Créer un composant" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Créer plusieurs composants" @@ -6831,7 +6838,7 @@ msgstr "Créer plusieurs composants" msgid "workspace.shape.menu.cut" msgstr "Couper" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Supprimer" @@ -6839,15 +6846,15 @@ msgstr "Supprimer" msgid "workspace.shape.menu.delete-flow-start" msgstr "Supprimer le début du flux" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Détacher l’instance" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Détacher les instances" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Différence" @@ -6859,11 +6866,11 @@ msgstr "Dupliquer" msgid "workspace.shape.menu.edit" msgstr "Modifier" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Exclure" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Aplatir" @@ -6896,19 +6903,19 @@ msgstr "Aller au fichier du composant principal" msgid "workspace.shape.menu.group" msgstr "Groupe" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Masquer" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Afficher/Masquer l'interface" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Intersection" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Bloquer" @@ -6916,7 +6923,7 @@ msgstr "Bloquer" msgid "workspace.shape.menu.mask" msgstr "Masque" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Coller" @@ -6936,15 +6943,15 @@ msgstr "Retirer flex layout" msgid "workspace.shape.menu.remove-grid" msgstr "Supprimer la disposition en grille" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Supprimer la disposition" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "Supprimer la propriété" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1221 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1256 msgid "workspace.shape.menu.remove-variant-property.last-property" msgstr "La variante doit comporter au moins une propriété" @@ -6952,15 +6959,15 @@ msgstr "La variante doit comporter au moins une propriété" msgid "workspace.shape.menu.rename" msgstr "Renommer" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Annuler les modifications" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Rétablir le composant principal" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "Rétablir la variante" @@ -6968,15 +6975,15 @@ msgstr "Rétablir la variante" msgid "workspace.shape.menu.select-layer" msgstr "Sélectionner le calque" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Montrer" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Afficher dans le panneau des ressources" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Afficher le composant principal" @@ -6989,6 +6996,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Définir comme miniature" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformer en chemin" @@ -6996,11 +7004,11 @@ msgstr "Transformer en chemin" msgid "workspace.shape.menu.ungroup" msgstr "Dissocier" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Union" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Débloquer" @@ -7013,7 +7021,7 @@ msgstr "Supprimer le masque" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Mettre à jour les composants" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Actualiser le composant principal" @@ -7025,11 +7033,11 @@ msgstr "Réduire la barre latérale" msgid "workspace.sidebar.expand" msgstr "Ouvrir la barre latérale" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Historique" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Calques" @@ -7069,11 +7077,11 @@ msgstr "Textes" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Attributs SVG importés" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Pages" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Ajouter une page" @@ -7090,27 +7098,27 @@ msgstr "%s thèmes actifs" msgid "workspace.tokens.add set" msgstr "Ajouter une collection" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Ajouter un nouveau thème" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" -msgstr "Ajouter le composant à ce groupe" +msgstr "Ajouter la collection à ce groupe" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "Ajouter un token : %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Appliqué à" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "Axe" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Retour à la liste des thèmes" @@ -7140,35 +7148,35 @@ msgstr "Couleur" msgid "workspace.tokens.create-new-theme" msgstr "Créez votre premier thème dès à présent." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "En créer un." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" -msgstr "Créer une nouvelle unité de style %s" +msgstr "Créer un nouveau token %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" -msgstr "Supprimer l'unité de style" +msgstr "Supprimer le token" #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:154 msgid "workspace.tokens.delete-theme-title" msgstr "Supprimer le thème" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" -msgstr "Dupliquer l'unité de style" +msgstr "Dupliquer le token" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "copie" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" -msgstr "Modifier l'unité de style" +msgstr "Modifier le token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Modifier le thème" @@ -7176,17 +7184,17 @@ msgstr "Modifier le thème" msgid "workspace.tokens.edit-themes" msgstr "Modifier les thèmes" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:551 msgid "workspace.tokens.edit-token" -msgstr "Modifier l'unité de style" +msgstr "Modifier le token" #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "La valeur du token doit être renseignée" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" -msgstr "Entrez le nom de l'unité de style %s" +msgstr "Entrez le nom du token %s" #: src/app/main/data/workspace/tokens/errors.cljs:15 msgid "workspace.tokens.error-parse" @@ -7216,7 +7224,11 @@ msgstr "Prévisualisation :" msgid "workspace.tokens.export.single-file" msgstr "Fichier unique" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1024, src/app/main/ui/workspace/tokens/management/create/form.cljs:1039 +msgid "workspace.tokens.font-weight-value-enter" +msgstr "Font weight (300, Bold, Regular, Italic...) ou {alias}" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "Intervalles" @@ -7232,9 +7244,9 @@ msgstr "Nom du groupe" #: src/app/main/ui/workspace/tokens/sets.cljs #, unused msgid "workspace.tokens.grouping-set-alert" -msgstr "Le groupement des collections d'unité de style n'est pas encore supporté." +msgstr "Le groupement des collections de tokens n'est pas encore supporté." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:232 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:233 msgid "workspace.tokens.import-button-prefix" msgstr "Importer %s" @@ -7242,31 +7254,31 @@ msgstr "Importer %s" msgid "workspace.tokens.import-error" msgstr "Erreur d'importation :" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:273 msgid "workspace.tokens.import-menu-folder-option" msgstr "Dossier" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 msgid "workspace.tokens.import-menu-json-option" msgstr "Fichier JSON unique" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:270 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 msgid "workspace.tokens.import-menu-zip-option" msgstr "Fichier ZIP" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "" "Dans plusieurs fichiers, le nom/chemin d'accès du fichier correspondent aux " "noms définis." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "" "Dans un fichier JSON, les clés de premier niveau doivent correspondre aux " "noms de collection des tokens." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "Importer des tokens" @@ -7274,10 +7286,10 @@ msgstr "Importer des tokens" #, unused msgid "workspace.tokens.import-tooltip" msgstr "" -"L'importation d'un fichier JSON remplacera toutes vos unités de style, " -"collections et thèmes" +"L'importation d'un fichier JSON remplacera tous vos tokens, collections et " +"thèmes" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "" "L'importation des tokens va remplacer tous vos tokens, collections et " @@ -7285,7 +7297,7 @@ msgstr "" #: src/app/main/ui/workspace/tokens/management.cljs:141 msgid "workspace.tokens.inactive-set" -msgstr "Inactif" +msgstr "Inactive" #: src/app/main/ui/workspace/tokens/management.cljs:132 msgid "workspace.tokens.inactive-set-description" @@ -7299,19 +7311,17 @@ msgstr "Couleur non valide : %s" #: src/app/main/data/workspace/tokens/errors.cljs:23 msgid "workspace.tokens.invalid-json" -msgstr "" -"Erreur d'importation : données de l'unité de style non valides dans le " -"fichier JSON." +msgstr "Erreur d'importation : données du token non valides dans le fichier JSON." #: src/app/main/data/workspace/tokens/errors.cljs:27 msgid "workspace.tokens.invalid-json-token-name" -msgstr "Erreur lors de l'importation : nom de token non valide au format JSON." +msgstr "Erreur lors de l'importation : nom du token non valide au format JSON." #: src/app/main/data/workspace/tokens/errors.cljs:28 msgid "workspace.tokens.invalid-json-token-name-detail" msgstr "" "« %s » n'est pas un nom de token valide.\n" -"Les noms de tokens ne doivent pas comporter de lettres et de chiffres " +"Les noms des tokens ne doivent pas comporter de lettres et de chiffres " "séparés par des caractères « . » et ne doivent pas commencer par le symbole " "« $ »." @@ -7324,12 +7334,12 @@ msgstr "" #: src/app/main/data/workspace/tokens/errors.cljs:85 msgid "workspace.tokens.invalid-text-decoration-token-value" msgstr "" -"Valeur du token non valide : seules les valeurs Aucune, Souligné et Barré " -"sont acceptées" +"Valeur du token non valide : seules les valeurs none, underline et " +"strike-through sont acceptées" #: src/app/main/data/workspace/tokens/errors.cljs:61, src/app/main/data/workspace/tokens/errors.cljs:73, src/app/main/data/workspace/tokens/errors.cljs:77 msgid "workspace.tokens.invalid-value" -msgstr "Valeur de l'unité de style non valide : %s" +msgstr "Valeur du token non valide : %s" #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:191 msgid "workspace.tokens.label.group" @@ -7347,23 +7357,23 @@ msgstr "Thème" msgid "workspace.tokens.label.theme-placeholder" msgstr "Ajouter un thème (ex : Clair)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "Marges" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "Taille max." -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "Taille min." #: src/app/main/data/workspace/tokens/errors.cljs:57 msgid "workspace.tokens.missing-references" -msgstr "Références de l'unité de style manquantes : " +msgstr "Références du token manquantes : " -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:148 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:123 msgid "workspace.tokens.more-options" msgstr "Cliquez avec le bouton droit pour afficher les options" @@ -7375,7 +7385,7 @@ msgstr "Aucune collection active" msgid "workspace.tokens.no-active-theme" msgstr "Aucun thème actif" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Vous devez être éditeur pour activer/désactiver des collections" @@ -7383,11 +7393,11 @@ msgstr "Vous devez être éditeur pour activer/désactiver des collections" msgid "workspace.tokens.no-permission-themes" msgstr "Vous devez être éditeur pour utiliser des thèmes" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Aucune collection n'est définie. Créez-en d'abord une." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Il n'y a pas encore de collections." @@ -7399,13 +7409,17 @@ msgstr "Aucun thème." msgid "workspace.tokens.no-themes-currently" msgstr "Vous n'avez actuellement aucun thème." +#: src/app/main/data/workspace/tokens/errors.cljs:19 +msgid "workspace.tokens.no-token-files-found" +msgstr "Aucun token, collection ou thème n'ont été trouvés dans ce fichier." + #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:148 msgid "workspace.tokens.num-active-sets" msgstr "%s collections actives" #: src/app/main/data/workspace/tokens/errors.cljs:53 msgid "workspace.tokens.number-too-large" -msgstr "Valeur de l'unité de style non valide. La valeur est trop grande : %s" +msgstr "Valeur du token non valide. La valeur est trop grande : %s" #: src/app/main/data/workspace/tokens/errors.cljs:73, src/app/main/data/workspace/tokens/warnings.cljs:15 msgid "workspace.tokens.opacity-range" @@ -7413,12 +7427,12 @@ msgstr "" "L'opacité doit être comprise entre 0 % et 100 % ou entre 0 et 1 (ex : 50 % " "ou 0.5)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Valeur initiale : %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "Marges intérieures" @@ -7426,7 +7440,7 @@ msgstr "Marges intérieures" msgid "workspace.tokens.radius" msgstr "Rayons" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "La référence n'est pas valide ou n'est pas dans une collection active" @@ -7435,7 +7449,7 @@ msgstr "La référence n'est pas valide ou n'est pas dans une collection active" msgid "workspace.tokens.reference-error" msgstr "Erreurs de référence : " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Valeur déduite : %s" @@ -7444,28 +7458,26 @@ msgstr "Valeur déduite : %s" msgid "workspace.tokens.save-theme" msgstr "Enregistrer le thème" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Sélectionner la collection." #: src/app/main/data/workspace/tokens/errors.cljs:45 msgid "workspace.tokens.self-reference" -msgstr "L'unité de style s'auto-référence" +msgstr "Le token s'auto-référence" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "Entrez le nom (utilisez « / » pour les groupes)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" -msgstr "" -"Définissez les collections d'unité de style à utiliser pour cette option du " -"thème :" +msgstr "Définissez les collections de tokens à utiliser pour cette option du thème :" #: src/app/main/ui/workspace/tokens/token_pill.cljs:47 #, unused msgid "workspace.tokens.set.not-active" -msgstr "La collection de l'unité de style n'est pas active" +msgstr "La collection de tokens n'est pas active" #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:143 msgid "workspace.tokens.sets-hint" @@ -7481,7 +7493,7 @@ msgstr "" msgid "workspace.tokens.settings" msgstr "Paramètres des tokens" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "Taille" @@ -7489,9 +7501,9 @@ msgstr "Taille" msgid "workspace.tokens.stroke-width-range" msgstr "La largueur du tracé doit être plus grand ou égal à 0." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:871, src/app/main/ui/workspace/tokens/management/create/form.cljs:898 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1018, src/app/main/ui/workspace/tokens/management/create/form.cljs:1055 msgid "workspace.tokens.text-decoration-value-enter" -msgstr "Entrez la décoration de texte : Aucune | Souligné | Barré" +msgstr "none | underline | strike-through ou {alias}" #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:130 msgid "workspace.tokens.theme-name" @@ -7507,52 +7519,52 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "Liste des thèmes" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Description" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:827 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:973 msgid "workspace.tokens.token-font-family-select" msgstr "Sélectionner une famille de polices" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:834, src/app/main/ui/workspace/tokens/management/create/form.cljs:885 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1029 msgid "workspace.tokens.token-font-family-value" msgstr "Famille de polices" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:833, src/app/main/ui/workspace/tokens/management/create/form.cljs:886 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:979, src/app/main/ui/workspace/tokens/management/create/form.cljs:1031 msgid "workspace.tokens.token-font-family-value-enter" msgstr "Famille de polices ou liste de polices séparées par une virgule (,)" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Nom" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" -" n'est pas un nom d'unité de style valide.\n" -"Les noms des unités de style doivent contenir uniquement des lettres et " -"chiffres séparés par des caractères . et ne doivent pas commencer par $." +" n'est pas un nom de token valide.\n" +"Les noms des tokens doivent contenir uniquement des lettres et chiffres " +"séparés par des caractères . et ne doivent pas commencer par $." #: src/app/main/ui/workspace/tokens/style_dictionary.cljs:259 #, unused msgid "workspace.tokens.token-not-resolved" -msgstr "Impossible de trouver une référence d'unité de style ayant comme nom : %s" +msgstr "Impossible de trouver une référence de token ayant comme nom : %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Valeur" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "Entrez une valeur ou un alias avec {alias}" #: src/app/main/ui/workspace/tokens/management.cljs:131 msgid "workspace.tokens.tokens-section-title" -msgstr "UNITÉS DE STYLE - %s" +msgstr "TOKENS - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Outils" @@ -7564,7 +7576,7 @@ msgstr "L'importation a réussi. Certains tokens n'ont pas été inclus." msgid "workspace.tokens.unknown-token-type-section" msgstr "Le type « %s » n'est pas pris en charge (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "La valeur n'est pas valide" @@ -7572,11 +7584,11 @@ msgstr "La valeur n'est pas valide" msgid "workspace.tokens.value-with-units" msgstr "Valeur non valide : les unités ne sont pas autorisées." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "Si vous renommez ce token, toute référence à son ancien nom sera incorrecte." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Ressources" @@ -7584,7 +7596,7 @@ msgstr "Ressources" msgid "workspace.toolbar.color-palette" msgstr "Palette de couleurs (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Commentaires (%s)" @@ -7795,19 +7807,19 @@ msgstr "Opération sur %s" msgid "workspace.undo.title" msgstr "Historique" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Ignorer" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Plus d'information" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Il y a des mises à jour dans les Bibliothèques Partagées" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Mettre à jour" @@ -7875,11 +7887,11 @@ msgstr "Voulez-vous rétablir cette version ?" msgid "workspace.versions.snapshot-menu" msgstr "Ouvrir le menu des instantanés" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Actions" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Historique" diff --git a/frontend/translations/gl.po b/frontend/translations/gl.po index cd336a4929..b49b74433d 100644 --- a/frontend/translations/gl.po +++ b/frontend/translations/gl.po @@ -142,7 +142,7 @@ msgstr "Crea unha conta" msgid "auth.sidebar-tagline" msgstr "A solución de código aberto para deseñar e crear prototipos." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Condicións de servizo" @@ -150,7 +150,7 @@ msgstr "Condicións de servizo" msgid "auth.verification-email-sent" msgstr "Enviamos un correo electrónico de verificación a" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publicar" @@ -222,7 +222,7 @@ msgstr "Compartir prototipos" msgid "common.share-link.view-all" msgstr "Seleccionar todas" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Cancelar publicación" @@ -268,7 +268,7 @@ msgstr "Comeza a visita" msgid "dasboard.walkthrough-hero.title" msgstr "Percorrido pola interface" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Engadir como Biblioteca Compartida" @@ -276,27 +276,27 @@ msgstr "Engadir como Biblioteca Compartida" msgid "dashboard.change-email" msgstr "Cambiar correo electrónico" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copia)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Crear novo equipo" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "O teu Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Eliminar equipo" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Descargar ficheiro Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Descargar ficheiro estándar (.svg + .json)" @@ -312,7 +312,7 @@ msgstr "Duplicar % ficheiros" msgid "dashboard.export-binary-multi" msgstr "Descargar %s ficheiros Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exportar marcos a PDF" @@ -328,7 +328,7 @@ msgstr "Exportar % ficheiros Penpot" msgid "dashboard.export-multiple.selected" msgstr "% de % elementos seleccionados" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportar" @@ -488,11 +488,11 @@ msgstr "Enviando datos ao servidor (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Enviando ficheiro: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Invitar ao equipo" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Abandonar o equipo" @@ -504,7 +504,7 @@ msgstr "Bibliotecas e Modelos" msgid "dashboard.libraries-and-templates.explore" msgstr "Explora máis e descubre como contribuír" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Ocorreu un problema ao importar o modelo. Non se importou o modelo." @@ -536,7 +536,7 @@ msgstr "Mover a outro equipo" msgid "dashboard.new-file" msgstr "+ Novo ficheiro" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Novo ficheiro" @@ -544,7 +544,7 @@ msgstr "Novo ficheiro" msgid "dashboard.new-project" msgstr "+ Novo proxecto" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Novo proxecto" @@ -552,7 +552,7 @@ msgstr "Novo proxecto" msgid "dashboard.no-matches-for" msgstr "Non se atoparon resultados para “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Os proxectos fixados aparecerán aquí" @@ -568,7 +568,7 @@ msgstr "Verificouse a túa dirección de correo" msgid "dashboard.notifications.password-saved" msgstr "Contrasinal gardado correctamente!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s integrantes" @@ -601,7 +601,7 @@ msgstr "Eliminar das bibliotecas compartidas" msgid "dashboard.save-settings" msgstr "Gardar configuración" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Buscar…" @@ -637,7 +637,7 @@ msgstr "Duplicouse o ficheiro" msgid "dashboard.success-duplicate-project" msgstr "Duplicouse o proxecto" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Moveuse o ficheiro" @@ -649,15 +649,15 @@ msgstr "Movéronse os ficheiros" msgid "dashboard.success-move-project" msgstr "Moveuse o proxecto" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Información do equipo" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Integrantes do equipo" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Proxectos do equipo" @@ -673,7 +673,7 @@ msgstr "Resultados da procura" msgid "dashboard.type-something" msgstr "Escribe algo para procurar" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Cancelar publicación da Biblioteca" @@ -693,7 +693,7 @@ msgstr "Correo electrónico" msgid "dashboard.your-name" msgstr "Nome" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "O teu Penpot" @@ -709,11 +709,11 @@ msgstr "Atención" msgid "ds.component-subtitle" msgstr "Compoñentes para actualizar:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Cancelar" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -745,19 +745,19 @@ msgstr "Correo electrónico" msgid "inspect.attributes.blur" msgstr "Desenfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Valor" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -851,19 +851,19 @@ msgstr "Sólido" msgid "inspect.attributes.stroke.width" msgstr "Ancho" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografía" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Ningunha" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Suliñar" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Ningunha" @@ -919,7 +919,7 @@ msgstr "Texto" msgid "inspect.tabs.info" msgstr "Información" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Atallos do teclado" @@ -927,11 +927,11 @@ msgstr "Atallos do teclado" msgid "labels.accept" msgstr "Aceptar" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Administración" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Todo" @@ -944,23 +944,23 @@ msgstr "e" msgid "labels.back" msgstr "Volver" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Cancelar" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Pechar" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Comentarios" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continuar" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Crear" @@ -968,27 +968,27 @@ msgstr "Crear" msgid "labels.dashboard" msgstr "Panel" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Eliminar" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Borradores" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Editar" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Caducada" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exportar" @@ -996,11 +996,11 @@ msgstr "Exportar" msgid "labels.font-variants" msgstr "Estilos" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fontes" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Invitacións" @@ -1008,15 +1008,15 @@ msgstr "Invitacións" msgid "labels.language" msgstr "Lingua" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Pechar sesión" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Integrante" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Integrantes" @@ -1032,7 +1032,7 @@ msgstr "ou" msgid "labels.password" msgstr "Contrasinal" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Pendente" @@ -1040,7 +1040,7 @@ msgstr "Pendente" msgid "labels.profile" msgstr "Perfil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Proxectos" @@ -1049,7 +1049,7 @@ msgstr "Proxectos" msgid "labels.remove" msgstr "Retirar" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Mudar o nome" @@ -1057,11 +1057,11 @@ msgstr "Mudar o nome" msgid "labels.retry" msgstr "Volver tentar" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rol" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Gardar" @@ -1073,19 +1073,19 @@ msgstr "Enviar" msgid "labels.sending" msgstr "Enviando…" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Configuración" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibliotecas" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Estado" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Titoriales" @@ -1101,19 +1101,19 @@ msgstr "Cargar" msgid "labels.uploading" msgstr "Cargando…" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Visor" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(ti)" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Actualizar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Cancelar" @@ -1122,156 +1122,156 @@ msgid "onboarding.welcome.alt" msgstr "Penpot" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Básicos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Panel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Visor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Espazo de traballo" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Aliñamento" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Editar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Xenérico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Xenérico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navegación" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navegación" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navegación" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Paneis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Ruta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Ferramentas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Comentarios" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copiar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Cortar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Eliminar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Taboleiro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Ruta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rectángulo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Texto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplicar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Cancelar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Buscar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Máscara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Mover" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Pegar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Refacer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Desfacer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Dispersar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Quitar máscara" @@ -1293,23 +1293,23 @@ msgstr "Mapa do sitio" msgid "workspace.assets.assets" msgstr "Recursos" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Cores" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Compoñentes" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Eliminar" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplicar" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Editar" @@ -1318,15 +1318,15 @@ msgstr "Editar" msgid "workspace.assets.graphics" msgstr "Gráficos" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Mudar o nome" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografías" @@ -1339,11 +1339,11 @@ msgstr "Fonte" msgid "workspace.assets.typography.font-size" msgstr "Tamaño" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Dispersar" @@ -1351,19 +1351,19 @@ msgstr "Dispersar" msgid "workspace.focus.selection" msgstr "Selección" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Editar" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Ficheiro" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferencias" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Restablecer" @@ -1385,11 +1385,11 @@ msgstr "Engadir" msgid "workspace.libraries.colors.hsv" msgstr "HSV" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTECAS" @@ -1398,19 +1398,19 @@ msgstr "BIBLIOTECAS" msgid "workspace.libraries.library" msgstr "BIBLIOTECA" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Actualizar" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "Actualizacións" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Desenfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Compoñente" @@ -1446,7 +1446,7 @@ msgstr "Enriba" msgid "workspace.options.constraints.topbottom" msgstr "Enriba e Embaixo" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Deseño" @@ -1459,13 +1459,13 @@ msgstr "Exportar" msgid "workspace.options.export-multiple" msgstr "Exportar selección" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Exportar 1 elemento" msgstr[1] "Exportar %s elementos" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Sufixo" @@ -1473,7 +1473,7 @@ msgstr "Sufixo" msgid "workspace.options.exporting-complete" msgstr "Exportación completada" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exportando…" @@ -1481,15 +1481,15 @@ msgstr "Exportando…" msgid "workspace.options.exporting-object-error" msgstr "Erro na exportación" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Recheo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automático" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Columna" @@ -1498,7 +1498,7 @@ msgstr "Columna" msgid "workspace.options.grid.grid-title" msgstr "Grade" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Cor" @@ -1507,35 +1507,35 @@ msgstr "Cor" msgid "workspace.options.grid.params.columns" msgstr "Columnas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Marxe" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Embaixo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Esquerda" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Dereita" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Enriba" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Ningún" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Centro" @@ -1564,11 +1564,11 @@ msgstr "Dereita" msgid "workspace.options.layout.top" msgstr "Enriba" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Ningún" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centro" diff --git a/frontend/translations/ha.po b/frontend/translations/ha.po index b7d6f9dbd0..78d00af183 100644 --- a/frontend/translations/ha.po +++ b/frontend/translations/ha.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Alejandro Alonso \n" -"Language-Team: Hausa " -"\n" +"Language-Team: Hausa \n" "Language: ha\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -126,7 +126,7 @@ msgstr "qirqiri sabon kundi" msgid "auth.sidebar-tagline" msgstr "samun hanyar magance matsalar zane-zane." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "dokokin aiki" @@ -145,7 +145,7 @@ msgstr "mun aika maka da saqon tantancewa ta imel" msgid "branding-illustrations-marketing-pieces" msgstr "...branding, illustrations, marketing pieces, etc." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "wallafawa" @@ -215,7 +215,7 @@ msgstr "fenfot" msgid "common.share-link.view-all" msgstr "zavi duka" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "maras wallafa" @@ -333,7 +333,7 @@ msgstr "lambar tsaron za ta gama aiki %s" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "lambar tsaron ba ta da lokacin daina aiki" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "tura tamkar fenfot" @@ -341,27 +341,27 @@ msgstr "tura tamkar fenfot" msgid "dashboard.change-email" msgstr "canza imel" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kwafi)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "yi sabuwar tawaga" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "manhajar fenfot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "goge tawaga" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "sauke manhajar fenfot(.manhajar fenfot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "sauke cikakken kundi(.svg + .json)" @@ -377,7 +377,7 @@ msgstr "kwafi %s kundaye" msgid "dashboard.export-binary-multi" msgstr "sauke %s kundayen manhajar fenfot(.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Allon fitarwa na PDF" @@ -393,7 +393,7 @@ msgstr "fitar da fenfot %s kundaye" msgid "dashboard.export-multiple.selected" msgstr "%s of %s tubullan da aka zava" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Fitarwa" @@ -558,11 +558,11 @@ msgstr "xora bayani akan sabis (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "xora kundaye: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "neman mutane" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "fita tawaga" @@ -574,7 +574,7 @@ msgstr "taska da shaidar kamfanoni" msgid "dashboard.libraries-and-templates.explore" msgstr "bincika su da kyau kasan ta yadda za ka bayar da gudunmawa" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "akwai matsala wurin shigo da fejin talla. fejin tallar ba ya xauko." @@ -606,7 +606,7 @@ msgstr "tura ma sauran tawaga" msgid "dashboard.new-file" msgstr "+ sabon kundi" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "sabon kundi" @@ -614,7 +614,7 @@ msgstr "sabon kundi" msgid "dashboard.new-project" msgstr "+ sabon aiki" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "sabon aiki" @@ -622,7 +622,7 @@ msgstr "sabon aiki" msgid "dashboard.no-matches-for" msgstr "ba wanda ya yi daidai da “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "nan za a ga bayanin aiki" @@ -638,7 +638,7 @@ msgstr "an tantance adireshinka na imel" msgid "dashboard.notifications.password-saved" msgstr "an tsare maka shaidar tsaro!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s memba" @@ -654,7 +654,7 @@ msgstr "zavi" msgid "dashboard.password-change" msgstr "sauya lambar tsaro" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "rufewa/buxewa" @@ -675,7 +675,7 @@ msgstr "cire matattarar kundate" msgid "dashboard.save-settings" msgstr "wurin ajiyar saiti" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "nema …" @@ -715,7 +715,7 @@ msgstr[1] "an kwafi kundayenka" msgid "dashboard.success-duplicate-project" msgstr "an kwafi aikinka" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "an tura aikinka" @@ -727,15 +727,15 @@ msgstr "an tura kundayenka" msgid "dashboard.success-move-project" msgstr "an tura aikinka" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "bayanin tawaga" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "mambobin tawaga" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "aiyukan tawaga" @@ -751,7 +751,7 @@ msgstr "neman sakamako" msgid "dashboard.type-something" msgstr "rubuta neman sakamako" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "wallafa taska" @@ -759,37 +759,37 @@ msgstr "wallafa taska" msgid "dashboard.update-settings" msgstr "zamanartarwa wurin gyara" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "ya na amfani" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "idan an sami sauyi a nan ake kawo shi" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "irin ra'ayi" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "yin webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "an gina Webhook." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhooks hanyar sanar da manhajoji da addireshi intanet idan wani ya faru a " "Penpot. za a tura maka da saqon talla URLs ka samar da." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "danna qasa \"sanya webhook\" qara xaya." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "ba a gina wani webhooks ba." @@ -809,7 +809,7 @@ msgstr "imel" msgid "dashboard.your-name" msgstr "sunanka" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "fenfot na ka" @@ -825,11 +825,11 @@ msgstr "natsu" msgid "ds.component-subtitle" msgstr "zamanantar da sassa:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "goge" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "haka" @@ -873,11 +873,11 @@ msgstr "an farfaxo da imel." msgid "errors.email-as-password" msgstr "ba za ka iya amfani da imel ba a matsayin lambar tsaro ba" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "imel «%s» na da bayanan matsaloli na dindindin." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "saqonni marasa amfani na imel «%s»." @@ -891,7 +891,7 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "sassa '%s' ba za su yi aiki ba." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "wata matsala ta faru." @@ -924,7 +924,7 @@ msgstr "za a iya soke gayyata ko ta ki aiki." msgid "errors.ldap-disabled" msgstr "LDAP ya gaza tantancewa." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "kammala adadin '%s' madogara. gyara." @@ -940,7 +940,7 @@ msgstr "hoton da aka sanya bai yi daidai da kundin da ake son faxaxawa ba." msgid "errors.media-type-not-allowed" msgstr "wannan hoton ba ya aiki." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "bayanan da ka nema imel din su ya suma (bayanan matsaloli)." @@ -958,7 +958,7 @@ msgstr "lambar tsaro dole ta kai yawan alamu 8" msgid "errors.profile-blocked" msgstr "bayanan a rufe suke" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "bayananka su na da imel maras motsi (baiyana matsaloli)." @@ -966,15 +966,15 @@ msgstr "bayananka su na da imel maras motsi (baiyana matsaloli)." msgid "errors.registration-disabled" msgstr "rigitar ba ta yi ba." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "ba sauran masu fita daga tawaga, ba bu tabbacin gogewa." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "mamban da ka ke son sanyawa ba ya a ciki." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "mai abu ba ya barin tawaga, dole adubi matsayin mai abu." @@ -986,31 +986,31 @@ msgstr "afkuwar kuskuren da ba a zata ba." msgid "errors.unexpected-token" msgstr "tukuicin da ba a san da shi ba" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "hadin bai yi ba, ba a iya samun URL" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL bai gyaru ba." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "saqon qarshe bai je ba." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "kuskure kan farfaxo da SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "dakatarwa" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "matsalar da ba zata ba lokacin farfaxowa" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "matsayin da ba zato %s" @@ -1074,19 +1074,19 @@ msgstr "afkuwar matsala" msgid "inspect.attributes.blur" msgstr "xige-xige" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "muhimmanci" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1094,7 +1094,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "cika" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "sauke hanyar hoto" @@ -1188,75 +1188,78 @@ msgstr "tauri" msgid "inspect.attributes.stroke.width" msgstr "fadi" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "tsara rubutu" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "gidan salo" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "girman salo" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "tsarin salo" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "kaurin salon" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "tazarar harafi" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "tsawon layi" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "kwalliyar rubutu" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "babu" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "jan layi" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "masarrafin rubu,manya ko qanana" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "yadda ake rubuta batu" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "qananan baqaqe" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "babu" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "manyan baqaqe" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "domin neman qarin bayani game da fenfot a tuntubi sashen agaji" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "qarin bayani a fagen lura" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "zabar zubi, hukumar masu sa ido akan bangarorinsu da lambobinsu" @@ -1316,7 +1319,7 @@ msgstr "rubutu" msgid "inspect.tabs.info" msgstr "bayani" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "yanke" @@ -1328,7 +1331,7 @@ msgstr "karva" msgid "labels.access-tokens" msgstr "lambobi masu xauke da bayani" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "mai amfani" @@ -1336,7 +1339,7 @@ msgstr "mai amfani" msgid "labels.add-custom-font" msgstr "inganta font" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "shugaba" @@ -1344,7 +1347,7 @@ msgstr "shugaba" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "duk" @@ -1367,7 +1370,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "akwai matsala" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "sokewa" @@ -1375,15 +1378,15 @@ msgstr "sokewa" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "rufewa" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "yabo" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "matattara" @@ -1391,7 +1394,7 @@ msgstr "matattara" msgid "labels.confirm-password" msgstr "tabbatar da lambar tsaro" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "ci gaba" @@ -1403,11 +1406,11 @@ msgstr "ci gaba da" msgid "labels.continue-with-penpot" msgstr "za ka iya ci gaba a idanka na fenfot" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "kwafar hanya" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "yi" @@ -1427,7 +1430,7 @@ msgstr "kwalliya da fenfot" msgid "labels.dashboard" msgstr "dashbod" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "goge" @@ -1439,7 +1442,7 @@ msgstr "goge yabo" msgid "labels.delete-comment-thread" msgstr "goge rubutu" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "goge gayyata" @@ -1451,15 +1454,15 @@ msgstr "goge %s kundaye" msgid "labels.developer" msgstr "ma su qirqira" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "vatar" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "adana" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "gyara" @@ -1467,15 +1470,15 @@ msgstr "gyara" msgid "labels.edit-file" msgstr "gyara kundi" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "maigyara" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "daina aiki" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "fitarwa" @@ -1503,7 +1506,7 @@ msgstr "ma su fenfot" msgid "labels.font-variants" msgstr "salo" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Font" @@ -1517,11 +1520,11 @@ msgstr "mawallafi/VP" msgid "labels.freelancer" msgstr "ni mai zaman kansa ne" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "taskar rubuce-rubuce" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "bada bayani" @@ -1529,15 +1532,15 @@ msgstr "bada bayani" msgid "labels.go-back" msgstr "koma baya" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "sashen taimako" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "voye saqon da aka buxa" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "maras amfani" @@ -1559,7 +1562,7 @@ msgstr "kuskuren ciki" msgid "labels.invision" msgstr "teburin aiki" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "gayyata" @@ -1567,7 +1570,7 @@ msgstr "gayyata" msgid "labels.language" msgstr "harshe" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "taskoki & allunan talla" @@ -1575,7 +1578,7 @@ msgstr "taskoki & allunan talla" msgid "labels.log-or-sign" msgstr "yi ko shiga" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "fita" @@ -1583,11 +1586,11 @@ msgstr "fita" msgid "labels.marketing" msgstr "kasuwanci" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "mamba" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "mambobi" @@ -1595,15 +1598,15 @@ msgstr "mambobi" msgid "labels.new-password" msgstr "sabuwar lambar tsaro" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "na gaba" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "an dakatar da kai duka! Alamar sabon sharhi za ta fito nan." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "ba saqon da ba a buxa ba." @@ -1616,7 +1619,7 @@ msgstr "babu wannan fagen, ko ba ka da izinin shiga." msgid "labels.not-found.main-message" msgstr "alama!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "kundi 1" @@ -1628,7 +1631,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "allo 1" msgstr[1] "alluna %s" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "aiki" @@ -1651,7 +1654,7 @@ msgstr "ko" msgid "labels.other" msgstr "idan akwai qari (bayyana)" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "mai" @@ -1659,7 +1662,7 @@ msgstr "mai" msgid "labels.password" msgstr "lambar tsaro" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "tukuna" @@ -1675,11 +1678,11 @@ msgstr "shugaban aiki" msgid "labels.profile" msgstr "kundi" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "aiyuka" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "bayar da bayani" @@ -1693,11 +1696,11 @@ msgstr "qara dora kundi" msgid "labels.remove" msgstr "cire" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "cire mamba" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "sake suna" @@ -1705,7 +1708,7 @@ msgstr "sake suna" msgid "labels.rename-team" msgstr "sake suna tawaga" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "sake aika saqon gayyata" @@ -1713,11 +1716,11 @@ msgstr "sake aika saqon gayyata" msgid "labels.retry" msgstr "sake gwadawa" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "matsayi" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "ajiye" @@ -1745,7 +1748,7 @@ msgstr "mu na cikin kula a tsarinka." msgid "labels.service-unavailable.main-message" msgstr "ba sabis" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "gyara" @@ -1753,11 +1756,11 @@ msgstr "gyara" msgid "labels.share-prototype" msgstr "tura manhajar rubutu" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "taskoki" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "fito da yabo" @@ -1765,7 +1768,7 @@ msgstr "fito da yabo" msgid "labels.show-comments-list" msgstr "jerin ire-iren yabo" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "bayyana na ka ra’ayin" @@ -1777,7 +1780,7 @@ msgstr "zana" msgid "labels.start" msgstr "fara" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "daraja" @@ -1785,7 +1788,7 @@ msgstr "daraja" msgid "labels.student-teacher" msgstr "malami ko dalibi" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "koyarwa" @@ -1813,15 +1816,15 @@ msgstr "Upload custom fonts" msgid "labels.uploading" msgstr "ana dorawa…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "gani kaxai" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "ma su kallo" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -1829,11 +1832,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "rubuta s abon yabo" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(kai)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "fagenka" @@ -1911,19 +1914,19 @@ msgstr "yi sabuwar alama" msgid "modals.create-access-token.title" msgstr "samar da alamar shiga" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "qirqirar webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "qirqirar webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "farashin URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://misali.com/postreceive" @@ -1967,11 +1970,11 @@ msgstr "ka tabbata ka na son goge fira? duk sharhi a nan za a goge matsaloli." msgid "modals.delete-comment-thread.title" msgstr "goge tattaunawa" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "ka tabbata kana son goge wannan bayanin?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "goge bayani" @@ -2019,11 +2022,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "goge font" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "ka tabbata kana son goge wannan shafin?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "goge shafi" @@ -2069,29 +2072,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "goge kundi" msgstr[1] "goge kundaye" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "goge tawaga" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "ka tabbata kana son goge wannan tawagar? Duk aiyukanka na kundayen da suka " "danganci tawagar za su yi gogewar dindindin." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "gogewar tawaga" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "goge memba" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "ka tabbata kana son cire wannan memban a wannan tawaar?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "cire memban tawaga" @@ -2105,51 +2108,51 @@ msgstr[1] "" "duk aikin da aka yi a waxancan kundayen, can za a same su (ba zane da za " "iya tsinkawa)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "goge webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "ka tabbata ka na son goge webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "gogewa webhook" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "gyara webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "gyara webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "aika saqon" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "imel, rabawar waqafi" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "waxansu imel daga membobin qungiyar na yanzu. ba za a aikawa da gayyatarsu " "ba ." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "gayyato membobi zuwa ga tawaga" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "ka tabbata memban tawaga kaxai, za ya iya goge tawaga tare da aikinta da " "kundaye." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "ka tabbata ka na son fita daga %s tawaga?" @@ -2177,49 +2180,49 @@ msgstr "zavi memba domin havakawa" msgid "modals.leave-and-reassign.title" msgstr "kafin ka fita" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "barin tawaga" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "ka tabbata ka na son barin wannan tawagar?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "barin tawaga" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "adadin jan hankali" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "canza wurin mallaka" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "idan ka canza wurin mallaka, ba za ka iya sauya matsayin shugaba ba, " "gazawar wasu dokokin wannan tawaagar. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "kai ke da wannan tawagar yanzu. ka tabbata kana son yin %s sabon mai tawaga?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "mallakar tawaga" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "wallafa" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "ba komai a taskarka. ka na son wallafa ta?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "wallafa taska maras komai" @@ -2269,21 +2272,21 @@ msgstr "" "ka kusa sabunta taskar ajiyar shir-shirye. zai iya shafar sauran kundayen " "da ke amfani da ita." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "sabunta" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "soke" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "ka kusa sabunta sashe a babbar taska. wannan za ya iya aiki a sauran " "kundayen da ke amfani da ita." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "sabunta sashe a babbar taska" @@ -2291,11 +2294,11 @@ msgstr "sabunta sashe a babbar taska" msgid "notifications.by-code.upgrade-version" msgstr "akwai sabon yayi, fatan za a sabunta fage" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "an aika da saqon" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "kwafar hanyar gayya" @@ -2411,7 +2414,7 @@ msgstr "" "ka tuna da kowa. masu qirqira, masu tsarawa, shuwagabanniS... daban-daban " "ya qara :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "gayyata tare da bayar da matsayi:" @@ -2512,621 +2515,605 @@ msgstr "fenfot" msgid "profile.recovery.go-to-login" msgstr "je ka hanyar shiga" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "cire" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "gauraya" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "shikashikai" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "allon kallo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Dankallo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "fagen aiki" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "kwaskwarima" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Tace" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "gamayya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "gamayya" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Babbar kumshiya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "gyara shimfida" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "shawagi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "shawagi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "shawagi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "allon sarrarfav naura" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Hanya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Siffa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Rubutu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Kayan aiki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zukowa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zukowa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Bayyana Ra'ayi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "kara Girma" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "tsarin kasa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "tsarin tsakiya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "tsarin tsakiya ko ina" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Tabbataccan tsari" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "tsarin hagu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "tsarin dama" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "tsarin sama" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "tsarin tsakiya a tsaye" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "kirkiri allo daga zabi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "fito da shi barobaro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "ma'auni mabanbanci" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "kebentaccan ma'auni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "ma'aunin abubuwa daban daban" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "ma'auni hadaka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "tura zuwa baya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "komawa baya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "tura gaba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "kawo zuwa gaba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "goge sake" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "kwafi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "samar da sabo abu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "cire" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "fito da shi waje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "goge" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "fita da ga cikin net wok" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "rarraba abubuwan da su ke a ware" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Ratse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "siffar kwai" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Allo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "samar da hanya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Hanya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Ractangula" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "rubutaccan sako" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "maimaita" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "kubuta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "samar da sabbabbin abubuwa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "fitar da abubuwan da zai dace da ko wane abu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "kifa shi dai dai" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "kifa ta tsaye" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "rage girman rubutu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "kara gaban yanayi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "ta fi rumbu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "ta fi zuwa rabbabben ma'ajiya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "gajeran sako" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "rukuni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "raba ta tsaye" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "fito / boye UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "zuko ciki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "sa hoto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "juya zuwa kwantaccen rubuyu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "hada abubuwan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "rage filin harafin" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "kara filin harafin" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "rage tsawon layi" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "kara tsawon layi" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "danna layin duk" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "kirkiri kwana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "kirkiri lankwasa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "takunkumi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "hada da kauri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "matsa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Matsa kasa da sauri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Matsa hagu da sauri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "matsa dama da sauri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Matsa sama da sauri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "matsa a hade" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Matsa da sashin kasa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Matsa da sashin hagu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Matsa da sashin dama" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Matsa da sashin samu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "wani tsari" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "babu gajeriyar hanya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Saita dishi dishi zuwa kashi 100" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "saita dishi dishi zuwa kashi 10" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Saita dishi dishi zuwa kashi 20" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Seta dashi dashi zuwa kashi 50" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Saita dishi dishi zuwa kashi 40" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Saita dishi dishi zuwa kashi 50" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Saita dishi dishi zuwa kashi 60" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Saita dishi dishi zuwa kashi 70" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "seta dishi dishin zuwa kashi 8o" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Seta dish dishi zuwa 90" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "abin daukan kala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "tafi inda 'yan kallo za su bayyana ra'ayi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "tafi gaban allon" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "tafi sashin da 'yan kallo za su duba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "tafi sashin da masu kallo suke hulda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "tafi sashin da masu kallo suke hulda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "tafi fagen aiki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " ko " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "manna" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "allon da ya gabata" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "gyara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "zake zukowa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "takaitaccen sako yanken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "zabi duka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "zabi wani shafi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "zabi ainihin shafi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "zabi shafin da ya gabata" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "raba kauri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "nuna / boye akwatin pixel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "nuna / boye yanken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "yanke kauri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "yanke zuwa ga akwatin pixel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "fara gyarawa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "fara aunawa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "dena aunawa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "saita babban yatsa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "allon harufa yanke" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Danna a jere" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Danna kadara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Danna launukan kala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Danna yanayin maida hankali" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Danna fuskar ta cika duka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Danna tarihi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Danna shimfida" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Tara/fitar da lankwasashhiyar shimfida" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Rufe/bude" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Rufe rabo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Juya zuwa launukan rubutu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Nuna/boye" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Danna salon zukowa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Danna ta layi a kasa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Cire" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Fita daka rukuni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Cire takunkumi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Rarraba ta tsaye" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Zuko raguwar ido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Zuko karuwar ido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zuko wanda aka zaba" @@ -3178,19 +3165,19 @@ msgstr "Nambobin sirri - Mazubin biruka" msgid "title.settings.profile" msgstr "Karin bayani - Mazubin biruka" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Gayyata - %s - Mazubin biruka" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Yan kungiya - %s - Mazubin biruka" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Saiti - %s - Mazubin biruka" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "gidan yanar gizo - %s - Mazubin biruka" @@ -3262,39 +3249,39 @@ msgstr "Nuna hulda da an danna" msgid "viewer.header.sitemap" msgstr "taswirar wuri" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Sakon karshe ya isa." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Daidaita tsakiya a kwance (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "rarraba filin kwance (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Daidaita hagu (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Daidaita dama (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Daidaita kasa (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Daidaita a kwance tsakiya (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "rarraba filin tsaye (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Daidaita sama(%s)" @@ -3303,31 +3290,31 @@ msgstr "Daidaita sama(%s)" msgid "workspace.assets.assets" msgstr "kadara" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "duka kadara" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "kala" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Bangarori" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "kirkiri rukuni" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "abubuwanka za a samu su suna nan take kamar \"sunan kungiya/ sunan abubuwan\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "goge" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "maimaita" @@ -3335,7 +3322,7 @@ msgstr "maimaita" msgid "workspace.assets.duplicate-main" msgstr "maimaita ainihin" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "tace" @@ -3344,15 +3331,15 @@ msgstr "tace" msgid "workspace.assets.graphics" msgstr "zane zane" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "rukuni" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "sunan kungiya" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "dakin karatun gida" @@ -3364,15 +3351,15 @@ msgstr "ba'a samu kadara ba" msgid "workspace.assets.open-library" msgstr "bude fiyal din dakin karatu" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "sake suna" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "sake sunan kungiyar" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "nemo kadarar" @@ -3388,7 +3375,7 @@ msgstr[1] "%s zababbun abubuwan" msgid "workspace.assets.shared-library" msgstr "rababben dakin karatu" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "rubutun rubutu" @@ -3413,7 +3400,7 @@ msgstr "fili a tsakanin haruffa" msgid "workspace.assets.typography.line-height" msgstr "tsawon layi" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -3425,7 +3412,7 @@ msgstr "salon rubutu" msgid "workspace.assets.typography.text-transform" msgstr "canja rubutu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "kashe daga kungiya" @@ -3433,7 +3420,7 @@ msgstr "kashe daga kungiya" msgid "workspace.focus.focus-mode" msgstr "tsarin maida hankali" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "karka maida hankali" @@ -3453,11 +3440,11 @@ msgstr "a layi mikakke" msgid "workspace.gradients.radial" msgstr "a da'ira" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "kashe daidaitawa mai canjawa" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "kashe sikelin rabo" @@ -3466,19 +3453,19 @@ msgstr "kashe sikelin rabo" msgid "workspace.header.menu.disable-scale-text" msgstr "kashe sikelin rubutu" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "kashe tsinkewa zuwa mai jagora" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "kashe tsinkewa zuwa pixel" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "bada damar daidaitawa mai canjawa" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "bada damar sikelin rabo" @@ -3487,87 +3474,87 @@ msgstr "bada damar sikelin rabo" msgid "workspace.header.menu.enable-scale-text" msgstr "bada damar sikelin rubutu" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Tsinke zuwa mai jagora" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Bda damar tsinkewa zuwa akwatin pixel" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Boye allom suna" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "farantin launuka" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "boye pixel akwati" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "boye ma'auni" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "boye launukan yanayin tsarin rubutu" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Tace" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "fayil" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "taimako & bayani" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "fifiko" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "gani" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "sake" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "zabi duka" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Nuna sunayen allo" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "nuna launukan kala" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Nuna akwatin pixel" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Nuna ma'auni" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Nuna launukan tsarin rubutu" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Cire" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Kara saitawa" @@ -3588,11 +3575,11 @@ msgstr "Adanawa" msgid "workspace.header.unsaved" msgstr "Canja canjan da ba'a adana ba" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "yanayin kallo (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zuko" @@ -3604,7 +3591,7 @@ msgstr "cike - cika sikeli" msgid "workspace.header.zoom-fit" msgstr "dace - ja sikeli ya dace da shi" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "zuko yayi daidai da ko'ina" @@ -3612,7 +3599,7 @@ msgstr "zuko yayi daidai da ko'ina" msgid "workspace.header.zoom-full-screen" msgstr "Cika allon" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "zuko zababbe" @@ -3625,10 +3612,6 @@ msgstr "tace akwati" msgid "workspace.libraries.add" msgstr "tarawa" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s kala" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Babu salon kaloli a ma'ajiya yanzu" @@ -3655,31 +3638,23 @@ msgstr "kalar yanzu" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Jituwar RGB" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Adana salon kala" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s bangarori" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Ma'adanar fiyal" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s zane zane" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "Ma'adana a wanna fiyal" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "ma'adanai" @@ -3688,63 +3663,59 @@ msgstr "ma'adanai" msgid "workspace.libraries.library" msgstr "ma'adana" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "sabunta ma'adana" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Babu rabben ma'adanai da suke bukatar sabuntawa" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Babu daidaituwa da aka samu na “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Duba rabbaun ma'adanai" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "Rabban ma'adanai" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Rubutun rubutu dayawa" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Cire mahadar duka rabutun rubutu" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s Rubutun rubutu" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Sabuntawa" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "Aga duka canjin" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "sabuntawa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Danna wannan madannin + domin saka hulda." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Dishi dishi" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "rukuni" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "zabin dishi dishi" @@ -3752,31 +3723,31 @@ msgstr "zabin dishi dishi" msgid "workspace.options.canvas-background" msgstr "bayan zane" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Matse abun ciki" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Bangarori" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Yin sharhin rubutu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Kwafa" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Kirkiri sharhin rubuta" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Tace sharhin rubutu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Ainahin" @@ -3820,7 +3791,7 @@ msgstr "sama" msgid "workspace.options.constraints.topbottom" msgstr "sama & kasa" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "zane" @@ -3833,13 +3804,13 @@ msgstr "fitarwa" msgid "workspace.options.export-multiple" msgstr "Fitar da zababbun" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Fitarwa 1 Sashi" msgstr[1] "Fitarwa %s sashi-sashi" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Kari na bayan baki" @@ -3847,7 +3818,7 @@ msgstr "Kari na bayan baki" msgid "workspace.options.exporting-complete" msgstr "An gama fitarwa" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Ana fitarwa" @@ -3859,11 +3830,11 @@ msgstr "An gaza fitarwa" msgid "workspace.options.exporting-object-slow" msgstr "Fitarwa ba tsammani ta sami tsaiko" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Cikawa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Kara gudun farko" @@ -3872,15 +3843,15 @@ msgstr "Kara gudun farko" msgid "workspace.options.flows.flow-start" msgstr "Gudun farko" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "gudun farko" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "da kanshi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "shafi" @@ -3889,7 +3860,7 @@ msgstr "shafi" msgid "workspace.options.grid.grid-title" msgstr "Akwati" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Kala" @@ -3898,15 +3869,15 @@ msgstr "Kala" msgid "workspace.options.grid.params.columns" msgstr "shafi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "mahada" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "tsawo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "gefe" @@ -3915,7 +3886,7 @@ msgstr "gefe" msgid "workspace.options.grid.params.rows" msgstr "jere" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "saita a tsoho" @@ -3929,143 +3900,143 @@ msgstr "girma" msgid "workspace.options.grid.params.type" msgstr "Nau'i" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Kasa" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Tsakiya" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Hagu" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Dama" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "mikewa" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "sama" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "yi amfani da tsoho" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "fadi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "layuka" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "murabba'i" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Cika rukuni" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Ja layi a rukuni" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Tsawo" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Duba" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "aiki" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Bayan jinkiri" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "hotuna masu motsi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "narkewa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Babu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Tura" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Ja" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "da kanshi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "kara mai rufin bayan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "rufe yayin matsewa ta waje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "kulle mai rufi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "kulle mai rufi %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "jinkiri" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "makoma" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "tsahon lokaci" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "saukakawa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "sauki" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "sauki ciki" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "sauki ciki waje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "sauki waje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "mikakke" @@ -4074,47 +4045,47 @@ msgstr "mikakke" msgid "workspace.options.interaction-in" msgstr "ciki" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "linzamin kwamfuter ya shiga" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "linzamin kwamfutar ya fita" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "kewayawa zuwa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "kewayawa zywa: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(ba'a saita ba )" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "cire tasiri" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "da an danna" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "bude mai rufi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "bude mai rufi: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "bude URL" @@ -4123,147 +4094,147 @@ msgstr "bude URL" msgid "workspace.options.interaction-out" msgstr "fita" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "kasa tsakiya" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "kasa hagu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "kasa dama" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "tsakiya" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Yi da kanka" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "sama tsakiya" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "sama hagu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "sama dama" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Mataki" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "adana komawa sama da kasa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "allon daya gabata" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "alaka zuwa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "kai/ni" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Juya mai murfi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Juya mai murfi: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Jawo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "yayin shawagi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "yayin dannawa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "yayin hulda" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "kala" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "kala konanniya" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "kala gudajjiya" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "kara masa duhu" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "banbanci" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "warewa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Haske mai muya" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Haske haske" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "kara masa haske" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "warewa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "sau" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "na kullum" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "mai rufi" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "jikewa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "allo" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "haske mai sauki" @@ -4287,19 +4258,19 @@ msgstr "dayawa" msgid "workspace.options.layout-item.advanced-ops" msgstr "zabi na ci gaba" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "tsawo mafi yawa" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "fadi mafi yawa" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "tsawo mafi kankanta" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "fadi mafi kankanta" @@ -4413,15 +4384,15 @@ msgstr "sarari tsakani" msgid "workspace.options.layout.top" msgstr "sama" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "kaloli masu yawa" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Ma'ajiyar kaloli masu yawa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "dishi dishi" @@ -4430,27 +4401,27 @@ msgstr "dishi dishi" msgid "workspace.options.position" msgstr "matsayi" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "samfur" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "digon tsakiyar da'ira" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "kasan hagu" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "kasan dama" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "saman hagu" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "saman dama" @@ -4462,7 +4433,7 @@ msgstr "da dimi dimi" msgid "workspace.options.retry" msgstr "sake" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "juyawa" @@ -4470,27 +4441,27 @@ msgstr "juyawa" msgid "workspace.options.search-font" msgstr "nemo jerin harufa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "zabi surar allo, ko rukuni ta hadu da daya allon." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "zababbabbin kaloli" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "cika zabi" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "gigciye zabi" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "dishi dishi" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "inuwar kala" @@ -4502,47 +4473,48 @@ msgstr "ajiye inuwa" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Inuwar ciki" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "bazu" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "inuwa" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "rukunin inuwa" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "inuwar zabi" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "fito da shi a ga" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "fito da kaurin sosai" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "girma" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "yanayin girman yanayin" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "gigciye" @@ -4551,7 +4523,7 @@ msgstr "gigciye" msgid "workspace.options.stroke-cap.circle-marker" msgstr "da'irar kasuwa" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "da'ira" @@ -4560,7 +4532,7 @@ msgstr "da'ira" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "darajar kasuwa" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "mai daraja" @@ -4569,19 +4541,19 @@ msgstr "mai daraja" msgid "workspace.options.stroke-cap.line-arrow" msgstr "layin mashiw" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "mashi" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "ba komai" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "da'ira" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "murabba'i" @@ -4590,7 +4562,7 @@ msgstr "murabba'i" msgid "workspace.options.stroke-cap.square-marker" msgstr "murabba'in kasuwa" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Rectangle" @@ -4599,75 +4571,75 @@ msgstr "Rectangle" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Triangle mashi" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Triangle" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "gigciye kalar" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "gigciye fadin" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "tsakiya" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "layin raba abu" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "digo digo" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "ciki" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "gauraya" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "waje" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "mai tauri" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "jerin kasa" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "jerin tsakiya" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "jerin sama" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "sarrafaffan tsaho" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "sarrafaffen fadi" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "dasa" @@ -4689,35 +4661,35 @@ msgstr "yanayin kasa" msgid "workspace.options.text-options.none" msgstr "babu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "gigciye ta cikinsa (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "jerin tsakiya" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "tabbatarwa" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "jera hagu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "jera dama" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "rubutu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "rukunin rubutu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "zababbun rubutu" @@ -4726,7 +4698,7 @@ msgstr "zababbun rubutu" msgid "workspace.options.text-options.titlecase" msgstr "yanayin lakani" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "ja layi (%s)" @@ -4735,19 +4707,19 @@ msgstr "ja layi (%s)" msgid "workspace.options.text-options.uppercase" msgstr "yanayin sama" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "yi amfani da madanneta ta sama ki tafi da samfuri." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "fadi" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X layi" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y layi" @@ -4811,7 +4783,7 @@ msgstr "tura zuwa baya" msgid "workspace.shape.menu.copy" msgstr "kwafi" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "kirkiri hoto mai motsi" @@ -4819,11 +4791,11 @@ msgstr "kirkiri hoto mai motsi" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "zababban allo" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "kirkiri abubuwa" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "kirkiri abubuwa da yawa" @@ -4831,7 +4803,7 @@ msgstr "kirkiri abubuwa da yawa" msgid "workspace.shape.menu.cut" msgstr "cire" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "goge" @@ -4839,15 +4811,15 @@ msgstr "goge" msgid "workspace.shape.menu.delete-flow-start" msgstr "goge kwararar farko" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "raba yanayin abin" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "raba yanayin abin" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "bambanci" @@ -4859,11 +4831,11 @@ msgstr "maimaita" msgid "workspace.shape.menu.edit" msgstr "tace" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "kebe" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "mikad da abu" @@ -4896,19 +4868,19 @@ msgstr "tafi ainihin wurin fal" msgid "workspace.shape.menu.group" msgstr "rukuni" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "boye" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "nuna / boye UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "mahada" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "kulle" @@ -4916,7 +4888,7 @@ msgstr "kulle" msgid "workspace.shape.menu.mask" msgstr "takunkumik" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "manna" @@ -4928,11 +4900,11 @@ msgstr "hanya" msgid "workspace.shape.menu.remove-flex" msgstr "cire sassaukan tsari" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "sake saita sokewa" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "saita ainihin wurin" @@ -4940,15 +4912,15 @@ msgstr "saita ainihin wurin" msgid "workspace.shape.menu.select-layer" msgstr "zabi shimfida" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "nuna" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "nuna ta kusuwar kadara" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "nuna ainihin wurin" @@ -4961,6 +4933,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "kara kamar girman babban yatsa" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "sauya zuwa hanya" @@ -4968,11 +4941,11 @@ msgstr "sauya zuwa hanya" msgid "workspace.shape.menu.ungroup" msgstr "raba rukunin" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "hadakan" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "bude" @@ -4985,7 +4958,7 @@ msgstr "bude takunkumi" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "sabunta ainihin wurin" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "sabunta ainihin wurin" @@ -4997,11 +4970,11 @@ msgstr "ruguza a'ajiyar bayani" msgid "workspace.sidebar.expand" msgstr "kara yankin ma'agiyar bayani" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "labari" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "shafi" @@ -5041,7 +5014,7 @@ msgstr "rubutu" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "shigo da shi SVG halaye" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "shafi" @@ -5049,7 +5022,7 @@ msgstr "shafi" msgid "workspace.sitemap" msgstr "taswirar wuri" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "kadara" @@ -5057,7 +5030,7 @@ msgstr "kadara" msgid "workspace.toolbar.color-palette" msgstr "farantin kala (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "ra'ayi (%s)" @@ -5247,19 +5220,19 @@ msgstr "yanayi fiye da %s" msgid "workspace.undo.title" msgstr "labari" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "watsar" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "bayanai masu yawa" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "a kwai na zamani a rababban ma'ajiya" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "sabintawas" diff --git a/frontend/translations/he.po b/frontend/translations/he.po index 4b2bc21544..ffed01bc3f 100644 --- a/frontend/translations/he.po +++ b/frontend/translations/he.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Yaron Shahrabani \n" -"Language-Team: Hebrew " -"\n" +"Language-Team: Hebrew \n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " -"n % 10 == 0) ? 2 : 3));\n" -"X-Generator: Weblate 5.13\n" +"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : " +"((n > 10 && n % 10 == 0) ? 2 : 3));\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -171,7 +171,7 @@ msgstr "הפתרון בקוד פתוח לעיצוב ויצירת אבטיפוס. msgid "auth.terms-and-privacy-agreement" msgstr "[תנאי השירות](%s) ו[מדיניות הפרטיות](%s) מקובלים עליי." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "תנאי השירות" @@ -196,7 +196,7 @@ msgstr "…מיתוג, איורים, חומרים שיווקיים ועוד." msgid "comments.mentions.not-found" msgstr "לא נמצאו אנשים עבור ‎@%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "פרסום" @@ -268,7 +268,7 @@ msgstr "שיתוף אבות טיפוס" msgid "common.share-link.view-all" msgstr "בחירה בהכול" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "ביטול פרסום" @@ -388,7 +388,7 @@ msgstr "לאסימון אין תאריך תפוגה" msgid "dashboard.add-file" msgstr "הוספת קובץ" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "הוספת ספריה משותפת" @@ -396,31 +396,31 @@ msgstr "הוספת ספריה משותפת" msgid "dashboard.change-email" msgstr "החלפת דוא״ל" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(עותק)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "יצירת צוות חדש" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "נעיצת הגרסה הזאת" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "ה־Penpot שלך" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "מחיקת צוות" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "הורדת קובץ Penpot‏ (‎.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "הורדת קובץ תקני (‎.svg + .json)" @@ -502,7 +502,7 @@ msgstr "נתחיל לבנות דברים מדהימים" msgid "dashboard.export-binary-multi" msgstr "הורדת %s קובצי Penpot‏ (‎.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "ייצוא לוחות אומנות כ־PDF" @@ -518,7 +518,7 @@ msgstr "ייצוא קובצי %s של Penpot" msgid "dashboard.export-multiple.selected" msgstr "נבחרו %s מתוך %s רכיבים" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "ייצוא" @@ -720,11 +720,11 @@ msgstr "הנתונים נשלחים לשרת (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "נשלח קובץ: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "הזמנת אנשים" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "עזיבת הצוות" @@ -732,7 +732,7 @@ msgstr "עזיבת הצוות" msgid "dashboard.libraries-and-templates" msgstr "ספריות ותבניות" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "כאן יש כמה ספריות ותבניות שאפשר להוסיף למיזם שלך" @@ -740,7 +740,7 @@ msgstr "כאן יש כמה ספריות ותבניות שאפשר להוסיף msgid "dashboard.libraries-and-templates.explore" msgstr "עיון ביותר כאלה והסברים כיצד לתרום להן" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "אירעה שגיאה בייבוא התבנית והיא לא ייובאה." @@ -776,7 +776,7 @@ msgstr "העברה לצוות אחר" msgid "dashboard.new-file" msgstr "+ קובץ חדש" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "קובץ חדש" @@ -784,7 +784,7 @@ msgstr "קובץ חדש" msgid "dashboard.new-project" msgstr "+ מיזם חדש" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "מיזם חדש" @@ -792,11 +792,11 @@ msgstr "מיזם חדש" msgid "dashboard.no-matches-for" msgstr "לא נמצאו תוצאות לחיפוש אחר „%s”" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "מיזמים נעוצים יופיעו כאן" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "התראות" @@ -808,7 +808,7 @@ msgstr "כתובת הדוא״ל שלך עודכנה בהצלחה" msgid "dashboard.notifications.email-verified-successfully" msgstr "כתובת הדוא״ל שלך אומתה בהצלחה" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "הגדרות ההתראות עודכנו" @@ -816,11 +816,11 @@ msgstr "הגדרות ההתראות עודכנו" msgid "dashboard.notifications.password-saved" msgstr "הסיסמה נשמרה בהצלחה!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "הצגת התראות" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s חברים" @@ -852,7 +852,7 @@ msgstr "מונית לבעלי הצוות הזה." msgid "dashboard.permissions-change.viewer" msgstr "מונית לצפות בצוות הזה." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "נעיצה/שחרור" @@ -889,7 +889,7 @@ msgstr "נגרעת מהצוות „%s”." msgid "dashboard.save-settings" msgstr "שמירת ההגדרות" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "חיפוש…" @@ -981,7 +981,7 @@ msgstr "התראות" msgid "dashboard.show-all-files" msgstr "הצגת כל הקבצים" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "היסטוריית גרסאות" @@ -1009,7 +1009,7 @@ msgstr[3] "הקבצים שלך שוכפלו בהצלחה" msgid "dashboard.success-duplicate-project" msgstr "המיזם שלך שוכפל בהצלחה" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "הקובץ שלך הועבר בהצלחה" @@ -1021,15 +1021,15 @@ msgstr "הקבצים שלך הועברו בהצלחה" msgid "dashboard.success-move-project" msgstr "המיזם שלך הועבר בהצלחה" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "פרטי הצוות" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "חברי הצוות" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "מיזמי הצוות" @@ -1049,7 +1049,7 @@ msgstr "תוצאות חיפוש" msgid "dashboard.type-something" msgstr "נא להקליד כדי לחפש" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "ביטול פרסום ספרייה" @@ -1057,49 +1057,49 @@ msgstr "ביטול פרסום ספרייה" msgid "dashboard.update-settings" msgstr "עדכון הגדרות" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "ללא מגבלות על יצירתיות" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot חינמי" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "פעילה" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "כאשר ההתליה הזאת מופעלת פרטי האירוע יישלחו" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "אפשר למחוק או לשנות את ההתליות שיצרת." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "סוג תוכן" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "יצירת התליית רשת" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "התליית הרשת נוצרה בהצלחה." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "התליות רשת הן דרך פשוטה לאפשר לאתרים אחרים לקבל הודעות כשאירועים מסוימים " "מתרחשים ב־Penpot. אנו נשלח בקשת POST לכל אחת מהכתובות שתצויינה." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "לחיצה על הכפתור „הוספת התליית רשת” תוסיף אחת." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "לא נוצרו התליות רשת עדיין." @@ -1119,7 +1119,7 @@ msgstr "דוא״ל" msgid "dashboard.your-name" msgstr "שמך" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "ה־Penpot שלך" @@ -1135,15 +1135,15 @@ msgstr "תשומת לב" msgid "ds.component-subtitle" msgstr "רכיבים לעדכון:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "לאפשר" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "ביטול" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "אישור" @@ -1151,6 +1151,26 @@ msgstr "אישור" msgid "ds.confirm-title" msgstr "להמשיך?" +#: src/app/main/ui/ds/controls/numeric_input.cljs:98 +msgid "ds.inputs.numeric-input.no-applicable-tokens" +msgstr "אין אסימונים תקפים בערכות או בערכות העיצוב הפעילות." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:99 +msgid "ds.inputs.numeric-input.no-matches" +msgstr "לא נמצאו תוצאות." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 +msgid "ds.inputs.numeric-input.open-token-list-dropdown" +msgstr "פתיחת רשימת אסימונים" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 +msgid "ds.inputs.token-field.detach-token" +msgstr "ניתוק אסימון" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 +msgid "ds.inputs.token-field.no-active-token-option" +msgstr "האסימון הזה לא זמין באף ערכה או שהערך שלו שגוי." + #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" msgstr "ספק האימות לא מורשה לפרופיל הזה" @@ -1205,7 +1225,7 @@ msgstr "למרות ש־Penpot לא תומך יותר בסוג המשאבים ה msgid "errors.deprecated.contact.text" msgstr "ליצור איתנו קשר" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "לא ניתן לגרור סדרת הורה לתוך נתיב צאצא של עצמה." @@ -1229,11 +1249,11 @@ msgstr "כתובת הדוא״ל לא תואמת את ההזמנה." msgid "errors.email-domain-not-allowed" msgstr "שם התחום לא מורשה" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "לכתובת הדוא״ל „%s” יש יותר מדי דוחות החזרה קבועים." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "כתובת הדוא״ל „%s” דווחה כספאם או שההודעות תוקפצנה לצמיתות." @@ -1247,11 +1267,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "אין תמיכה ביכולת ‚%s’." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "חייב להיות באורך של תו אחד לכל היותר." - #, unused msgid "errors.field-min-length" msgstr "חייב להיות באורך של תו אחד לפחות." @@ -1271,7 +1286,7 @@ msgstr "" "נראה שאין התאמ בין היכולות הפעילות לבין הקובץ שניסית לפתוח. יש להחיל הסבות " "עבור ‚%s’ לפני שיתאפשר לפתוח את הקובץ הזה." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "קרה משהו לא טוב." @@ -1321,11 +1336,11 @@ msgstr "ההזמנה כנראה בוטלה או שתוקפה פג." msgid "errors.ldap-disabled" msgstr "אימות מול LDAP הושבת." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "הגעת למיכסת ה־‚%s’. נא ליצור קשר עם התמיכה." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "הגעת למספר הכתובות המרבי (%s) שאפשר להזמין בבקשה אחת" @@ -1341,7 +1356,7 @@ msgstr "נראה כי תוכן התמונה לא תואם לסיומת הקוב msgid "errors.media-type-not-allowed" msgstr "נראה כי זאת תמונה שגויה." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "הודעות הדוא״ל לפרופיל שהזמנת מושתקות (דיווחים על דואר זבל או הרבה החזרות)." @@ -1375,7 +1390,7 @@ msgstr "נתונים שגויים בלוח הגזירים" msgid "errors.profile-blocked" msgstr "הפרופיל חסום" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "הודעות הדוא״ל לפרופיל שלך מושתקות (דיווחי דואר זבל או הרבה החזרות)." @@ -1391,19 +1406,19 @@ msgstr "ה־SVG שגוי או פגום" msgid "errors.team-feature-mismatch" msgstr "התגלתה יכולת לא תואמת ‚%s’" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "אין מספיק חברים כדי לעזוב את הצוות, כנראה יהיה עליך למחוק אותו." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "החבר שניסית להקצות לא קיים." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "הבעלים לא יכולים לעזוב את הקבוצה, עליך להעביר את תפקיד הבעלות." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "כבר קיימת סדרה בשם הזה" @@ -1412,11 +1427,11 @@ msgstr "כבר קיימת סדרה בשם הזה" msgid "errors.token-set-doesnt-exists" msgstr "אי אפשר לשכפל ערכה לא ידועה" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "לא ניתן להשלים את החיתוך, כבר קיימת סדרה באותו השם בנתיב." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "כבר קיימת אפשרות ערכת עיצוב באותו השם" @@ -1444,31 +1459,31 @@ msgstr "הגרסה הזאת נעולה ואחרים לא יכולים למחוק msgid "errors.version-not-supported" msgstr "מספר גרסת הקובץ לא תואם" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "שגיאת תקשורת, הכתובת אינה נגישה" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "הכתובת לא מעבירה תיקוף." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "ההעברה האחרונה לא הצליחה." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "שגיאה בתיקוף SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "תום זמן המתנה" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "שגיאה לא צפויה בעת תיקוף" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "המצב %s לא צפוי" @@ -1530,7 +1545,7 @@ msgstr "אירעה שגיאה" msgid "inspect.attributes.blur" msgstr "טשטוש" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "ערך" @@ -1538,15 +1553,15 @@ msgstr "ערך" msgid "inspect.attributes.color" msgstr "צבע" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "הקסדצימלי" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1554,7 +1569,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "מילוי" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "הורדת תמונת מקור" @@ -1648,35 +1663,37 @@ msgstr "אחיד" msgid "inspect.attributes.stroke.width" msgstr "רוחב" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "טיפוגרפיה" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "משפחת גופנים" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "גודל גופן" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "סגנון גופן" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "משקל גופן" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "ריווח תווים" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "גובה שורה" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "עיטור טקסט" @@ -1684,35 +1701,36 @@ msgstr "עיטור טקסט" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "קו חוצה" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "ללא" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "קו תחתי" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "התמרת טקסט" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "ראשונות גדולות" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "אותיות קטנות" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "ללא" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "ביטול הגדרה" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "אותיות גדולות" @@ -1724,15 +1742,15 @@ msgstr "מאפייני הגוון" msgid "inspect.attributes.variants" msgstr "מאפייני הגוונים" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "למידע נוסף על חקירת עיצוב אפשר לבקר במרכז העזרה של Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "מידע נוסף על חקירה" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "ניתן לבחור צורה, לוח או קבוצה ולראות את המאפיינים והקוד שלהם" @@ -1796,15 +1814,23 @@ msgstr "SVG" msgid "inspect.tabs.code.selected.text" msgstr "טקסט" +#: src/app/main/ui/inspect/right_sidebar.cljs:109 +msgid "inspect.tabs.computed" +msgstr "מחושב" + #: src/app/main/ui/inspect/right_sidebar.cljs:114 msgid "inspect.tabs.info" msgstr "מידע" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/inspect/right_sidebar.cljs:165 +msgid "inspect.tabs.switcher.label" +msgstr "פרטי שכבה" + +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "לסמן הכול כנקרא" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "קיצורי דרך" @@ -1816,11 +1842,11 @@ msgstr "מקובל" msgid "labels.access-tokens" msgstr "אסימוני גישה" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "פעיל" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "הוספה" @@ -1828,11 +1854,11 @@ msgstr "הוספה" msgid "labels.add-custom-font" msgstr "הוספת גופן משלך" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "מתווסף…" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "ניהול" @@ -1840,7 +1866,7 @@ msgstr "ניהול" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "הכול" @@ -1863,7 +1889,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "שער גישה שגוי" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "ביטול" @@ -1871,11 +1897,11 @@ msgstr "ביטול" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "סגירה" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "צמצום" @@ -1887,11 +1913,11 @@ msgstr "הערה" msgid "labels.comment.mark-as-solved" msgstr "סימון כפתור" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "הערות" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "קהילה" @@ -1899,7 +1925,7 @@ msgstr "קהילה" msgid "labels.confirm-password" msgstr "אישור סיסמה" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "להמשיך" @@ -1915,11 +1941,11 @@ msgstr "אפשר להמשיך עם חשבון Penpot" msgid "labels.copy" msgstr "העתקה" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "העתקת צבע" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "העתקת קישור" @@ -1927,7 +1953,7 @@ msgstr "העתקת קישור" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "יצירה" @@ -1947,7 +1973,7 @@ msgstr "גופנים משלך" msgid "labels.dashboard" msgstr "לוח בקרה" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "מחיקה" @@ -1959,7 +1985,7 @@ msgstr "מחיקת הערה" msgid "labels.delete-comment-thread" msgstr "מחיקת שרשור" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "מחיקת הזמנה" @@ -1976,19 +2002,19 @@ msgstr "פיתוח" msgid "labels.director" msgstr "הנהלה בכירה" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "התעלמות" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "טיוטות" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "שכפול" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "עריכה" @@ -1996,11 +2022,11 @@ msgstr "עריכה" msgid "labels.edit-file" msgstr "עריכת קובץ" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "עורך" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "ריקה" @@ -2013,11 +2039,11 @@ msgstr "שגיאה" msgid "labels.event" msgstr "אירוע" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "התוקף פג" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "ייצוא" @@ -2045,7 +2071,7 @@ msgstr "ספקי גופנים" msgid "labels.font-variants" msgstr "סגנונות" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "גופנים" @@ -2059,11 +2085,11 @@ msgstr "מייסד/סגן נשיא" msgid "labels.freelancer" msgstr "יש לי עסק משלי" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "מאגר GitHub" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "הגשת משוב" @@ -2075,7 +2101,7 @@ msgstr "חזרה" msgid "labels.graphic-design" msgstr "עיצוב גרפי" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "מרכז העזרה" @@ -2083,15 +2109,15 @@ msgstr "מרכז העזרה" msgid "labels.hide" msgstr "הסתרה" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "הסתרת הערות שנפתרו" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "ייבוא" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "בלתי פעיל" @@ -2113,7 +2139,7 @@ msgstr "שגיאה פנימית" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "הזמנות" @@ -2121,7 +2147,7 @@ msgstr "הזמנות" msgid "labels.language" msgstr "שפה" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "ספריות ותבניות" @@ -2141,7 +2167,7 @@ msgstr "כניסה או הרשמה" msgid "labels.login" msgstr "כניסה" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "יציאה" @@ -2149,11 +2175,11 @@ msgstr "יציאה" msgid "labels.marketing" msgstr "שיווק" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "חבר" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "חברים" @@ -2161,23 +2187,27 @@ msgstr "חברים" msgid "labels.mention" msgstr "אזכור" +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 +msgid "labels.mixed-values" +msgstr "מעורבב" + #: src/app/main/ui/settings/password.cljs:84 msgid "labels.new-password" msgstr "סיסמה חדשה" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "הבאה" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "עברת על הכול! התראות על הערות חדשות תופענה כאן." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "אין הזמנות ממתינות." -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "אוספים יחד את האנשים ויוצרים דברים מדהימים." @@ -2194,7 +2224,7 @@ msgstr "אופס!" msgid "labels.notifications" msgstr "התראות" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "קובץ" @@ -2210,7 +2240,7 @@ msgstr[1] "%s לוחות" msgstr[2] "%s לוחות" msgstr[3] "%s לוחות" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "מיזם" @@ -2231,7 +2261,7 @@ msgstr "סיסמה ישנה" msgid "labels.only-yours" msgstr "שלך בלבד" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "אפשרויות" @@ -2247,7 +2277,7 @@ msgstr "אחר (נא לפרט)" msgid "labels.other-short" msgstr "אחר" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "בעלים" @@ -2255,11 +2285,11 @@ msgstr "בעלים" msgid "labels.password" msgstr "סיסמה" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "בהמתנה" -#: src/app/main/ui/dashboard/sidebar.cljs:750 +#: src/app/main/ui/dashboard/sidebar.cljs:751 msgid "labels.pinned-projects" msgstr "מיזמים נעוצים" @@ -2283,7 +2313,7 @@ msgstr "ניהול מוצר" msgid "labels.profile" msgstr "פרופיל" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "מיזמים" @@ -2291,7 +2321,7 @@ msgstr "מיזמים" msgid "labels.refresh" msgstr "ריענון" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "הודעות מהדורה" @@ -2305,11 +2335,11 @@ msgstr "רענון קובץ" msgid "labels.remove" msgstr "הסרה" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "הסרת חבר" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "שינוי שם" @@ -2337,7 +2367,7 @@ msgstr "תגובה חדשה" msgid "labels.reply.thread" msgstr "תגובה" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "שליחת ההזמנה מחדש" @@ -2349,15 +2379,15 @@ msgstr "שחזור" msgid "labels.retry" msgstr "ניסיון חוזר" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "תפקיד" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "שמירה" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "חיפוש" @@ -2385,11 +2415,11 @@ msgstr "אנחנו בהפוגת תחזוקה מתוכננת של המערכות msgid "labels.service-unavailable.main-message" msgstr "השירות אינו זמין" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "סדרות" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "הגדרות" @@ -2401,7 +2431,7 @@ msgstr "שיתוף" msgid "labels.share-prototype" msgstr "שיתוף אבטיפוס" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "ספריות משותפות" @@ -2409,7 +2439,7 @@ msgstr "ספריות משותפות" msgid "labels.show" msgstr "הצגה" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "הצגת כל ההערות" @@ -2417,11 +2447,11 @@ msgstr "הצגת כל ההערות" msgid "labels.show-comments-list" msgstr "הצגת רשימת הערות" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "הצגת האזכורים שלך בלבד" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "הצגת ההערות שלך בלבד" @@ -2429,7 +2459,7 @@ msgstr "הצגת ההערות שלך בלבד" msgid "labels.sketch" msgstr "Sketch" -#: src/app/main/ui/dashboard/sidebar.cljs:729 +#: src/app/main/ui/dashboard/sidebar.cljs:730 msgid "labels.sources" msgstr "מקורות" @@ -2437,7 +2467,7 @@ msgstr "מקורות" msgid "labels.start" msgstr "התחלה" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "מצב" @@ -2459,11 +2489,11 @@ msgstr "חבר או חברת צוות" msgid "labels.themes" msgstr "ערכות עיצוב" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "מדריכים" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "שגיאה לא ידועה" @@ -2495,15 +2525,15 @@ msgstr "העלאת גופנים משלך" msgid "labels.uploading" msgstr "מתבצעת העלאה…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "תצוגה בלבד" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "מציג" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "התליות" @@ -2511,11 +2541,11 @@ msgstr "התליות" msgid "labels.write-new-comment" msgstr "כתיבת הערה חדשה" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(אני)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "החשבון שלך" @@ -2606,23 +2636,23 @@ msgstr "אפשר להרחיב את Penpot עם תוספים מובנים שנב msgid "loader.tips.10.title" msgstr "תמיכה בתוספים" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "בחירת תמונה" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "מדרג" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "תמונה" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "תמונה" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "שמירה על יחס גובה־רוחב" @@ -2640,7 +2670,7 @@ msgstr "התמונה נטענת…" msgid "media.radial" msgstr "מעגלי" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "אחיד" @@ -2712,19 +2742,19 @@ msgstr "יצירת אסימון" msgid "modals.create-access-token.title" msgstr "יצירת אסימון גישה" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "יצירת התליה" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "יצירת התליה" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "כתובת מטען" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2768,11 +2798,11 @@ msgstr "למחוק את הדיון הזה? כל התגובות בשרשור תי msgid "modals.delete-comment-thread.title" msgstr "מחיקת דיון" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "למחוק את הסימון הזה?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "מחיקת סימון" @@ -2816,11 +2846,11 @@ msgstr "למחוק את הגופן הזה? הוא לא ייטען אם נעשה msgid "modals.delete-font.title" msgstr "גופן נמחק" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "למחוק את העמוד הזה?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "מחיקת עמוד" @@ -2876,27 +2906,27 @@ msgstr[1] "מחיקת קבצים" msgstr[2] "מחיקת קבצים" msgstr[3] "מחיקת קבצים" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "מחיקת צוות" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "למחוק את הצוות הזה? כל המיזמים והקבצים שמשויכים לצוות יימחקו לצמיתות." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "צוות נמחק" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "מחיקת חבר" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "למחוק את החבר הזה מהצוות?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "למחוק חבר בצוות" @@ -2908,53 +2938,53 @@ msgstr[1] "נכסים שכבר נעשה בהם שימוש בקבצים האלה msgstr[2] "נכסים שכבר נעשה בהם שימוש בקבצים האלה יישארו שם (אף עיצוב לא ייפגע)." msgstr[3] "נכסים שכבר נעשה בהם שימוש בקבצים האלה יישארו שם (אף עיצוב לא ייפגע)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "מחיקת התליה" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "למחוק את ההתליה?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "מחיקת התליה" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "עריכת התליה" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "עריכת התליה" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "שליחת הזמנה" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "כתובות דוא״ל, מופרדות בפסיקים" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "חלק מהחברים כבר נמצאים בצוות. נזמין את השאר." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "אפשר להזמין חברים לצוות כדי שיוכלו לגשת לקובץ הזה ולהיחשף לכל שאר קובצי " "הצוות." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "הזמנת חברים לצוות" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "כיוון שאין עוד חברים בצוות הזה מלבדך, הצוות יימחק על כל המיזמים והקבצים שלו." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "ברצונך לעזוב את הצוות %s?" @@ -2980,15 +3010,15 @@ msgstr "נא לבחור חבר לקידום" msgid "modals.leave-and-reassign.title" msgstr "בטרם עזיבתך" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "עזיבת צוות" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "לעזוב את הצוות הזה?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "עזיבת הצוות" @@ -3016,37 +3046,37 @@ msgstr[1] "העברת ספריות" msgstr[2] "העברת ספריות" msgstr[3] "העברת ספריות" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "כמות ההינד" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "העברת בעלות" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "העברת בעלות תשנה את תפקידך לחלק מההנהלה תוך אובדן חלק מההרשאות שלך על הצוות " "הזה. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "הצוות הזה הוא כרגע בבעלותך. להפוך את %s לבעלים החדשים של הצוות?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "בעלים חדשים לצוות" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "פרסום" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "הספרייה שלך ריקה. לפרסם אותה בכל זאת?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "פרסום ספרייה ריקה" @@ -3107,21 +3137,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "עדכון רכיבים בספרייה משותפת" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "עדכון" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "ביטול" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "פעולה זו תעדכן רכיב בספריה משותפת. זה עשוי להשפיע על הקבצים האחרים שמשתמשים " "בה." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "עדכון רכיב בספריה משותפת" @@ -3225,11 +3255,11 @@ msgstr "הפסקת תחזוקה: המערכת תושבת לעבודת תחזוק msgid "notifications.by-code.upgrade-version" msgstr "יש גרסה חדשה, נא לרענן את העמוד" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "ההזמנה נשלחה בהצלחה" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "קישור ההזמנה הועתק" @@ -3372,7 +3402,7 @@ msgstr "הזמנת חברים" msgid "onboarding.choice.team-up.invite-members-info" msgstr "רצוי לזכור לכלול את כולם. מפתחים, מעצבים, מנהלים… גיוון מעשיר :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "הזמנה עם התפקיד:" @@ -3590,193 +3620,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "מעבר למסך הכניסה" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "ניתוק" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "מעורב" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "הסרת צבע" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "בחירת פריטים שמשתמשים בסגנון הזה" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "יסודות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "לוח בקרה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "מציג" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "סביבת עבודה" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "יישור" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "עריכה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "כללי" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "כללי" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "תפריט ראשי" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "שינוי שכבות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "ניווט" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "ניווט" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "ניווט" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "לוחות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "נתיבים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "צורות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "טקסטים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "כלים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "תקריב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "תקריב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "הערות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "הוספת מפרק" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "יישור לתחתית" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "יישור למרכז" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "יישור למרכז אופקית" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "יישור משני הצדדים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "יישור שמאלה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "יישור ימינה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "יישור לראש" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "יישור למרכז אנכית" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "יצירת לוח מהבחירה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "החלפת מצב מודגש" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "הבדל בוליאני" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "החרגה בוליאנית" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "הצלבה בוליאנית" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "איחוד בוליאני" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "שליחה אחורה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "הרחקה לאחור" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "קידום" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "הבאה לחזית" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "פינוי ביטול" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "העתקה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "העתקת קישור ללוח הגזירים" @@ -3785,287 +3815,271 @@ msgstr "העתקת קישור ללוח הגזירים" msgid "shortcuts.copy-props" msgstr "העתקת מאפיינים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "יצירת חדש" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "גזירה" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "התרחקות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "מחיקה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "מחיקת מפרק" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "ניתוק רכיב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "עיקול" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "אליפסה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "לוח" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "ציור נתיב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "נתיב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "מרובע" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "טקסט" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "שכפול" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "ביטול" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "ייצוא צורות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "כיוון תקריב כדי להציג הכול" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "היפוך אופקי" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "היפוך אנכי" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "הקטנת גודל הכתב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "הגדלת גודל הכתב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "מעבר לטיוטות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "מעבר לספריות המשותפות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "חיפוש" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "קבוצה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "פיזור אופקית" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "הצגת/הסתרת מנשק משתמש" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "התקרבות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "הוספת תמונה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "החלפת מצב נטוי" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "צירוף מפרקים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "הקטנת ריווח תווים" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "הגדלת ריווח תווים" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "הנמכת שורה" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "הגבהת שורה" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "החלפת מצב קו חוצה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "הפיכה לפינה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "הפיכה לעיקול" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "מסכה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "מיזוג מפרקים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "העברה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "העברה למטה מהר" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "העברה שמאלה מהר" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "העברה ימינה מהר" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "העברה למעלה מהר" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "העברת מפרק" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "העברה למטה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "העברה שמאלה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "העברה ימינה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "העברה למעלה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "הלוח הבא" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "לא נמצאו קיצורי דרך" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "הגדרת אטימות ל־100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "הגדרת אטימות ל־10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "הגדרת אטימות ל־20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "הגדרת אטימות ל־30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "הגדרת אטימות ל־40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "הגדרת אטימות ל־50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "הגדרת אטימות ל־60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "הגדרת אטימות ל־70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "הגדרת אטימות ל־80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "הגדרת אטימות ל־90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "בוחר צבעים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "מעבר לסעיף הערות צופים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "מעבר ללוח בקרה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "מעבר לסעיף חקירת צופה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "מעבר לסעיף תפעול משתמש" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "מעבר לסעיף תפעול צופה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "מעבר לסביבת עבודה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " או " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "הדבקה" @@ -4079,191 +4093,191 @@ msgstr "הדבקת מאפיינים" msgid "shortcuts.plugins" msgstr "מנהל תוספים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "לוח קודם" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "ביצוע חוזר" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "שינוי שם" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "איפוס תקריב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "התאמת גודל" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "חיפוש בקיצורי הדרך" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "בחירה בהכול" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "בחירת השכבה הבאה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "בחירת שכבת הורה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "בחירת השכבה הקודמת" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "הפרדת מפרקים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "הצגת/הסתרת רשת פיקסלים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "הצגת/הסתרת קיצורי דרך" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "הצמדה למפרקים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "הצמדה לרשת פיקסלים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "התחלת עריכה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "התחלת מדידה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "עצירת מדידה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "הגדרת תמונות ממוזערות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "קיצורי מקלדת" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "החלפת מצב יישור דינמי" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "החלפת מצב נכסים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "החלפת מצב לוח צבעים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "החלפת מצב מיקוד" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "החלפת מילוי מסך" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "הצגת / הסתרת קווים מנחים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "החלפת הצגת היסטוריה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "החלפת הצגת שכבות" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "הוספת/הסרת פריסת flex" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "הוספת/הסרת פריסת רשת" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "נעילת הנבחרים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "נעילת יחסים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "הצגת / הסתרת סרגלים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "הצמדה לקווים מנחים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "הצמדה לקווים מנחים סרגלים" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "החלפת לוח טקסט" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "החלפת ערכת עיצוב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "החלפת מצב הצגה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "החלפת סגנון תקריב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "החלפת מצב קו תחתי" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "ביטול" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "פירוק קבוצה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "ביטול מסכה" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "פיזור אנכי" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "הקטנת עדשת תקריב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "הגדלת עדשת תקריב" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "התמקדות על הנבחר" @@ -4275,6 +4289,13 @@ msgstr "תוכנית מסחרית" msgid "subscription.dashboard.power-up.enterprise-trial.top-title" msgstr "תוכנית מסחרית (ניסיון)" +#: src/app/main/ui/dashboard/subscription.cljs:64 +#, markdown +msgid "subscription.dashboard.power-up.professional.bottom-text" +msgstr "" +"קבלת יותר מקום אחסון, שחזור קבצים ועוד עבור הצוותים שלך עם התוכנית ללא " +"הגבלה. [להשתדרג!|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:63 msgid "subscription.dashboard.power-up.professional.top-title" msgstr "תוכנית מקצועית" @@ -4318,11 +4339,41 @@ msgstr "עורכים נוספים, אחסון וגרסאות שמורות אוט msgid "subscription.dashboard.power-up.your-subscription" msgstr "המינוי שלך:" +#: src/app/main/ui/dashboard/subscription.cljs:168 +msgid "subscription.dashboard.professional-dashboard-cta-title" +msgstr "" +"יש לך %s עורכים על פני הצוותים שבבעלותך, בעוד שהתוכנית המקצועית שלך מכסה עד " +"8." + +#: src/app/main/ui/dashboard/subscription.cljs:176 +#, markdown +msgid "subscription.dashboard.professional-dashboard-cta-upgrade-owner" +msgstr "" +"נא לשדרג כעת לתוכנית הבלתי מוגבלת או למסחרית כדי לאפשר יותר עורכים, אחסון " +"ושחזור קבצים. [להירשם כעת.|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:111 msgid "subscription.dashboard.team-plan" msgstr "תוכנית צוותית" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/subscription.cljs:171 +msgid "subscription.dashboard.unlimited-dashboard-cta-title" +msgstr "" +"הצוות שלך לא מפסיק לגדול! התוכנית ללא הגבלה מכסה עד %s עורכים, אך כעת יש לך " +"%s." + +#: src/app/main/ui/dashboard/subscription.cljs:179 +#, markdown +msgid "subscription.dashboard.unlimited-dashboard-cta-upgrade-owner" +msgstr "" +"נא לשדרג כעת כדי לעמוד במכסת העורכים הנוכחית שלך. [להירשם " +"כעת.|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:152 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-title" +msgstr "הזמנת אנשים תוך השתתפות בתוכנית הבלתי מוגבלת" + +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "שדרוג" @@ -4362,19 +4413,45 @@ msgstr "90 ימי שמירת גרסאות אוטומטית ושחזור קבצי msgid "subscription.settings.enterprise.capped-bill" msgstr "חשבונית חודשית מוגבלת" +#: src/app/main/ui/settings/subscription.cljs:392, src/app/main/ui/settings/subscription.cljs:402, src/app/main/ui/settings/subscription.cljs:454 +msgid "subscription.settings.enterprise.unlimited-storage-benefit" +msgstr "אחסון בלתי מוגבל" + #: src/app/main/ui/dashboard/subscription.cljs:124, src/app/main/ui/settings/subscription.cljs:371, src/app/main/ui/settings/subscription.cljs:383, src/app/main/ui/settings/subscription.cljs:395, src/app/main/ui/settings/subscription.cljs:405 msgid "subscription.settings.manage-your-subscription" msgstr "ניהול המינוי שלך" +#: src/app/main/ui/settings/subscription.cljs:131 +msgid "subscription.settings.management.dialog.currently-editors-title" +msgid_plural "subscription.settings.management.dialog.currently-editors-title" +msgstr[0] "נכון לעכשיו, יש משתמש/ת %s על פני הצוותים שלך שיכולים לערוך." +msgstr[1] "נכון לעכשיו, יש %s משתמשים/ות על פני הצוותים שלך שיכולים לערוך." +msgstr[2] "נכון לעכשיו, יש %s משתמשים/ות על פני הצוותים שלך שיכולים לערוך." +msgstr[3] "נכון לעכשיו, יש %s משתמשים/ות על פני הצוותים שלך שיכולים לערוך." + #: src/app/main/ui/settings/subscription.cljs:149 msgid "subscription.settings.management.dialog.downgrade" msgstr "" "חשוב לציין: שנמוך לתוכנית נמוכה יותר תפחית את מקום האחסון ותקצר את " "היסטוריית הגיבויים והגרסאות." +#: src/app/main/ui/settings/subscription.cljs:133 +msgid "subscription.settings.management.dialog.editors" +msgstr "עורכים" + +#: src/app/main/ui/settings/subscription.cljs:138 +msgid "subscription.settings.management.dialog.editors-explanation" +msgstr "[בעלים, מנהלים ועורכים. צופים לא נספרים כעורכים)" + +#: src/app/main/ui/settings/subscription.cljs:181 +msgid "subscription.settings.management.dialog.input-error" +msgstr "" +"אי אפשר להגדיר פחות עורכים ממה שיש לך כרגע. יש לשנות את התפקיד (עריכה/הנהלה " +"לצפייה) לאנשים שלא עורכים קבצים בפועל דרך הגדרות הצוות." + #: src/app/main/ui/settings/subscription.cljs:177 msgid "subscription.settings.management.dialog.payment-explanation" -msgstr "(לא יבוצע שום תשלום כעת)" +msgstr "יחויב אחרי הניסיון. לא צריך כרגע כרטיס אשראי." #: src/app/main/ui/settings/subscription.cljs:170, src/app/main/ui/settings/subscription.cljs:174 #, markdown @@ -4409,6 +4486,18 @@ msgstr "ארגון לחודש" msgid "subscription.settings.professional" msgstr "מקצועי" +#: src/app/main/ui/settings/subscription.cljs:360, src/app/main/ui/settings/subscription.cljs:427 +msgid "subscription.settings.professional.autosave-benefit" +msgstr "גרסאות שנשמרות אוטומטית 7 ימים אחורה ושחזור קבצים" + +#: src/app/main/ui/settings/subscription.cljs:359, src/app/main/ui/settings/subscription.cljs:426 +msgid "subscription.settings.professional.storage-benefit" +msgstr "10 ג״ב אחסון" + +#: src/app/main/ui/settings/subscription.cljs:361, src/app/main/ui/settings/subscription.cljs:428 +msgid "subscription.settings.professional.teams-editors-benefit" +msgstr "צוותים ללא הגבלה. עד 7 עורכים על פני הצוותים בבעלותך." + #: src/app/main/ui/settings/subscription.cljs:355 msgid "subscription.settings.section-plan" msgstr "המינוי שלך" @@ -4425,6 +4514,10 @@ msgstr "הרשמה למינוי" msgid "subscription.settings.success.dialog.description" msgstr "אפשר לערוך את המינוי שלך בכל עת מעמוד ‚מינוי’ בפרטי החשבון שלך." +#: src/app/main/ui/settings/subscription.cljs:238 +msgid "subscription.settings.success.dialog.thanks" +msgstr "תודה על הבחירה בתוכנית %s של Penpot!" + #: src/app/main/ui/settings/subscription.cljs:240 msgid "subscription.settings.sucess.dialog.footer" msgstr "מאחלים לך הנאה מהתוכנית שלך!" @@ -4434,7 +4527,6 @@ msgid "subscription.settings.sucess.dialog.title" msgstr "התוכנית שלך היא %s!" #: src/app/main/ui/settings/subscription.cljs:413 -#, fuzzy msgid "subscription.settings.support-us-since" msgstr "תמכת בנו עם התוכנית הזאת מאז: %s" @@ -4450,11 +4542,19 @@ msgstr "ללא הגבלה" msgid "subscription.settings.unlimited-trial" msgstr "ללא הגבלה (התנסות)" +#: src/app/main/ui/settings/subscription.cljs:369, src/app/main/ui/settings/subscription.cljs:381, src/app/main/ui/settings/subscription.cljs:441 +msgid "subscription.settings.unlimited.autosave-benefit" +msgstr "גרסאות שנשמרות אוטומטית 30 ימים אחורה ושחזור קבצים" + #: src/app/main/ui/settings/subscription.cljs:370, src/app/main/ui/settings/subscription.cljs:382, src/app/main/ui/settings/subscription.cljs:442 msgid "subscription.settings.unlimited.bill" msgstr "חשבון חודשי מוגבל" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/settings/subscription.cljs:368, src/app/main/ui/settings/subscription.cljs:380, src/app/main/ui/settings/subscription.cljs:440 +msgid "subscription.settings.unlimited.storage-benefit" +msgstr "25 ג״ב אחסון" + +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "שדרוג התוכנית" @@ -4525,19 +4625,19 @@ msgstr "סיסמה - Penpot" msgid "title.settings.profile" msgstr "פרופיל - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "הזמנות - %s -‏ Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "חברים - %s‏ - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "הגדרות - %s‏ - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "התליות - %s‏ - Penpot" @@ -4609,43 +4709,43 @@ msgstr "הצגת פעילויות בקליק" msgid "viewer.header.sitemap" msgstr "מפת אתר" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "ההעברה האחרונה הצליחה." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "(%s) יישור למרכז האופקי" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "(%s) פיזור ריווח אופקי" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "(%s) יישור שמאלה" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "(%s) יישור ימינה" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "(%s) יישור למטה" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "(%s) יישור למרכז אנכית" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "(%s) פיזור בריווח אנכי" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "(%s) יישור למעלה" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "הוספת ספרייה" @@ -4654,19 +4754,23 @@ msgstr "הוספת ספרייה" msgid "workspace.assets.assets" msgstr "משאבים" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "כל המשאבים" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "צבעים" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "הוספת צבע" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:81 +msgid "workspace.assets.component-group-options" +msgstr "אפשרויות קבוצת רכיבים" + +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "רכיבים" @@ -4674,23 +4778,23 @@ msgstr "רכיבים" msgid "workspace.assets.components.add-component" msgstr "הוספת רכיב" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s הגוונים" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "יצירת קבוצה" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "הפריטים שלך יקבלו אוטומטית שם בסגנון „שם קבוצה / שם פריט”" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "מחיקה" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "שכפול" @@ -4698,11 +4802,11 @@ msgstr "שכפול" msgid "workspace.assets.duplicate-main" msgstr "שכפול הראשי" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "עריכה" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "סינון" @@ -4711,27 +4815,27 @@ msgstr "סינון" msgid "workspace.assets.graphics" msgstr "גרפיקה" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "תצוגת טבלה" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "קבוצה" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "שם קבוצה" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "תצוגת רשימה" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "ספרייה מקומית" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "ניהול ספרייה" @@ -4743,15 +4847,15 @@ msgstr "לא נמצאו משאבים" msgid "workspace.assets.open-library" msgstr "פתיחת קובץ ספרייה" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "שינוי שם" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "שינוי שם קבוצה" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "חיפוש במשאבים" @@ -4769,7 +4873,7 @@ msgstr[3] "%s פריטים נבחרו" msgid "workspace.assets.shared-library" msgstr "ספרייה משותפת" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "רכיב" @@ -4777,15 +4881,15 @@ msgstr[1] "שני רכיבים" msgstr[2] "%s רכיבים" msgstr[3] "%s רכיבים" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "מיון" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "טיפוגרפיות" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "הוספת טיפוגרפיה" @@ -4810,7 +4914,7 @@ msgstr "ריווח תווים" msgid "workspace.assets.typography.line-height" msgstr "גובה שורה" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "שצ" @@ -4822,59 +4926,59 @@ msgstr "סגנונות טקסט" msgid "workspace.assets.typography.text-transform" msgstr "התמרת טקסט" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "פירוק קבוצה" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "יצירת שטח" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "יצירת לוח" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "מיזוג תאים" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "הוספת עמודה מימין" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "הוספת עמודה משמאל" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "מחיקת עמודה" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "מחיקת עמודה וצורות" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "שכפול עמודה" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "הוספת שורה מתחת" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "הוספת שורה למעלה" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "מחיקת שורה" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "מחיקת שורה וצורות" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "שכפול שורה" @@ -4882,7 +4986,7 @@ msgstr "שכפול שורה" msgid "workspace.focus.focus-mode" msgstr "מצב מיקוד" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "מיקוד כבוי" @@ -4902,11 +5006,11 @@ msgstr "מדרג קווי" msgid "workspace.gradients.radial" msgstr "מדרג מעגלי" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "השבתת יישור דינמי" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "השבתת קנה מידה יחסי" @@ -4915,23 +5019,23 @@ msgstr "השבתת קנה מידה יחסי" msgid "workspace.header.menu.disable-scale-text" msgstr "השבתת שינוי גודל טקסט" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "השבתת הצמדה לקווים המנחים" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "השבתת הצמדה לפיקסל" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "השבתת הצמדה לקווים מנחים סרגלים" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "הפעלת יישור דינמי" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "הפעלת קנה מידה יחסי" @@ -4940,51 +5044,51 @@ msgstr "הפעלת קנה מידה יחסי" msgid "workspace.header.menu.enable-scale-text" msgstr "הפעלת שינוי גודל טקסט" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "הצמדה לקווים מנחים" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "הפעלת הצמדה לפיקסל" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "הצמדה לקווים מנחים סרגלים" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "הסתרת שמות לוחות" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "הסתרת קווים מנחים" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "הסתרת ערכת צבעים" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "הסתרת רשת פיקסלים" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "הסתרת סרגלים" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "הסתרת לוח גופנים" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "עריכה" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "קובץ" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "עזרה ומידע" @@ -4993,63 +5097,63 @@ msgstr "עזרה ומידע" msgid "workspace.header.menu.option.power-up" msgstr "חיזוק התוכנית שלך" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "העדפות" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "תצוגה" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "ביצוע מחדש" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "לבחור הכול" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "הצגת שמות לוחות" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "הצגת קווים מנחים" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "הצגת ערכת צבעים" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "הצגת רשת פיקסלים" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "הצגת סרגלים" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "הצגת לוח גופנים" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "החלפה לערכת עיצוב כהה" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "החלפה לערכת עיצוב בהירה" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "החלפה לערכת עיצוב כמו המערכת" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "החזרה" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "איפוס" @@ -5065,7 +5169,7 @@ msgstr "נשמר" msgid "workspace.header.saving" msgstr "בשמירה" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "שיתוף" @@ -5074,11 +5178,11 @@ msgstr "שיתוף" msgid "workspace.header.unsaved" msgstr "שינויים שלא נשמרו" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "מצב תצוגה (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "תקריב" @@ -5090,7 +5194,7 @@ msgstr "מילוי - שינוי גודל כדי למלא" msgid "workspace.header.zoom-fit" msgstr "התאמה - שינוי גודל כדי להתאים" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "כיוון תקריב כדי להציג הכול" @@ -5098,43 +5202,43 @@ msgstr "כיוון תקריב כדי להציג הכול" msgid "workspace.header.zoom-full-screen" msgstr "מסך מלא" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "התמקדות על הנבחר" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "עריכת רשת" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "יציאה מהמערכת" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "ריפוד מלמטה" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "הצגת אפשרויות ריפוד עם 4 צדדים" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "ריפוד אופקי" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "ריפוד משמאל" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "ריפוד מימין" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "ריפוד מלמעלה" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "ריפוד אנכי" @@ -5150,7 +5254,7 @@ msgstr "בוצע" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "איתור" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "איתור פריסת הרשת" @@ -5159,10 +5263,6 @@ msgstr "איתור פריסת הרשת" msgid "workspace.libraries.add" msgstr "הוספה" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s צבעים" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "אין עדיין סגנונות צבע בספרייה שלך" @@ -5189,43 +5289,35 @@ msgstr "צבעים אחרונים" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB משלים" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "שמירת סגנון צבע" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s רכיבים" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "או להוסיף כמה מאלה לניסיון:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "אין ספריות משותפות בצוות שלך, אפשר לחפש אחר" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "כל מיני תבניות כאן" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "ספריית קבצים" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s גרפיקה" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "ספריות בקובץ הזה" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "ספריות" @@ -5234,11 +5326,11 @@ msgstr "ספריות" msgid "workspace.libraries.library" msgstr "ספרייה" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "עדכוני ספרייה" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "בטעינה…" @@ -5247,51 +5339,47 @@ msgstr "בטעינה…" msgid "workspace.libraries.more-templates" msgstr "אפשר לחפש " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "אין ספריות משותפות שדורשות עדכון" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "לא נמצאו תוצאות לחיפוש אחר „%s”" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "חיפוש בספריות המשותפות" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "ספריות משותפות" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "חיבור ספרייה" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "מגוון טיפוגרפיות" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "ניתוק כל הטיפוגרפיות" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s טיפוגרפיות" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "ניתוק ספרייה" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "עדכון" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "הצגת כל השינויים" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "עדכונים" @@ -5299,31 +5387,31 @@ msgstr "עדכונים" msgid "workspace.notification-pill.detail" msgstr "פרטים" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "יש ללחוץ על הכפתור + כדי להוסיף אינטראקציות." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "הוספת טשטוש" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "הסרת טשטוש" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "טשטוש" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "טשטוש קבוצה" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "טשטוש בחירה" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "החלת/הסרת טשטוש" @@ -5331,101 +5419,111 @@ msgstr "החלת/הסרת טשטוש" msgid "workspace.options.canvas-background" msgstr "רקע משטח ציור" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "חיתוך התוכן" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "רכיב" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "הסבר" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "העתקה" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "יצירת הסבר" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "עריכת הסבר" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "ראשי" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "החלפת רכיב" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "עדיין אין נכסים בתיקייה הזאת" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "לא מקושר" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 msgid "workspace.options.component.variant.duplicated.copy.locate" msgstr "מעבר לרכיב הראשי" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:496 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:509 msgid "workspace.options.component.variant.duplicated.copy.title" msgstr "" "לרכיב הזה יש הגוונים סותרים. נא לוודא שלכל אחד מההגוונים יש סדרה ייחודית של " "ערכי מאפיינים." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1246 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 msgid "workspace.options.component.variant.duplicated.group.locate" msgstr "איתור הגוונים כפולים" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1243 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1278 msgid "workspace.options.component.variant.duplicated.group.title" msgstr "לחלק מההגוונים יש מאפיינים וערכים זהים" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:267 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:268 msgid "workspace.options.component.variant.duplicated.single.all" msgstr "להגוונים האלה יש מאפיינים וערכים זהים." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:264 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 msgid "workspace.options.component.variant.duplicated.single.one" msgstr "להגוון הזה יש מאפיינים וערכים זהים להגוון אחר." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:270 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 msgid "workspace.options.component.variant.duplicated.single.some" msgstr "לחלק מההגוונים האלה יש מאפיינים וערכים זהים." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +msgid "workspace.options.component.variant.malformed.copy" +msgstr "" +"לרכיב הזה יש הגוונים עם שמות שגויים. נא לוודא שכל אחד מההגוונים מיושר עם " +"המבנה הנכון." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "איתור הגוונים שגויים" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "לחלק מההגוונים יש שמות שגויים" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:502 +msgid "workspace.options.component.variant.malformed.locate" +msgstr "איתור הגוונים שגויים" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "להגוונים האלה יש שמות שגויים." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "להגוון הזה יש שם שגוי." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "לחלק מההגוונים האלה יש שם שגוי." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[מאפיין]=[ערך], [מאפיין]=[ערך]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "לנסות להשתמש במבנה הבא:" @@ -5445,7 +5543,7 @@ msgstr "חולקים את אותו השם." #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:76 msgid "workspace.options.component.variants-help-modal.rule2" -msgstr "הם מאותו הסוג" +msgstr "הם מאותו הסוג." #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:77 msgid "workspace.options.component.variants-help-modal.rule2.detail" @@ -5453,13 +5551,13 @@ msgstr "מרובע, אליפסה, נתיבים ופעולות בוליאניות #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:87 msgid "workspace.options.component.variants-help-modal.rule3" -msgstr "יש את אותה רמת ההיררכיה" +msgstr "יש את אותה רמת ההיררכיה." #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:88 msgid "workspace.options.component.variants-help-modal.rule3.detail" msgstr "קבוצות, לוחות ופריסות נחשבים לשווי ערך." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:935, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1157, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 msgid "workspace.options.component.variants-help-modal.title" msgstr "איך הגוונים נשארים מחוברים" @@ -5503,7 +5601,7 @@ msgstr "עליון" msgid "workspace.options.constraints.topbottom" msgstr "עליון ותחתון" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "עיצוב" @@ -5516,7 +5614,7 @@ msgstr "ייצוא" msgid "workspace.options.export-multiple" msgstr "ייצוא הבחירה" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "ייצוא רכיב" @@ -5524,15 +5622,15 @@ msgstr[1] "ייצוא %s רכיבים" msgstr[2] "ייצוא %s רכיבים" msgstr[3] "ייצוא %s רכיבים" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "הוספת ייצוא" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "הסרת ייצוא" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "סיומת" @@ -5540,7 +5638,7 @@ msgstr "סיומת" msgid "workspace.options.exporting-complete" msgstr "הייצוא הושלם" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "מתבצע ייצוא…" @@ -5552,27 +5650,27 @@ msgstr "הייצוא נכשל" msgid "workspace.options.exporting-object-slow" msgstr "הייצוא אטי בהגזמה" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "מילוי" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "הוספת מילוי" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "הסרת מילוי" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "שינוי גודל הלוח כדי שיתאים לתוכן" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "הוספת תחילת זרימה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "זרימה" @@ -5581,19 +5679,19 @@ msgstr "זרימה" msgid "workspace.options.flows.flow-start" msgstr "התחלת זרימה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "הזרימה מתחילה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "הסרת זרימה" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "אוטומטי" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "עמודות" @@ -5602,7 +5700,7 @@ msgstr "עמודות" msgid "workspace.options.grid.grid-title" msgstr "טבלה" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "צבע" @@ -5611,15 +5709,15 @@ msgstr "צבע" msgid "workspace.options.grid.params.columns" msgstr "עמודות" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "מרזב" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "גובה" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "שול" @@ -5628,7 +5726,7 @@ msgstr "שול" msgid "workspace.options.grid.params.rows" msgstr "שורות" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "הגדרה כבררת מחדל" @@ -5642,159 +5740,159 @@ msgstr "גודל" msgid "workspace.options.grid.params.type" msgstr "סוג" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "תחתון" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "מרכז" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "שמאל" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "ימין" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "מתיחה" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "עליון" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "להשתמש בבררת המחדל" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "רוחב" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "שורות" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "ריבוע" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "מילוי קבוצה" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "מתאר קבוצה" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "הוספת קו מנחה" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "הסרת קו מנחה" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "קווים מנחים" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "הצגת/הסתרת קו מנחה" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "גובה" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "חקירה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "פעולה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "לאחר השהיה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "הנפשה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "התמוססות" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "ללא" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "דחיפה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "גלישה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "אוטו" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "הוספת שכבת רקע" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "תיסגר בלחיצה מחוצה לה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "סגירת שכבת על" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "סגירת שכבת על: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "השהיה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "יעד" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "משך" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "החלקה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "קלה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "החלקה פנימה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "החלקה פנימה החוצה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "החלקה החוצה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "קווי" @@ -5803,47 +5901,47 @@ msgstr "קווי" msgid "workspace.options.interaction-in" msgstr "פנימה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "כניסת עכבר" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "יציאת עכבר" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "מילישניות" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "ניווט אל" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "ניווט אל: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(לא הוגדר)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "אפקט הזחה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "בלחיצה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "פתיחת שכבת על" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "פתיחת שכבת על: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "פתיחת כתובת" @@ -5852,87 +5950,87 @@ msgstr "פתיחת כתובת" msgid "workspace.options.interaction-out" msgstr "החוצה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "בתחתית במרכז" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "בתחתית משמאל" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "בתחתית מימין" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "מרכז" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "ידני" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "בראש באמצע" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "בראש משמאל" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "בראש מימין" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "מיקום" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "שימור מיקום גלילה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "המסך הקודם" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "יחסי אל" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "עצמי" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "החלפת מצב שכבת על" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "החלפת מצב שכבת על: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "הקפצה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "כתובת" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "בזמן ריחוף" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "בזמן לחיצה" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "אינטראקציות" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "הוספת אינטראקציה" @@ -5941,67 +6039,67 @@ msgstr "הוספת אינטראקציה" msgid "workspace.options.interactions.remove-interaction" msgstr "הסרת אינטראקציה" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "צבע" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "צריבת צבע" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "בריחת צבע" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "החשכה" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "הבדל" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "הדרה" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "אור קשיח" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "גוון" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "הבהרה" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "תאורה" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "הכפלה" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "רגיל" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "שכבת על" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "רוויה" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "מסך" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "אור רך" @@ -6020,7 +6118,7 @@ msgstr "קיבוץ שכבות" msgid "workspace.options.layer-options.title.multiple" msgstr "שכבות נבחרות" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "הצגת/הסתרת שכבה" @@ -6029,19 +6127,19 @@ msgstr "הצגת/הסתרת שכבה" msgid "workspace.options.layout-item.advanced-ops" msgstr "אפשרויות מתקדמות" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "גובה מר.‏" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "רוחב מר.‏" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "גובה מז.‏" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "רוחב מז.‏" @@ -6155,15 +6253,15 @@ msgstr "רווח בין לבין" msgid "workspace.options.layout.top" msgstr "עליון" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "צבעים נוספים" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "צבעי ספרייה נוספים" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "אטימות" @@ -6172,35 +6270,35 @@ msgstr "אטימות" msgid "workspace.options.position" msgstr "מיקום" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "אבטיפוס" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "רדיוס" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "בתחתית משמאל" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "בתחתית מימין" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "בראש משמאל" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "בראש מימין" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "צמצום רדיוס עצמאי" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "הצגת רדיוס עצמאי" @@ -6212,7 +6310,7 @@ msgstr "אחרונים" msgid "workspace.options.retry" msgstr "לנסות שוב" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "סיבוב" @@ -6220,31 +6318,31 @@ msgstr "סיבוב" msgid "workspace.options.search-font" msgstr "חיפוש גופן" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "נא לבחור צורה, לוח או קבוצה כדי לגרור חיבור ללוח אחר." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "צבעים נבחרים" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "מילוי בחירה" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "מתאר בחירה" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "הוספת הצללה" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "טשטוש" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "צבע הצללה" @@ -6256,63 +6354,64 @@ msgstr "הטלת צל" msgid "workspace.options.shadow-options.inner-shadow" msgstr "צל פנימי" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "הסרת הצללה" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "פיזור" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "צל" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "צל של קבוצה" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "צללים של בחירה" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "הצגת/הסתרת הצללה" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "הצגה בייצואים" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "להציג במצב הצגה" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "גודל" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "תבניות גודל" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "נעילת יחס" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "שחרור יחס" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "מתאר" @@ -6321,7 +6420,7 @@ msgstr "מתאר" msgid "workspace.options.stroke-cap.circle-marker" msgstr "סמן עגול" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "עיגול" @@ -6330,7 +6429,7 @@ msgstr "עיגול" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "סמן יהלום" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "יהלום" @@ -6339,19 +6438,19 @@ msgstr "יהלום" msgid "workspace.options.stroke-cap.line-arrow" msgstr "חץ קו" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "חץ" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "ללא" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "עגול" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "ריבוע" @@ -6360,7 +6459,7 @@ msgstr "ריבוע" msgid "workspace.options.stroke-cap.square-marker" msgstr "סמן ריבוע" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "מרובע" @@ -6369,83 +6468,83 @@ msgstr "מרובע" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "חץ משולש" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "משולש" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "צבע מתאר" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "עובי מתאר" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "הוספת צבע מתאר" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "מרכז" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "מקווקוו" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "מנוקד" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "בפנים" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "מעורב" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "בחוץ" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "הסרת מתאר" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "אחיד" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "יישור לתחתית" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "יישור לאמצע" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "יישור לראש" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "משמאל לימין" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "מימין לשמאל" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "גובה אוטומטי" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "רוחב אוטומטי" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "קבוע" @@ -6467,35 +6566,35 @@ msgstr "אותיות קטנות" msgid "workspace.options.text-options.none" msgstr "ללא" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "קו חוצה (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "יישור למרכז" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "יישור לשני הצדדים" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "יישור שמאלה" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "יישור ימינה" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "טקסט" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "קיבוץ טקסט" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "טקסט בחירה" @@ -6504,7 +6603,7 @@ msgstr "טקסט בחירה" msgid "workspace.options.text-options.titlecase" msgstr "רישיות כותרת" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "קו תחתי (%s)" @@ -6513,19 +6612,19 @@ msgstr "קו תחתי (%s)" msgid "workspace.options.text-options.uppercase" msgstr "אותיות גדולות" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "ניתן להשתמש בכפתור הנגינה שבכותרת כדי להריץ את תצוגת האבטיפוס." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "עובי" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "ציר X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "ציר Y" @@ -6569,111 +6668,111 @@ msgstr "הפרדת מפרקים (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "הצמדת מפרקים (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "פתיחה" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "חשיפת [תוספים נוספים](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "עדיין לא מותקן אף תוסף" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "המצהר/מניפסט של התוסף שגוי." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "צריך הרשאות עריכה כדי להשתמש בתוסף הזה" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "התוסף לא קיים או שהכתובת שגויה." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "התקנה" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "תוספים מותקנים" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "מנהל תוספים" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "תוספים" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "לעדכן את התוסף הזה" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "התוסף הזה השתנה מאז שפתחת אותו. עכשיו הוא רוצה גם לגשת אל:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "התחלת הורדות קבצים." -#: src/app/main/ui/workspace/plugins.cljs:285 +#: src/app/main/ui/workspace/plugins.cljs:286 msgid "workspace.plugins.permissions.allow-localstorage" msgstr "אחסון נתונים בדפדפן." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "קריאת התגובות שלך ומתן מענה עליהן." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "לקרוא ולשנות את ההערות שלך ולהגיב בשמך." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "קריאת התוכן של קבצים שלמשתמשים יש גישה אליהם." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "קריאה ושינוי התוכן של קבצים שלמשתמשים יש גישה אליהם." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "נא לשים לב שהתוסף הזה נוצר על ידי גוף חיצוני, לכן כדאי לוודא שהוא אמין לפי " "שמעניקים לו גישה. פרטיות ואבטחת המידע שלך חשובים לנו. במקרה של ספק נא ליצור " "קשר עם התמיכה." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "קריאת הספריות והמשאבים שלך." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "קריאה ושינוי הספריות והמשאבים שלך." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "התוסף ‚%s’ רוצה לגשת אל:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "קריאת פרטי הפרופיל של המשתמש הנוכחי." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "רשימת תוספים" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "הסרת תוסף" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "נא למלא כתובת תוסף" @@ -6681,25 +6780,25 @@ msgstr "נא למלא כתובת תוסף" msgid "workspace.plugins.success" msgstr "התוסף נטען כראוי." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "תוספים" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "לא עכשיו" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "מעניין אותך להציץ? בחירה בזה תיפתח בטיוטה חדשה לצוות הנוכחי שלך. (אם לא, " "תמיד אפשר למצוא אותו בתוספים המותקנים של כל קובץ שהוא.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "תוסף ‚%s’ מותקן למשתמש שלך!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "התנסות בתוסף" @@ -6711,15 +6810,15 @@ msgstr "הוספת פריסת flex" msgid "workspace.shape.menu.add-grid" msgstr "הוספת פריסת רשת" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "הוספת פריסה" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "יצירת הגוון" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "הוספת מאפיין חדש" @@ -6731,11 +6830,11 @@ msgstr "הרחקה" msgid "workspace.shape.menu.backward" msgstr "הרחקה לאחור" -#: src/app/main/ui/workspace/context_menu.cljs:615, src/app/main/ui/workspace/sidebar/assets/components.cljs:638, src/app/main/ui/workspace/sidebar/assets/groups.cljs:74, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1021 +#: src/app/main/ui/workspace/context_menu.cljs:617, src/app/main/ui/workspace/sidebar/assets/components.cljs:634, src/app/main/ui/workspace/sidebar/assets/groups.cljs:75, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1041 msgid "workspace.shape.menu.combine-as-variants" msgstr "שילוב כהגוון" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:640 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:636 msgid "workspace.shape.menu.combine-as-variants-error" msgstr "הרכיבים צריכים להיות באותו העמוד" @@ -6771,7 +6870,7 @@ msgstr "העתקה כ־SVG" msgid "workspace.shape.menu.copy-text" msgstr "העתקה כטקסט" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "יצירת הסבר" @@ -6779,11 +6878,11 @@ msgstr "יצירת הסבר" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "בחירה ללוח" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "יצירת רכיב" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "יצירת מגוון רכיבים" @@ -6791,7 +6890,7 @@ msgstr "יצירת מגוון רכיבים" msgid "workspace.shape.menu.cut" msgstr "גזירה" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "מחיקה" @@ -6799,15 +6898,15 @@ msgstr "מחיקה" msgid "workspace.shape.menu.delete-flow-start" msgstr "מחיקת התחלת זרימה" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "ניתוק מופע" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "הפרדת מופעים" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "הבדל" @@ -6819,11 +6918,11 @@ msgstr "שכפול" msgid "workspace.shape.menu.edit" msgstr "עריכה" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "החרגה" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "שיטוח" @@ -6856,19 +6955,19 @@ msgstr "מעבר לקובץ הרכיב הראשי" msgid "workspace.shape.menu.group" msgstr "קבוצה" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "הסתרה" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "הצגת/הסתרת מנשק משתמש" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "הצלבה" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "נעילה" @@ -6876,7 +6975,7 @@ msgstr "נעילה" msgid "workspace.shape.menu.mask" msgstr "מסכה" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "הדבקה" @@ -6896,15 +6995,15 @@ msgstr "הסרת פריסת flex" msgid "workspace.shape.menu.remove-grid" msgstr "הסרת פריסת רשת" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "הסרת פריסה" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "הסרת מאפיין" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1221 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1256 msgid "workspace.shape.menu.remove-variant-property.last-property" msgstr "להגוון חייב להיות מאפיין אחד לפחות" @@ -6912,15 +7011,15 @@ msgstr "להגוון חייב להיות מאפיין אחד לפחות" msgid "workspace.shape.menu.rename" msgstr "שינוי שם" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "איפוס מעקפים" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "שחזור הרכיב הראשי" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "שחזור הגוון" @@ -6928,15 +7027,15 @@ msgstr "שחזור הגוון" msgid "workspace.shape.menu.select-layer" msgstr "בחירת שכבה" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "הצגה" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "הצגה בלוח משאבים" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "הצגת הרכיב הראשי" @@ -6949,6 +7048,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "הגדרה כתמונה ממוזערת" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "המרה לנתיב" @@ -6956,11 +7056,11 @@ msgstr "המרה לנתיב" msgid "workspace.shape.menu.ungroup" msgstr "פירוק קבוצה" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "איחוד" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "שחרור נעילה" @@ -6973,7 +7073,7 @@ msgstr "ביטול מסכה" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "עדכון הרכיבים הראשיים" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "עדכון הרכיב הראשי" @@ -6985,11 +7085,11 @@ msgstr "צמצום סרגל צד" msgid "workspace.sidebar.expand" msgstr "הרחבת סרגל צד" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "היסטוריה" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "שכבות" @@ -7029,11 +7129,11 @@ msgstr "טקסטים" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "מאפייני SVG יובאו" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "עמודים" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "הוספת עמוד" @@ -7050,27 +7150,27 @@ msgstr "%s ערכות עיצוב פעילות" msgid "workspace.tokens.add set" msgstr "הוספת סדרה" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "הוספת ערכת עיצוב חדשה" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "הוספת סדרה לקבוצה הזאת" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "הוספת אסימון: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "חל על" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "ציר" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "חזרה לרשימת ערכות העיצוב" @@ -7100,15 +7200,15 @@ msgstr "צבע" msgid "workspace.tokens.create-new-theme" msgstr "אפשר ליצור את ערכת העיצוב הראשונה שלך עכשיו." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "ליצור אחד." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "יצירת אסימון %s חדש" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "מחיקת אסימון" @@ -7116,19 +7216,19 @@ msgstr "מחיקת אסימון" msgid "workspace.tokens.delete-theme-title" msgstr "מחיקת ערכת עיצוב" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "שכפול אסימון" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "עותק" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "עריכת אסימון" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "עריכת ערכת עיצוב" @@ -7136,15 +7236,11 @@ msgstr "עריכת ערכת עיצוב" msgid "workspace.tokens.edit-themes" msgstr "עריכת ערכות עיצוב" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "עריכת אסימון" - #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "ערך האסימון לא יכול להישאר ריק" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "נא למלא את שם האסימון %s" @@ -7176,7 +7272,11 @@ msgstr "תצוגה מקדימה:" msgid "workspace.tokens.export.single-file" msgstr "קובץ בודד" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/data/workspace/tokens/application.cljs:292 +msgid "workspace.tokens.font-variant-not-found" +msgstr "שגיאה בהגדרת משקל/סגנון גופן. סגנון הגופן הזה לא קיים בגופן הנוכחי" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "רווחים" @@ -7194,7 +7294,7 @@ msgstr "שם קבוצה" msgid "workspace.tokens.grouping-set-alert" msgstr "אין עדיין תמיכה בקיבוץ סדרות אסימונים." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:232 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:233 msgid "workspace.tokens.import-button-prefix" msgstr "ייבוא %s" @@ -7202,27 +7302,27 @@ msgstr "ייבוא %s" msgid "workspace.tokens.import-error" msgstr "שגיאת ייבוא:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:273 msgid "workspace.tokens.import-menu-folder-option" msgstr "תיקייה" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 msgid "workspace.tokens.import-menu-json-option" msgstr "קובץ JSON יחיד" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:270 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 msgid "workspace.tokens.import-menu-zip-option" msgstr "קובץ ZIP" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "בריבוי קבצים, שם / נתיב הקובץ הם השמות המוגדרים." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "בקובץ JSON יחיד, המפתחות ברמה העליונה חייבים להיות שמות הסדרה של האסימונים." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "ייבוא אסימונים" @@ -7231,7 +7331,7 @@ msgstr "ייבוא אסימונים" msgid "workspace.tokens.import-tooltip" msgstr "ייבוא קובץ JSON ידרוס את כל האסימונים, הסדרות וערכות העיצוב הנוכחיים שלך" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "ייבוא אסימונים ידרוס את כל האסימונים הנוכחיים, הסדרות וערכות העיצוב שלך." @@ -7284,15 +7384,15 @@ msgstr "ערכת עיצוב" msgid "workspace.tokens.label.theme-placeholder" msgstr "הוספת ערכת עיצוב (למשל: בהירה)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "שוליים" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "גודל מרבי" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "גודל מזערי" @@ -7300,7 +7400,7 @@ msgstr "גודל מזערי" msgid "workspace.tokens.missing-references" msgstr "חסרות הפניות אסימונים: " -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:148 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:123 msgid "workspace.tokens.more-options" msgstr "אפשר לראות את האפשרויות בלחיצה על כפתור העכבר הימני" @@ -7312,7 +7412,7 @@ msgstr "אין סדרות פעילות" msgid "workspace.tokens.no-active-theme" msgstr "אין ערכת עיצוב פעילה" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "נדרשות הרשאות עריכה כדי להפעיל / להשבית סדרות" @@ -7320,11 +7420,11 @@ msgstr "נדרשות הרשאות עריכה כדי להפעיל / להשבית msgid "workspace.tokens.no-permission-themes" msgstr "נדרשות הרשאות עריכה כדי להשתמש בערכות עיצוב" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "עדיין לא מוגדרות סדרות. נא ליצור אחת קודם." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "אין סדרות עדיין." @@ -7352,12 +7452,11 @@ msgstr "ערך אסימון שגוי. הערך הפתור גדול מדי: %s" msgid "workspace.tokens.opacity-range" msgstr "שקיפות צריכה להיות בין 0 ל־100% או 0 ו־1 (כלומר 50% או 0.5)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 -#, fuzzy +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 msgid "workspace.tokens.original-value" msgstr "ערך מקורי: %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "ריפודים" @@ -7365,7 +7464,7 @@ msgstr "ריפודים" msgid "workspace.tokens.radius" msgstr "רדיוס" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "ההפניה לא תקפה או שאינה באף סדרה פעילה" @@ -7374,8 +7473,7 @@ msgstr "ההפניה לא תקפה או שאינה באף סדרה פעילה" msgid "workspace.tokens.reference-error" msgstr "שגיאות הפניה: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 -#, fuzzy +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 msgid "workspace.tokens.resolved-value" msgstr "ערך פתור: %s" @@ -7383,7 +7481,7 @@ msgstr "ערך פתור: %s" msgid "workspace.tokens.save-theme" msgstr "שמירת ערכת עיצוב" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "בחירה ערכה." @@ -7391,11 +7489,11 @@ msgstr "בחירה ערכה." msgid "workspace.tokens.self-reference" msgstr "לאסימון יש הפניה עצמית" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "נא למלא שם (להשתמש ב־‚/’ לקבוצות)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "נא להגדיר באילו סדרות אסימונים להשתמש כחלק מאפשרות ערכת העיצוב הזאת:" @@ -7416,7 +7514,7 @@ msgstr "כאן אפשר להגדיר את גודל הכתב הבסיסי, שמג msgid "workspace.tokens.settings" msgstr "הגדרות אסימונים" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "גודל" @@ -7424,10 +7522,6 @@ msgstr "גודל" msgid "workspace.tokens.stroke-width-range" msgstr "עובי הקו חייב להיות גדול או שווה ל־0." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:871, src/app/main/ui/workspace/tokens/management/create/form.cljs:898 -msgid "workspace.tokens.text-decoration-value-enter" -msgstr "נא למלא עיצוב טקסט: none | underline | strike-through" - #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:130 msgid "workspace.tokens.theme-name" msgstr "ערכת עיצוב %s" @@ -7442,28 +7536,27 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "רשימת ערכות עיצוב" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 -#, fuzzy +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 msgid "workspace.tokens.token-description" msgstr "תיאור" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:827 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:973 msgid "workspace.tokens.token-font-family-select" msgstr "בחירת משפחת גופנים" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:834, src/app/main/ui/workspace/tokens/management/create/form.cljs:885 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1029 msgid "workspace.tokens.token-font-family-value" msgstr "משפחת גופנים" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:833, src/app/main/ui/workspace/tokens/management/create/form.cljs:886 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:979, src/app/main/ui/workspace/tokens/management/create/form.cljs:1031 msgid "workspace.tokens.token-font-family-value-enter" msgstr "משפחת גופנים או רשימת גופנים מופרדת בפסיקים (,)" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "שם" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " הוא לא שם תקף לאסימון.\n" @@ -7475,11 +7568,11 @@ msgstr "" msgid "workspace.tokens.token-not-resolved" msgstr "לא ניתן לפתור אסימון הפניה עם השם: %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "ערך" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "נא למלא ערך או כינוי עם {alias}" @@ -7487,7 +7580,7 @@ msgstr "נא למלא ערך או כינוי עם {alias}" msgid "workspace.tokens.tokens-section-title" msgstr "אסימונים - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "כלים" @@ -7499,19 +7592,23 @@ msgstr "הייבוא הצליח. חלק מהאסימונים לא נכללו." msgid "workspace.tokens.unknown-token-type-section" msgstr "הסוג ‚%s’ לא נתמך (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "הערך לא תקף" +#: src/app/main/data/workspace/tokens/errors.cljs:69 +msgid "workspace.tokens.value-with-percent" +msgstr "ערך שגוי: אסור %." + #: src/app/main/data/workspace/tokens/errors.cljs:65 msgid "workspace.tokens.value-with-units" msgstr "ערך שגוי: אסור יחידות." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "שינוי שם האסימון הזה יפגע בכל הפניה לשם הישן שלו." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "משאבים" @@ -7519,7 +7616,7 @@ msgstr "משאבים" msgid "workspace.toolbar.color-palette" msgstr "ערכת צבעים (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "הערות (%s)" @@ -7730,19 +7827,19 @@ msgstr "פעולה על %s" msgid "workspace.undo.title" msgstr "היסטוריה" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "התעלמות" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "מידע נוסף" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "יש עדכונים בספריות המשותפות" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "עדכון" @@ -7810,11 +7907,11 @@ msgstr "לשחזר את הגרסה הזאת?" msgid "workspace.versions.snapshot-menu" msgstr "פתיחת תפריט תמונת מצב" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "פעולות" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "היסטוריה" @@ -7838,3 +7935,208 @@ msgstr "גרסאות שנשמרו אוטומטית תישמרנה למשך %s י #, unused msgid "workspace.viewport.click-to-close-path" msgstr "לחיצה תסגור את הנתיב" + +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:98, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:105 +msgid "color-row.token-color-row.deleted-token" +msgstr "האסימון הזה לא קיים או שנמחק." + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:35 +msgid "color-token.empty-state" +msgstr "" +"אין אסימוני צבע זמינים. נא לבדוק ערכות/ערכות עיצוב פעילות או להוסיף אסימונים " +"חדשים." + +#: src/app/main/ui/dashboard/team.cljs:765 +msgid "dashboard.invitation-modal.delete" +msgstr "תימחקנה ההזמנות שמיועדות אל:" + +#: src/app/main/ui/dashboard/team.cljs:766 +msgid "dashboard.invitation-modal.resend" +msgstr "תישלחנה מחדש ההזמנות שמיועדות אל:" + +#: src/app/main/ui/dashboard/team.cljs:756 +msgid "dashboard.invitation-modal.title.delete-invitations" +msgstr "מחיקת הזמנות" + +#: src/app/main/ui/dashboard/team.cljs:757 +msgid "dashboard.invitation-modal.title.resend-invitations" +msgstr "שליחת הזמנות מחדש" + +#: src/app/main/ui/dashboard/team.cljs:949 +msgid "dashboard.order-invitations-by-role" +msgstr "סידור לפי תפקיד" + +#: src/app/main/ui/dashboard/team.cljs:958 +msgid "dashboard.order-invitations-by-status" +msgstr "סידור לפי מצב" + +#: src/app/main/ui/inspect/styles/property_detail_copiable.cljs:52 +msgid "inspect.tabs.styles.panel.copy-to-clipboard" +msgstr "העתקה ללוח הגזירים" + +#: src/app/main/ui/inspect/styles/style_box.cljs:22 +msgid "inspect.tabs.styles.panel.geometry" +msgstr "גודל ומקום" + +#: src/app/main/ui/inspect/styles/style_box.cljs:59, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:179 +msgid "inspect.tabs.styles.panel.toggle-style" +msgstr "החלפת חשיפת הלוח %s" + +#: src/app/main/ui/inspect/styles/style_box.cljs:21 +msgid "inspect.tabs.styles.panel.token" +msgstr "ערכות אסימונים וערכות עיצוב" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:26 +msgid "inspect.tabs.styles.panel.tokens.active-sets" +msgstr "ערכות פעילות" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:21 +msgid "inspect.tabs.styles.panel.tokens.active-themes" +msgstr "ערכות עיצוב פעילות" + +#: src/app/main/ui/inspect/styles/style_box.cljs:20 +msgid "inspect.tabs.styles.panel.variant" +msgstr "מאפייני הגוון" + +#: src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:102, src/app/main/ui/inspect/styles/rows/properties_row.cljs:53 +msgid "inspect.tabs.styles.token.resolved-value" +msgstr "ערך פתור:" + +#: src/app/main/ui/dashboard/sidebar.cljs:1043 +msgid "labels.about-penpot" +msgstr "על Penpot" + +#: src/app/main/ui/inspect/styles/style_box.cljs:26 +msgid "labels.blur" +msgstr "טשטוש" + +#: src/app/main/ui/workspace/colorpicker.cljs:427 +msgid "labels.color" +msgstr "צבע" + +#: src/app/main/ui/dashboard/sidebar.cljs:1030 +msgid "labels.community-contributions" +msgstr "קהילה ותרומות" + +#: src/app/main/ui/inspect/styles/style_box.cljs:23 +msgid "labels.fill" +msgstr "מילוי" + +#: src/app/main/ui/dashboard/sidebar.cljs:1019 +msgid "labels.help-learning" +msgstr "עזרה ולמידה" + +#: src/app/main/ui/inspect/styles/style_box.cljs:28 +msgid "labels.layout" +msgstr "פריסה" + +#: src/app/main/ui/dashboard/sidebar.cljs:798 +msgid "labels.learning-center" +msgstr "מרכז הלמידה" + +#: src/app/main/ui/dashboard/sidebar.cljs:878 +msgid "labels.penpot-changelog" +msgstr "יומן השינויים של Penpot" + +#: src/app/main/ui/dashboard/sidebar.cljs:804 +msgid "labels.penpot-hub" +msgstr "המרכז של Penpot" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:644 +msgid "labels.reference" +msgstr "הפניה" + +#: src/app/main/ui/dashboard/team.cljs:788 +msgid "labels.resend" +msgstr "שליחה מחדש" + +#: src/app/main/ui/inspect/styles/style_box.cljs:27 +msgid "labels.shadow" +msgstr "צל" + +#: src/app/main/ui/inspect/styles/style_box.cljs:24, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:46 +msgid "labels.stroke" +msgstr "קו מתאר" + +#: src/app/main/ui/inspect/right_sidebar.cljs:107, src/app/main/ui/inspect/styles.cljs:107 +msgid "labels.styles" +msgstr "סגנונות" + +#: src/app/main/ui/inspect/styles/style_box.cljs:33 +msgid "labels.svg" +msgstr "SVG" + +#: src/app/main/ui/inspect/styles/style_box.cljs:25 +msgid "labels.text" +msgstr "טקסט" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1148 +msgid "labels.typography" +msgstr "טיפוגרפיה" + +#: src/app/main/ui/inspect/right_sidebar.cljs:65, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:949, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:518 +msgid "labels.variant" +msgstr "הגוון" + +#: src/app/main/ui/dashboard/sidebar.cljs:872 +msgid "labels.version-notes" +msgstr "הערות לגרסה %s" + +#: src/app/main/ui/inspect/styles/style_box.cljs:32 +msgid "labels.visibility" +msgstr "חשיפה" + +#: src/app/main/ui/dashboard/team.cljs:825 +msgid "notifications.invitation-deleted" +msgstr "ההזמנה נמחקה בהצלחה" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +msgid "shortcuts.create-component-variant" +msgstr "יצירת רכיב / הגוון" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:715 +msgid "workspace.tokens.use-reference" +msgstr "להשתמש בהפניה" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:744 +msgid "workspace.tokens.reference-composite" +msgstr "נא למלא כינוי לטיפוגרפיית אסימון" + +#: src/app/main/data/workspace/tokens/errors.cljs:93 +msgid "workspace.tokens.invalid-token-value-typography" +msgstr "ערך שגוי: חייב להפנות לאסימון טיפוגרפיה מרוכב." + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:711 +msgid "workspace.tokens.individual-tokens" +msgstr "להשתמש באסימונים עצמאיים" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:551 +msgid "workspace.tokens.edit-token" +msgstr "עריכת אסימון %s" + +#: src/app/main/data/workspace/tokens/errors.cljs:97 +msgid "workspace.tokens.composite-line-height-needs-font-size" +msgstr "" +"גובה השורה תלוי בגודל הגופן. יש להוסיף גודל גופן כדי לקבל את הערך הפתור." + +#: src/app/main/ui/workspace/libraries.cljs:349 +msgid "workspace.libraries.connected-to" +msgstr "מחובר אל" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:463 +msgid "workspace.component.switch.loop-error-multi" +msgstr "לא ניתן לכבות/להדליק חלק מהעותקים. אי אפשר לקנן את הרכיבים בתוך עצמם." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:464 +msgid "workspace.component.swap.loop-error" +msgstr "אי אפשר לקנן את הרכיבים בתוך עצמם." + +#: src/app/main/ui/workspace/colorpicker.cljs:431, src/app/main/ui/workspace/colorpicker.cljs:443 +msgid "workspace.colorpicker.color-tokens" +msgstr "אסימוני צבע" + +#: src/app/main/ui/dashboard/subscription.cljs:156 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-text" +msgstr "" +"רק עורכים חדשים על פני הצוותים שבבעלותך מחושבים בחיובים העתידיים. 175$ בחודש " +"בלי תוספות עדיין חלים על ‎25+‎ עורכים." diff --git a/frontend/translations/hi.po b/frontend/translations/hi.po index 275a057406..f6c5ccb8cf 100644 --- a/frontend/translations/hi.po +++ b/frontend/translations/hi.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: VKing9 \n" -"Language-Team: Hindi " -"\n" +"Language-Team: Hindi \n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.13\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -175,7 +175,7 @@ msgstr "डिजाइन और प्रोटोटाइपिंग के msgid "auth.terms-and-privacy-agreement" msgstr "मैं [सेवा की शर्तें](%s) और [गोपनीयता नीति](%s) से सहमत हूँ।" -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "सेवा की शर्तें" @@ -202,7 +202,7 @@ msgstr "...ब्रांडिंग, चित्रण, मार्के msgid "comments.mentions.not-found" msgstr "@%s के लिए कोई व्यक्ति नहीं मिला" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "प्रकाशित" @@ -274,7 +274,7 @@ msgstr "प्रोटोटाइप्स साझा करें" msgid "common.share-link.view-all" msgstr "सभी चुनें" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "अप्रकाशित" @@ -399,7 +399,7 @@ msgstr "टोकन की कोई समाप्ति तिथि नह msgid "dashboard.add-file" msgstr "फ़ाइल जोड़ें" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "साझी लाइब्रेरी के रूप में जोड़ें" @@ -407,31 +407,31 @@ msgstr "साझी लाइब्रेरी के रूप में ज msgid "dashboard.change-email" msgstr "ईमेल बदलें" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(कॉपी)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "नई टीम बनाएं" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "इस संस्करण को पिन करें" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "आपका पेनपॉट" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "टीम हटाएं" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "पेनपोट फ़ाइल (.penpot) डाउनलोड करें" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "मानक फ़ाइल डाउनलोड करें (.svg + .json)" @@ -515,7 +515,7 @@ msgstr "शानदार चीज़ें बनाना शुरू क msgid "dashboard.export-binary-multi" msgstr "%s Penpot फ़ाइलें (.penpot) डाउनलोड करें" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "बोर्ड्स को PDF के रूप में निर्यात करें" @@ -531,7 +531,7 @@ msgstr "पेनपोट %s फ़ाइलें निर्यात कर msgid "dashboard.export-multiple.selected" msgstr "%s में से %s तत्व चयनित किए गए" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "निर्यात" @@ -744,11 +744,11 @@ msgstr "सर्वर पर डेटा अपलोड किया जा msgid "dashboard.import.progress.upload-media" msgstr "फ़ाइल अपलोड हो रही है: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "लोगों को आमंत्रित करें" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "टीम छोड़ें" @@ -756,7 +756,7 @@ msgstr "टीम छोड़ें" msgid "dashboard.libraries-and-templates" msgstr "लाइब्रेरी और टेम्पलेट्स" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "" "यहाँ कुछ लाइब्रेरीज़ और टेम्पलेट्स हैं जिन्हें आप अपने प्रोजेक्ट में जोड़ " @@ -766,7 +766,7 @@ msgstr "" msgid "dashboard.libraries-and-templates.explore" msgstr "इनमें से और अधिक एक्सप्लोर करें और जानें कि आप कैसे योगदान दे सकते हैं" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "टेम्पलेट आयात करने में समस्या आई। टेम्पलेट आयात नहीं किया गया।" @@ -802,7 +802,7 @@ msgstr "दूसरी टीम में स्थानांतरित msgid "dashboard.new-file" msgstr "+ नई फ़ाइल" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "नई फ़ाइल" @@ -810,7 +810,7 @@ msgstr "नई फ़ाइल" msgid "dashboard.new-project" msgstr "+ नया प्रोजेक्ट" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "नया प्रोजेक्ट" @@ -818,11 +818,11 @@ msgstr "नया प्रोजेक्ट" msgid "dashboard.no-matches-for" msgstr "“%s“ के लिए कोई मेल नहीं मिला" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "पिन किए गए प्रोजेक्ट यहां दिखाई देंगे" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "सूचनाएँ" @@ -834,7 +834,7 @@ msgstr "आपका ईमेल पता सफलतापूर्वक msgid "dashboard.notifications.email-verified-successfully" msgstr "आपका ईमेल पता सफलतापूर्वक सत्यापित हो गया है" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "सूचना सेटिंग्स अपडेट कर दी गई हैं" @@ -842,11 +842,11 @@ msgstr "सूचना सेटिंग्स अपडेट कर दी msgid "dashboard.notifications.password-saved" msgstr "पासवर्ड सफलतापूर्वक सहेजा गया!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "सूचनाएं देखें" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s सदस्य" @@ -878,7 +878,7 @@ msgstr "आप अब इस टीम के मालिक (Owner) बन ग msgid "dashboard.permissions-change.viewer" msgstr "आप अब इस टीम के दृश्यकर्ता (Viewer) बन गए हैं।" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "पिन/अनपिन" @@ -915,7 +915,7 @@ msgstr "अब आप टीम “%s“ का हिस्सा नहीं msgid "dashboard.save-settings" msgstr "सेटिंग्स सहेजें" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "खोजना…" @@ -1007,7 +1007,7 @@ msgstr "सूचनाएं" msgid "dashboard.show-all-files" msgstr "सभी फ़ाइलें दिखाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "संस्करण इतिहास" @@ -1031,7 +1031,7 @@ msgstr[1] "आपकी फ़ाइलों को सफलतापूर् msgid "dashboard.success-duplicate-project" msgstr "आपका प्रोजेक्ट सफलतापूर्वक डुप्लिकेट किया गया है" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "आपकी फ़ाइल सफलतापूर्वक स्थानांतरित कर दी गई है" @@ -1043,15 +1043,15 @@ msgstr "आपकी फ़ाइलें सफलतापूर्वक स msgid "dashboard.success-move-project" msgstr "आपका प्रोजेक्ट सफलतापूर्वक स्थानांतरित कर दिया गया है" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "टीम जानकारी" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "टीम के सदस्यगण" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "टीम प्रोजेक्ट्स" @@ -1071,7 +1071,7 @@ msgstr "खोज के परिणाम" msgid "dashboard.type-something" msgstr "परिणाम खोजने के लिए टाइप करें" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "लाइब्रेरी अप्रकाशित करें" @@ -1079,50 +1079,50 @@ msgstr "लाइब्रेरी अप्रकाशित करें" msgid "dashboard.update-settings" msgstr "सेटिंग्स अपडेट करें" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "रचनात्मकता पर कोई सीमा नहीं" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "पेनपॉट मुफ़्त" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "सक्रिय है" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "जब यह हुक ट्रिगर होगा, तो घटना विवरण भेजा जाएगा" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "आप केवल वेबहुक्स को हटा या संशोधित कर सकते हैं जो आपने बनाए हैं।" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "सामग्री प्रकार" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "वेबहुक बनाएं" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "वेबहुक सफलतापूर्वक बनाया गया।" -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "वेबहुक्स एक सरल तरीका हैं जिससे अन्य वेबसाइटें और ऐप्स Penpot में कुछ " "घटनाएँ होने पर सूचित हो सकें। हम आपके द्वारा दिए गए प्रत्येक URL पर POST " "अनुरोध भेजेंगे।" -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "\"वेबहुक जोड़ें\" बटन दबाएं एक जोड़ने के लिए।" -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "अभी तक कोई वेबहुक नहीं बनाया गया है।" @@ -1142,7 +1142,7 @@ msgstr "ईमेल" msgid "dashboard.your-name" msgstr "आपका नाम" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "आपका पेनपॉट" @@ -1158,15 +1158,15 @@ msgstr "ध्यान दें" msgid "ds.component-subtitle" msgstr "अपडेट करने के लिए घटक:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "अनुमति देना" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "रद्द करें" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "ठीक है" @@ -1228,7 +1228,7 @@ msgstr "हालाँकि पेनपॉट अब इस प्रका msgid "errors.deprecated.contact.text" msgstr "हमसे संपर्क करें" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "किसी पैरेंट को उसकी स्वयं की चाइल्ड पथ पर ड्रॉप नहीं किया जा सकता।" @@ -1248,11 +1248,11 @@ msgstr "आप अपना ईमेल पासवर्ड के रूप msgid "errors.email-domain-not-allowed" msgstr "डोमेन की अनुमति नहीं है" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "ईमेल «%s» के कई स्थायी बाउंस रिपोर्ट्स हैं।" -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "" "ईमेल «%s» को स्पैम के रूप में रिपोर्ट किया गया है या स्थायी रूप से बाउंस " @@ -1269,11 +1269,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "फीचर '%s' समर्थित नहीं है।" -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "इसमें अधिकतम 1 अक्षर होना चाहिए।" - #, unused msgid "errors.field-min-length" msgstr "इसमें कम से कम 1 अक्षर अवश्य होना चाहिए।" @@ -1294,7 +1289,7 @@ msgstr "" "आप खोलने का प्रयास कर रहे हैं। फ़ाइल खोलने से पहले '%s' के लिए माइग्रेशन " "लागू करना आवश्यक है।" -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "कुछ ग़लत हुआ है।" @@ -1344,11 +1339,11 @@ msgstr "यह आमंत्रण रद्द हो सकता है य msgid "errors.ldap-disabled" msgstr "LDAP प्रमाणीकरण अक्षम है।" -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "आप '%s' सीमा तक पहुंच चुके हैं। सहायता से संपर्क करें।" -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "एक ही अनुरोध में निमंत्रित किए जा सकने वाले अधिकतम (%s) ईमेल की संख्या " @@ -1366,7 +1361,7 @@ msgstr "ऐसा लगता है कि छवि की सामग्र msgid "errors.media-type-not-allowed" msgstr "ऐसा लगता है कि यह एक मान्य छवि नहीं है।" -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "जिस प्रोफाइल को आप निमंत्रित कर रहे हैं उसके ईमेल म्यूट किए गए हैं (स्पैम " @@ -1394,7 +1389,7 @@ msgstr "क्लिपबोर्ड में अमान्य डेटा msgid "errors.profile-blocked" msgstr "प्रोफ़ाइल अवरुद्ध है" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "आपकी प्रोफ़ाइल के ईमेल म्यूट किए गए हैं (स्पैम रिपोर्ट्स या उच्च बाउंस के " @@ -1412,21 +1407,21 @@ msgstr "SVG अमान्य या त्रुटिपूर्ण है" msgid "errors.team-feature-mismatch" msgstr "असंगत सुविधा '%s' का पता चला" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "टीम छोड़ने के लिए सदस्यों की संख्या अपर्याप्त है, शायद आप इसे हटाना चाहते " "हैं।" -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "जिस सदस्य को आप असाइन करने की कोशिश कर रहे हैं वह मौजूद नहीं है।" -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "मालिक टीम नहीं छोड़ सकता, आपको मालिक की भूमिका पुनः असाइन करनी होगी।" -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "एक समान नाम वाला सेट पहले से मौजूद है" @@ -1435,11 +1430,11 @@ msgstr "एक समान नाम वाला सेट पहले से msgid "errors.token-set-doesnt-exists" msgstr "एक अज्ञात सेट को डुप्लिकेट नहीं किया जा सकता" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "ड्रॉप पूरा नहीं किया जा सकता, उसी नाम का सेट पथ पर पहले से मौजूद है।" -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "समान नाम वाला थीम विकल्प मौजूद है" @@ -1459,31 +1454,31 @@ msgstr "सत्यापन त्रुटि" msgid "errors.version-not-supported" msgstr "फ़ाइल का संस्करण संख्या असंगत है" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "कनेक्शन त्रुटि, URL उपलब्ध नहीं" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL सत्यापन पास नहीं करता है।" -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "अंतिम डिलीवरी सफल नहीं रही।" -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "SSL सत्यापन में त्रुटि हुई है।" -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "समय समाप्त" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "सत्यापन के दौरान अप्रत्याशित त्रुटि हुई" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "अप्रत्याशित स्थिति %s" @@ -1547,7 +1542,7 @@ msgstr "एक त्रुटि हुई है" msgid "inspect.attributes.blur" msgstr "धुंधला" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "मान" @@ -1555,15 +1550,15 @@ msgstr "मान" msgid "inspect.attributes.color" msgstr "रंग" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1571,7 +1566,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "भरना" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "स्रोत छवि डाउनलोड करें" @@ -1665,63 +1660,66 @@ msgstr "ठोस" msgid "inspect.attributes.stroke.width" msgstr "चौड़ाई" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "टाइपोग्राफी" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "फ़ॉन्ट परिवार" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "फ़ॉन्ट आकार" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "फ़ॉन्ट शैली" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "फ़ॉन्ट वजन" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "अक्षरांतर" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "लाइन ऊँचाई" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "पाठ सजावट" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "कोई नहीं" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "रेखांकित (अंडरलाइन)" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "पाठ रूपांतरण" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "छोटे अक्षर" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "कोई नहीं" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "अप्रयुक्त करें" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "बड़े अक्षर" @@ -1733,17 +1731,17 @@ msgstr "वेरिएंट गुणधर्म" msgid "inspect.attributes.variants" msgstr "वेरिएंट्स गुणधर्म" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "यदि आप डिजाइन निरीक्षण के बारे में अधिक जानना चाहते हैं, तो कृपया पेनपॉट के " "हेल्प सेंटर पर जाएं" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "निरीक्षण के बारे में अधिक जानकारी" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "उनके गुणधर्म और कोड का निरीक्षण करने के लिए कोई आकृति, बोर्ड या समूह चुनें" @@ -1811,11 +1809,11 @@ msgstr "पाठ" msgid "inspect.tabs.info" msgstr "जानकारी" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "सभी को पढ़ा हुआ मार्क करें" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "शॉर्टकट्स" @@ -1827,11 +1825,11 @@ msgstr "स्वीकार करें" msgid "labels.access-tokens" msgstr "एक्सेस टोकन" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "सक्रिय" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "जोड़ें" @@ -1839,11 +1837,11 @@ msgstr "जोड़ें" msgid "labels.add-custom-font" msgstr "कस्टम फ़ॉन्ट जोड़ें" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "जोड़ा जा रहा है..।" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "प्रशासक" @@ -1851,7 +1849,7 @@ msgstr "प्रशासक" msgid "labels.adobe-xd" msgstr "एडोब XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "सभी" @@ -1874,7 +1872,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "खराब गेटवे" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "रद्द करें" @@ -1882,11 +1880,11 @@ msgstr "रद्द करें" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "बंद करें" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "संकुचित करें" @@ -1898,11 +1896,11 @@ msgstr "टिप्पणी" msgid "labels.comment.mark-as-solved" msgstr "समाधान के रूप में चिह्नित करें" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "टिप्पणियाँ" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "समुदाय" @@ -1910,7 +1908,7 @@ msgstr "समुदाय" msgid "labels.confirm-password" msgstr "पासवर्ड पुष्टि करें" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "जारी रखें" @@ -1926,11 +1924,11 @@ msgstr "आप पेनपॉट खाते के साथ जारी र msgid "labels.copy" msgstr "कापी" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "रंग कॉपी करें" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "लिंक कॉपी" @@ -1938,7 +1936,7 @@ msgstr "लिंक कॉपी" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "निर्माण" @@ -1958,7 +1956,7 @@ msgstr "कस्टम फ़ॉन्ट्स" msgid "labels.dashboard" msgstr "डैशबोर्ड" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "मिटाना" @@ -1970,7 +1968,7 @@ msgstr "टिप्पणी हटाएं" msgid "labels.delete-comment-thread" msgstr "थ्रेड हटाएं" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "निमंत्रण हटाएं" @@ -1987,19 +1985,19 @@ msgstr "विकास" msgid "labels.director" msgstr "निदेशक" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "छोड़ना" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "ड्राफ्ट्स" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "नक़ल" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "संपादन करें" @@ -2007,11 +2005,11 @@ msgstr "संपादन करें" msgid "labels.edit-file" msgstr "फ़ाइल संपादित करें" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "संपादक" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "रिक्त" @@ -2024,11 +2022,11 @@ msgstr "त्रुटि" msgid "labels.event" msgstr "कार्यक्रम" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "अवधि समाप्त" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "निर्यात" @@ -2056,7 +2054,7 @@ msgstr "फ़ॉन्ट प्रदाता" msgid "labels.font-variants" msgstr "शैलियाँ" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "फ़ॉन्ट्स" @@ -2070,11 +2068,11 @@ msgstr "CEO और संस्थापक" msgid "labels.freelancer" msgstr "फ्रीलांसर" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "GitHub रिपॉज़िटरी" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "प्रतिक्रिया दें" @@ -2086,7 +2084,7 @@ msgstr "वापस जाएँ" msgid "labels.graphic-design" msgstr "ग्राफ़िक डिज़ाइन" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "सहायता केंद्र" @@ -2094,15 +2092,15 @@ msgstr "सहायता केंद्र" msgid "labels.hide" msgstr "छुपाएँ" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "सुलझाए गए टिप्पणियाँ छुपाएँ" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "आयात" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "निष्क्रिय" @@ -2124,7 +2122,7 @@ msgstr "आंतरिक त्रुटि" msgid "labels.invision" msgstr "InVision(इंविज़न)" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "आमंत्रण" @@ -2132,7 +2130,7 @@ msgstr "आमंत्रण" msgid "labels.language" msgstr "भाषा" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "लाइब्रेरी और टेम्पलेट्स" @@ -2148,7 +2146,7 @@ msgstr "लॉग इन या साइन अप" msgid "labels.login" msgstr "लॉग इन करें" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "लॉग आउट" @@ -2156,11 +2154,11 @@ msgstr "लॉग आउट" msgid "labels.marketing" msgstr "मार्केटिंग" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "सदस्य" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "सदस्यों" @@ -2172,19 +2170,19 @@ msgstr "उल्लेख" msgid "labels.new-password" msgstr "नया पासवर्ड" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "अगला" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "आप पूरी तरह से अपडेट हैं! नई टिप्पणी सूचनाएँ यहाँ दिखेंगी।" -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "कोई लंबित निमंत्रण नहीं है।" -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "अपने लोगों को इकट्ठा करें और साथ मिलकर महान चीजें बनाएं।" @@ -2201,7 +2199,7 @@ msgstr "उफ!" msgid "labels.notifications" msgstr "सूचनाएं" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 फ़ाइल" @@ -2213,7 +2211,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 बोर्ड" msgstr[1] "%s बोर्ड्स" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 परियोजना" @@ -2232,7 +2230,7 @@ msgstr "पुराना पासवर्ड" msgid "labels.only-yours" msgstr "केवल तुम्हारा" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "विकल्प" @@ -2248,7 +2246,7 @@ msgstr "अन्य (स्पष्ट करें)" msgid "labels.other-short" msgstr "अन्य" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "स्वामी" @@ -2256,7 +2254,7 @@ msgstr "स्वामी" msgid "labels.password" msgstr "पासवर्ड" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "लंबित" @@ -2280,7 +2278,7 @@ msgstr "उत्पाद प्रबंधन" msgid "labels.profile" msgstr "प्रोफ़ाइल" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "परियोजनाओं" @@ -2288,7 +2286,7 @@ msgstr "परियोजनाओं" msgid "labels.refresh" msgstr "ताज़ा करें" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "रिलीज़ नोट्स" @@ -2302,11 +2300,11 @@ msgstr "फ़ाइल पुनः लोड करें" msgid "labels.remove" msgstr "हटाना" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "सदस्य निकालें" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "नाम बदलें" @@ -2334,7 +2332,7 @@ msgstr "नया उत्तर" msgid "labels.reply.thread" msgstr "उत्तर" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "आमंत्रण पुनः भेजें" @@ -2346,15 +2344,15 @@ msgstr "पुनः स्थापित करें" msgid "labels.retry" msgstr "पुन: प्रयास करें" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "भूमिका" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "सहेजें" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "खोज" @@ -2382,11 +2380,11 @@ msgstr "हमारे सिस्टम्स की निर्धारि msgid "labels.service-unavailable.main-message" msgstr "सेवा अनुपलब्ध है" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "सेट्स" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "सेटिंग्स" @@ -2398,7 +2396,7 @@ msgstr "साझा करें" msgid "labels.share-prototype" msgstr "प्रोटोटाइप साझा करें" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "लाइब्रेरीज़" @@ -2406,7 +2404,7 @@ msgstr "लाइब्रेरीज़" msgid "labels.show" msgstr "दिखाएँ" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "सभी टिप्पणियाँ दिखाएँ" @@ -2414,11 +2412,11 @@ msgstr "सभी टिप्पणियाँ दिखाएँ" msgid "labels.show-comments-list" msgstr "टिप्पणियाँ सूची दिखाएँ" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "सिर्फ आपके उल्लेख दिखाएँ" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "सिर्फ आपकी टिप्पणियाँ दिखाएँ" @@ -2430,7 +2428,7 @@ msgstr "रेखाचित्र" msgid "labels.start" msgstr "प्रारंभ" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "स्थिति" @@ -2452,11 +2450,11 @@ msgstr "टीम के सदस्य" msgid "labels.themes" msgstr "थीम्स" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "ट्यूटोरियल्स" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "अज्ञात त्रुटि" @@ -2484,15 +2482,15 @@ msgstr "कस्टम फ़ॉन्ट्स अपलोड करें" msgid "labels.uploading" msgstr "अपलोड हो रहा है…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "केवल देखें" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "दर्शक" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "वेबहुक" @@ -2500,11 +2498,11 @@ msgstr "वेबहुक" msgid "labels.write-new-comment" msgstr "नई टिप्पणी लिखें" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(आप)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "आपका खाता" @@ -2597,23 +2595,23 @@ msgstr "" msgid "loader.tips.10.title" msgstr "प्लगइन्स समर्थन" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "छवि चुनें" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "ग्रेडिएंट" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "छवि" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "आकार अनुपात बनाए रखें" @@ -2631,7 +2629,7 @@ msgstr "छवि लोड हो रही है…" msgid "media.radial" msgstr "विकिरणीय" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "ठोस" @@ -2706,19 +2704,19 @@ msgstr "टोकन बनाएं" msgid "modals.create-access-token.title" msgstr "एक्सेस टोकन उत्पन्न करें" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "वेबहुक बनाएं" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "वेबहुक बनाएं" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "पेलोड URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2764,11 +2762,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "बातचीत हटाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "क्या आप वाकई इस एनोटेशन को हटाना चाहते हैं?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "एनोटेशन हटाएँ" @@ -2816,11 +2814,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "फ़ॉन्ट हटाया जा रहा है" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "क्या आप वाकई इस पृष्ठ को हटाना चाहते हैं?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "पृष्ठ हटाएँ" @@ -2866,29 +2864,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "फ़ाइल हटाई जा रही है" msgstr[1] "फ़ाइलें हटाई जा रही हैं" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "टीम हटाएँ" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "क्या आप वाकई इस टीम को हटाना चाहते हैं? टीम से जुड़ी सभी परियोजनाएँ और " "फ़ाइलें स्थायी रूप से हटा दी जाएंगी।" -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "टीम हटाई जा रही है" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "सदस्य हटाएँ" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "क्या आप वाकई इस सदस्य को टीम से हटाना चाहते हैं?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "टीम सदस्य हटाएँ" @@ -2902,55 +2900,55 @@ msgstr[1] "" "उन फ़ाइलों में पहले से उपयोग किए गए एसेट्स वहीं रहेंगे (कोई डिज़ाइन टूटेगा " "नहीं)।" -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "वेबहुक हटाएँ" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "क्या आप वाकई इस वेबहुक को हटाना चाहते हैं?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "वेबहुक हटाया जा रहा है" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "वेबहुक संपादित करें" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "वेबहुक संपादित करें" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "निमंत्रण भेजना" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "ईमेल, अल्पविराम से अलग किए गए" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "कुछ ईमेल वर्तमान टीम के सदस्यों के हैं। उनकी निमंत्रण नहीं भेजी जाएगी।" -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "आप टीम के सदस्यों को आमंत्रित कर सकते हैं ताकि वे इस फ़ाइल और सभी टीम " "फ़ाइलों तक पहुंच सकें।" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "सदस्यों को टीम में आमंत्रित करें" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "चूंकि आप इस टीम के एकमात्र सदस्य हैं, टीम अपने परियोजनाओं और फ़ाइलों के साथ " "हटा दी जाएगी।" -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "क्या आप वाकई %s टीम छोड़ना चाहते हैं?" @@ -2978,15 +2976,15 @@ msgstr "पदोन्नति के लिए सदस्य चुने msgid "modals.leave-and-reassign.title" msgstr "छोड़ने से पहले" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "टीम छोड़ें" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "क्या आप सचमुच इस टीम को छोड़ना चाहते हैं?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "टीम छोड़ रहे हैं" @@ -3008,39 +3006,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "लाइब्रेरी स्थानांतरित करें" msgstr[1] "लाइब्रेरियाँ स्थानांतरित करें" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "झटका मात्रा" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "स्थानांतरण स्वामित्व" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "यदि आप स्वामित्व स्थानांतरित करते हैं, तो आपकी भूमिका एडमिन में बदल जाएगी, " "और इस टीम पर कुछ अनुमतियाँ आप खो देंगे। " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "आप इस टीम के वर्तमान स्वामी हैं। क्या आप वाकई %s को टीम का नया स्वामी बनाना " "चाहते हैं?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "नई टीम स्वामी" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "प्रकाशित" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "आपकी लाइब्रेरी खाली है। क्या आप वाकई इसे प्रकाशित करना चाहते हैं?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "खाली लाइब्रेरी प्रकाशित करें" @@ -3095,21 +3093,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "साझा लाइब्रेरी में घटकों को अद्यतन करें" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "अद्यतन" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "रद्द" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "आप साझा लाइब्रेरी में एक घटक को अपडेट करने वाले हैं। इससे अन्य फ़ाइलों पर " "असर पड़ सकता है जो इसका उपयोग करती हैं।" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "साझा लाइब्रेरी में एक घटक अपडेट करें" @@ -3221,11 +3219,11 @@ msgstr "रखरखाव विराम: हम 5 मिनट के भी msgid "notifications.by-code.upgrade-version" msgstr "एक नया संस्करण उपलब्ध है, कृपया पृष्ठ को रिफ्रेश करें" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "आमंत्रण सफलतापूर्वक भेज दिया गया" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "आमंत्रण लिंक कॉपी किया गया" @@ -3379,7 +3377,7 @@ msgstr "" "सभी को शामिल करना याद रखें — डेवलपर्स, डिज़ाइनर्स, मैनेजर्स... विविधता से " "शक्ति बढ़ती है 🙂" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "भूमिका के साथ आमंत्रित करें:" @@ -3597,193 +3595,193 @@ msgstr "पेनपॉट" msgid "profile.recovery.go-to-login" msgstr "लॉगइन पर जाएं" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "अलग करें" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "मिश्रित" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "रंग हटाओ" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "इस शैली का उपयोग करके आइटम चुनें" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "बुनियादी बातें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "डैशबोर्ड" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "दर्शक" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "कार्यस्थान" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "संतुलन" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "संपादन" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "सार्वभौमिक" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "सार्वभौमिक" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "मुख्य मेन्यू" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "परतें संशोधित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "मार्गदर्शन" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "मार्गदर्शन" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "मार्गदर्शन" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "पैनल्स" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "रास्ते" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "आकृतियाँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "टेक्स्ट" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "औजार" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "ज़ूम" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "ज़ूम" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "टिप्पणियाँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "नोड जोड़ें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "नीचे संरेखित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "मध्य में संरेखित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "क्षैतिज रूप से केंद्र संरेखित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "पूर्ण संरेखण करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "बाएँ संरेखित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "दाएँ संरेखित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "ऊपर संरेखित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "ऊर्ध्वाधर रूप से केंद्र संरेखित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "चयन से बोर्ड बनाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "बोल्ड टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "बूलियन अंतर" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "बूलियन बहिष्कृत" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "बूलियन चौराहा" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "बूलियन संघ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "पीछे भेजो" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "पीछे भेजें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "आगे लाओ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "सामने लाओ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "पूर्ववत साफ़ करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "कापी" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "लिंक कॉपी करें" @@ -3792,287 +3790,271 @@ msgstr "लिंक कॉपी करें" msgid "shortcuts.copy-props" msgstr "गुण कॉपी करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "नया निर्माण" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "काटना" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "ज़ूम आउट" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "मिटाना" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "नोड हटाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "घटक अलग करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "वक्र" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "अंडाकार" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "बोर्ड" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "पथ बनाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "पथ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "आयत" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "पाठ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "नकल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "रद्द करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "आकृतियाँ निर्यात करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "सभी को फिट करने के लिए ज़ूम करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "क्षैतिज फ्लिप" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "लंबवत पलटें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "फ़ॉन्ट का आकार घटाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "फ़ॉन्ट आकार बढ़ाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "ड्राफ्ट पर जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "साझा लाइब्रेरीज़ पर जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "खोज" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "समूह" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "क्षैतिज रूप से वितरित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "UI दिखाएँ/छिपाएँ" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "ज़ूम इन करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "चित्र डालें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "इटैलिक टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "नोड्स जोड़ें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "अक्षर अंतर घटाएँ" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "अक्षर अंतर बढ़ाएँ" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "रेखा की ऊंचाई घटाएँ" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "लाइन की ऊंचाई बढ़ाएँ" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "लाइन को टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "कोना बनाओ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "वक्र बनाओ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "मास्क" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "नोड्स को जोड़ें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "हिलाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "तेज़ी से नीचे ले जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "तेज़ी से बाएँ ले जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "तेज़ी से दाएँ ले जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "तेज़ी से ऊपर ले जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "नोड को स्थानांतरित करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "नीचे ले जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "बाएँ ले जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "दाएँ ले जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "ऊपर ले जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "अगला बोर्ड" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "कोई शॉर्टकट नहीं मिला" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "अपारदर्शिता 100% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "अपारदर्शिता 10% करे" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "अपारदर्शिता 20% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "अपारदर्शिता 30% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "अपारदर्शिता 40% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "अपारदर्शिता 50% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "अपारदर्शिता 60% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "अपारदर्शिता 70% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "अपारदर्शिता 80% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "अपारदर्शिता 90% करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "रंग चयनकर्ता" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "दर्शक टिप्पणी अनुभाग पर जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "डैशबोर्ड पर जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "दर्शक निरीक्षण अनुभाग पर जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "दर्शक इंटरैक्शन अनुभाग पर जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "दर्शक इंटरैक्शन अनुभाग में जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "वर्कस्पेस पर जाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " अथवा " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "चिपकाएँ" @@ -4086,191 +4068,191 @@ msgstr "गुण चिपकाएँ" msgid "shortcuts.plugins" msgstr "प्लगइन्स प्रबंधक" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "पिछला बोर्ड" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "फिर से करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "नाम बदलें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "ज़ूम रीसेट करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "आकार बदलना" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "शॉर्टकट खोजें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "सभी चुनें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "अगली परत चुनें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "मुख्य परत चुनें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "पिछली परत का चयन करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "अलग नोड्स" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "पिक्सेल ग्रिड दिखाएँ / छिपाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "शॉर्टकट दिखाएँ / छुपाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "नोड्स से चिपकाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "पिक्सेल ग्रिड से चिपकाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "संपादन शुरू करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "मापन शुरू करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "मापन बंद करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "थंबनेल सेट करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "कीबोर्ड शॉर्टकट्स" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "डायनामिक अलाइनमेंट टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "एसेट्स टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "रंग पैलेट टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "फ़ोकस मोड टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "संपूर्ण स्क्रीन टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "गाइड दिखाएँ/छिपाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "इतिहास टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "लेयर्स टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "फ्लेक्स लेआउट जोड़ें / हटाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "ग्रिड लेआउट जोड़ें/हटाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "ताला लगाएं / ताला खोलें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "अनुपात लॉक करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "रूलर दिखाएँ / छिपाएँ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "गाइड्स से चिपकाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "रूलर गाइड्स से चिपकाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "टेक्स्ट पैलेट चालू/बंद करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "थीम बदलें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "दिखाएं / छिपाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "ज़ूम शैली टॉगल करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "रेखांकन चालू/बंद करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "पूर्ववत" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "असमूहीकृत" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "मास्क हटाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "ऊर्ध्वाधर समान वितरण करें" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "ज़ूम लेंस घटाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "ज़ूम लेंस बढ़ाएं" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "चयनित पर ज़ूम करें" @@ -4320,7 +4302,7 @@ msgstr "आपकी सदस्यता:" msgid "subscription.dashboard.team-plan" msgstr "टीम योजना" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "शक्तिप्रापक" @@ -4442,7 +4424,7 @@ msgstr "असीमित (परीक्षण)" msgid "subscription.settings.unlimited.bill" msgstr "मासिक बिल की सीमा" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "अपनी योजना को सशक्त बनाएं" @@ -4498,19 +4480,19 @@ msgstr "पासवर्ड - पेनपॉट" msgid "title.settings.profile" msgstr "प्रोफ़ाइल - पेनपॉट" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "निमंत्रण - %s - पेनपॉट" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "सदस्य - %s - पेनपॉट" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "सेटिंग्स - %s - पेनपॉट" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "वेबहुक - %s - पेनपोट" @@ -4582,43 +4564,43 @@ msgstr "क्लिक पर इंटरैक्शन दिखाएं" msgid "viewer.header.sitemap" msgstr "साइटमैप" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "पिछली डिलीवरी सफल रही।" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "क्षैतिज केंद्र पर संरेखित करें (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "क्षैतिज अंतराल वितरित करें (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "बाएँ संरेखित करें (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "दाएँ संरेखित करें (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "नीचे संरेखित करें (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "ऊर्ध्वाधर केंद्र पर संरेखित करें (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "ऊर्ध्वाधर अंतराल वितरित करें (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "ऊपर संरेखित करें (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "लाइब्रेरी जोड़ें" @@ -4627,19 +4609,19 @@ msgstr "लाइब्रेरी जोड़ें" msgid "workspace.assets.assets" msgstr "एसेट्स" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "सभी एसेट्स" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "रंगों" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "रंग जोड़ें" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "घटकों" @@ -4647,23 +4629,23 @@ msgstr "घटकों" msgid "workspace.assets.components.add-component" msgstr "घटक जोड़ें" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s प्रकार" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "एक समूह बनाएं" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "आपके आइटम अपने आप “ग्रुप नाम / आइटम नाम” के रूप में नामित किए जाएंगे" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "मिटाना" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "नकल करें" @@ -4671,11 +4653,11 @@ msgstr "नकल करें" msgid "workspace.assets.duplicate-main" msgstr "मुख्य की नकल करें" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "संपादन" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "फिल्टर" @@ -4684,27 +4666,27 @@ msgstr "फिल्टर" msgid "workspace.assets.graphics" msgstr "ग्राफ़िक्स" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "जाल दृश्य" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "समूह" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "समूह नाम" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "सूची दृश्य" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "स्थानीय लाइब्रेरी" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "लाइब्रेरी मैनेज करें" @@ -4716,15 +4698,15 @@ msgstr "कोई एसेट्स नहीं मिले" msgid "workspace.assets.open-library" msgstr "लाइब्रेरी फ़ाइल खोलें" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "नाम बदलें" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "समूह का नाम बदलें" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "एसेट्स खोजें" @@ -4740,21 +4722,21 @@ msgstr[1] "%s आइटम चुने गए हैं" msgid "workspace.assets.shared-library" msgstr "साझा लाइब्रेरी" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 घटक" msgstr[1] "%s घटकों" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "क्रमबद्ध" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "टाइपोग्राफ़ी" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "टाइपोग्राफी जोड़ें" @@ -4779,7 +4761,7 @@ msgstr "पत्र अंतराल" msgid "workspace.assets.typography.line-height" msgstr "रेखा ऊँचाई" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4791,59 +4773,59 @@ msgstr "पाठ शैलियाँ" msgid "workspace.assets.typography.text-transform" msgstr "पाठ रूपांतरण" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "असमूहीकृत" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "क्षेत्र बनाएं" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "बोर्ड बनाएं" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "कोष्ठक जोड़ें" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "दाईं ओर 1 कॉलम जोड़ें" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "बाईं ओर 1 कॉलम जोड़ें" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "कॉलम हटाएँ" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "स्तंभ और आकृतियाँ हटाएँ" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "डुप्लिकेट कॉलम" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "नीचे 1 पंक्ति जोड़ें" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "ऊपर 1 पंक्ति जोड़ें" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "पंक्ति हटाएँ" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "पंक्ति और आकृतियाँ हटाएँ" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "डुप्लिकेट पंक्ति" @@ -4851,7 +4833,7 @@ msgstr "डुप्लिकेट पंक्ति" msgid "workspace.focus.focus-mode" msgstr "फोकस मोड" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "ध्यान हटाएँ" @@ -4871,11 +4853,11 @@ msgstr "रैखिक ग्रेडिएंट" msgid "workspace.gradients.radial" msgstr "वृत्तीय ग्रेडिएंट" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "गतिशील संरेखण अक्षम करें" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "अनुपातिक स्केल अक्षम करें" @@ -4884,23 +4866,23 @@ msgstr "अनुपातिक स्केल अक्षम करें" msgid "workspace.header.menu.disable-scale-text" msgstr "स्केल टेक्स्ट अक्षम करें" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "मार्गदर्शकों से स्नैप बंद करें" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "पिक्सेल से स्नैप अक्षम करें" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "रूलर गाइड से स्नैप अक्षम करें" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "डायनामिक संरेखण सक्षम करें" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "आनुपातिक पैमाना सक्षम करें" @@ -4909,51 +4891,51 @@ msgstr "आनुपातिक पैमाना सक्षम करें msgid "workspace.header.menu.enable-scale-text" msgstr "स्केल टेक्स्ट सक्षम करें" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "गाइड्स से स्नैप" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "पिक्सेल पर स्नैप सक्षम करें" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "रूलर गाइड पर स्नैप करें" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "बोर्ड के नाम छिपाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "गाइड छिपाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "रंग पैलेट छिपाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "पिक्सेल ग्रिड छिपाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "रूलर छुपाएं" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "फ़ॉन्ट पैलेट छुपाएं" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "संपादन" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "फ़ाइल" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "सहायता और जानकारी" @@ -4962,63 +4944,63 @@ msgstr "सहायता और जानकारी" msgid "workspace.header.menu.option.power-up" msgstr "अपनी योजना को सशक्त बनाएं" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "प्राथमिकताएँ" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "देखना" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "फिर से करें" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "सबका चयन करें" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "बोर्डों के नाम दिखाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "गाइड दिखाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "रंग पैलेट दिखाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "पिक्सेल ग्रिड दिखाएँ" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "रूलर दिखाएं" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "फ़ॉन्ट पैलेट दिखाएं" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "डार्क थीम पर स्विच करें" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "लाइट थीम पर स्विच करें" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "सिस्टम थीम पर स्विच करें" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "पूर्ववत" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "रीसेट करें" @@ -5034,7 +5016,7 @@ msgstr "सहेजा गया" msgid "workspace.header.saving" msgstr "सहेजा जा रहा है" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "शेयर" @@ -5043,11 +5025,11 @@ msgstr "शेयर" msgid "workspace.header.unsaved" msgstr "सहेजे न गए परिवर्तन" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "दृश्य मोड (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "ज़ूम" @@ -5059,7 +5041,7 @@ msgstr "भरें - भरने के लिए पैमाना" msgid "workspace.header.zoom-fit" msgstr "फिट - फिट करने के लिए स्केल डाउन करें" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "सभी को फिट करने के लिए ज़ूम करें" @@ -5067,43 +5049,43 @@ msgstr "सभी को फिट करने के लिए ज़ूम msgid "workspace.header.zoom-full-screen" msgstr "पूर्ण स्क्रीन" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "चयनित पर ज़ूम करें" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "ग्रिड संपादित करें" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "प्रस्थान" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "नीचे पैडिंग" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "4 ओर के पैडिंग विकल्प दिखाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "क्षैतिज पैडिंग" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "बाएँ पैडिंग" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "दाएँ पैडिंग" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "ऊपर पैडिंग" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "लंबवत पैडिंग" @@ -5119,7 +5101,7 @@ msgstr "पूर्ण" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "स्थान खोजें" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "ग्रिड लेआउट का स्थान खोजें" @@ -5128,10 +5110,6 @@ msgstr "ग्रिड लेआउट का स्थान खोजें" msgid "workspace.libraries.add" msgstr "जोड़ना" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s रंग" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "आपकी लाइब्रेरी में अभी कोई रंग शैली नहीं है" @@ -5158,43 +5136,35 @@ msgstr "हाल के रंग" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB पूरक" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "रंग शैली सहेजें" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s घटक" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "या इनमें से कुछ को जोड़कर देखें:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "आपकी टीम में कोई साझा लाइब्रेरी नहीं है, आप खोज सकते हैं" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "यहाँ कुछ टेम्पलेट्स हैं" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "फ़ाइल लाइब्रेरी" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s ग्राफ़िक्स" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "इस फ़ाइल में लाइब्रेरीज़" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "लाइब्रेरीज़" @@ -5203,11 +5173,11 @@ msgstr "लाइब्रेरीज़" msgid "workspace.libraries.library" msgstr "लाइब्रेरी" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "लाइब्रेरी अपडेट" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "लोड हो रहा है…" @@ -5216,51 +5186,47 @@ msgstr "लोड हो रहा है…" msgid "workspace.libraries.more-templates" msgstr "आप ढूंढ सकते हैं " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "ऐसी कोई साझा लाइब्रेरी नहीं है जिसे अद्यतन करने की आवश्यकता हो" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "“%s“ के लिए कोई मिलान नहीं मिला" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "साझा लाइब्रेरी खोजें" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "साझा लाइब्रेरीज़" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "लाइब्रेरी कनेक्ट करें" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "एकाधिक टाइपोग्राफी" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "सभी टाइपोग्राफ़ी अनलिंक करें" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s टाइपोग्राफी" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "लाइब्रेरी डिस्कनेक्ट करें" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "अद्यतन" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "सभी परिवर्तन देखें" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "अपडेट" @@ -5268,31 +5234,31 @@ msgstr "अपडेट" msgid "workspace.notification-pill.detail" msgstr "विवरण" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "इंटरैक्शन जोड़ने के लिए + बटन पर क्लिक करें।" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "धुंधलापन जोड़ें" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "धुंधलापन हटाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "धुंधला" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "समूह धुंधला" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "चयन धुंधला" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "धुंधलापन टॉगल करें" @@ -5300,71 +5266,71 @@ msgstr "धुंधलापन टॉगल करें" msgid "workspace.options.canvas-background" msgstr "कैनवास पृष्ठभूमि" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "क्लिप सामग्री" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "घटक" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "व्याख्या" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "कापी" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "एक व्याख्या बनाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "व्याख्या संपादित करें" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "मुख्य" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "स्वैप घटक" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "इस लाइब्रेरी में अभी तक कोई संपत्ति नहीं है" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "अनलिंक" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "अमान्य वेरिएंट का पता लगाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "कुछ वेरिएंट के नाम अमान्य हैं" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "इन वेरिएंट के नाम अमान्य हैं।" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "इस संस्करण का नाम अमान्य है।" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "इनमें से कुछ रूपों के नाम अमान्य हैं।" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[संपत्ति]=[मूल्य], [संपत्ति]=[मूल्य]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "निम्नलिखित संरचना का उपयोग करने का प्रयास करें:" @@ -5408,7 +5374,7 @@ msgstr "शीर्ष" msgid "workspace.options.constraints.topbottom" msgstr "शीर्ष और तल" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "डिज़ाइन" @@ -5421,21 +5387,21 @@ msgstr "निर्यात" msgid "workspace.options.export-multiple" msgstr "निर्यात चयन" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "1 तत्व निर्यात करें" msgstr[1] "%s तत्व निर्यात करें" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "निर्यात जोड़ें" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "निर्यात हटाएँ" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "प्रत्यय" @@ -5443,7 +5409,7 @@ msgstr "प्रत्यय" msgid "workspace.options.exporting-complete" msgstr "निर्यात पूर्ण" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "निर्यात हो रहा है…" @@ -5455,27 +5421,27 @@ msgstr "निर्यात विफल" msgid "workspace.options.exporting-object-slow" msgstr "निर्यात अप्रत्याशित रूप से धीमा" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "भरना" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "भरण जोड़ें" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "भराव हटाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "सामग्री को फिट करने के लिए बोर्ड का आकार बदलें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "प्रवाह प्रारंभ जोड़ें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "प्रवाह" @@ -5484,19 +5450,19 @@ msgstr "प्रवाह" msgid "workspace.options.flows.flow-start" msgstr "प्रवाह प्रारंभ" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "प्रवाह प्रारंभ हो जाता है" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "प्रवाह हटाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "स्वत:" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "कॉलम" @@ -5505,7 +5471,7 @@ msgstr "कॉलम" msgid "workspace.options.grid.grid-title" msgstr "ग्रिड" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "रंग" @@ -5514,15 +5480,15 @@ msgstr "रंग" msgid "workspace.options.grid.params.columns" msgstr "कॉलम" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "मध्य अंतराल" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "ऊंचाई" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "मार्जिन" @@ -5531,7 +5497,7 @@ msgstr "मार्जिन" msgid "workspace.options.grid.params.rows" msgstr "पंक्तियाँ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "डिफ़ॉल्ट के रूप में सेट करें" @@ -5545,159 +5511,159 @@ msgstr "आकार" msgid "workspace.options.grid.params.type" msgstr "प्रकार" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "तल" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "केंद्र" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "बाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "दाहिने" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "खींचना" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "शीर्ष" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "डिफ़ॉल्ट उपयोग करें" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "चौड़ाई" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "पंक्तियाँ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "चौकोर" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "समूह भरण" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "समूह स्ट्रोक" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "मार्गदर्शक जोड़ें" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "मार्गदर्शक हटाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "मार्गदर्शक" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "मार्गदर्शक टॉगल करें" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "ऊंचाई" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "निरीक्षण करें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "क्रिया" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "विलंब के बाद" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "एनिमेशन" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "विघटन करना" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "कोई नहीं" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "धकेलना" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "स्लाइड" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "स्वत:" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "पृष्ठभूमि ओवरले जोड़ें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "बाहर क्लिक करने पर बंद" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "ओवरले बंद करें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "ओवरले बंद करें: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "देरी" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "गंतव्य" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "अवधि" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "सरलीकरण" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "सरलता" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "धीमे से शुरुआत" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "धीमे-धीमे शुरू और खत्म होना" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "धीरे-धीरे समाप्त होना" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "रेखीय" @@ -5706,47 +5672,47 @@ msgstr "रेखीय" msgid "workspace.options.interaction-in" msgstr "में" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "माउस प्रवेश" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "माउस बाहर" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "नेविगेशन करना" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "यहाँ जाएँ: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(सेट नहीं)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "ऑफसेट प्रभाव" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "क्लिक पर" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "ओवरले खोलें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "खुला ओवरले: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "URL खोलें" @@ -5755,87 +5721,87 @@ msgstr "URL खोलें" msgid "workspace.options.interaction-out" msgstr "बाहर" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "नीचे केंद्र" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "नीचे बाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "नीचे दाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "केंद्र" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "मैनुअल" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "शीर्ष केंद्र" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "शीर्ष बाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "ऊपर दाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "स्थान" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "स्क्रॉल स्थिति सुरक्षित रखें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "पिछली स्क्रीन" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "के सापेक्ष" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "स्व" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "ओवरले टॉगल करें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "ओवरले टॉगल करें: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "ट्रिगर" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "माउस कर्सर hover करते समय" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "दबाते समय" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "इंटरैक्शन" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "इंटरैक्शन जोड़ें" @@ -5844,67 +5810,67 @@ msgstr "इंटरैक्शन जोड़ें" msgid "workspace.options.interactions.remove-interaction" msgstr "इंटरैक्शन हटाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "रंग" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "रंग जलना" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "रंग डॉज" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "अंधेरा करना" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "भेद" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "बहिष्करण" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "हार्ड लाइट" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Hue" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "हल्का" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "प्रकाशीयता" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "गुणा करना" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "सामान्य" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "ओवरले" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "संतृप्ति" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "स्क्रीन" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "कोमल प्रकाश" @@ -5923,7 +5889,7 @@ msgstr "समूह परतें" msgid "workspace.options.layer-options.title.multiple" msgstr "चयनित परतें" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "परत दृश्यता टॉगल करें" @@ -5932,19 +5898,19 @@ msgstr "परत दृश्यता टॉगल करें" msgid "workspace.options.layout-item.advanced-ops" msgstr "उन्नत विकल्प" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "अधिकतम.ऊंचाई" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "अधिकतम.चौड़ाई" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "न्यूनतम.ऊंचाई" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "न्यूनतम.चौड़ाई" @@ -6058,15 +6024,15 @@ msgstr "बीच का स्थान" msgid "workspace.options.layout.top" msgstr "शीर्ष" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "और अधिक रंग" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "और लाइब्रेरी रंग" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "ओपेसिटी" @@ -6075,35 +6041,35 @@ msgstr "ओपेसिटी" msgid "workspace.options.position" msgstr "स्थान" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "प्रोटोटाइप" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "त्रिज्या" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "नीचे बाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "नीचे दाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "शीर्ष बाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "ऊपर दाएं" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "स्वतंत्र त्रिज्या को संक्षिप्त करें" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "स्वतंत्र त्रिज्या दिखाएँ" @@ -6115,7 +6081,7 @@ msgstr "हाल ही का" msgid "workspace.options.retry" msgstr "पुन: प्रयास करें" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "चक्कर" @@ -6123,31 +6089,31 @@ msgstr "चक्कर" msgid "workspace.options.search-font" msgstr "फ़ॉन्ट खोजें" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "किसी कनेक्शन को दूसरे बोर्ड तक ले जाने के लिए एक शेप, बोर्ड या ग्रुप चुनें।" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "चयनित रंग" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "चयन भरें" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "चयन स्ट्रोक" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "छाया जोड़ें" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "धुंधला" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "छाया रंग" @@ -6159,63 +6125,64 @@ msgstr "परछाई डालना" msgid "workspace.options.shadow-options.inner-shadow" msgstr "भीतरी छाया" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "छाया हटाओ" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "फैलाना" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "छाया" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "समूह छाया" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "चयन छाया" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "छाया टॉगल करें" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "निर्यात में दिखाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "दृश्य मोड में दिखाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "आकार" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "आकार प्रीसेट" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "लॉक अनुपात" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "अनलॉक अनुपात" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "स्ट्रोक" @@ -6224,7 +6191,7 @@ msgstr "स्ट्रोक" msgid "workspace.options.stroke-cap.circle-marker" msgstr "चक्र मार्कर" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "चक्र" @@ -6233,7 +6200,7 @@ msgstr "चक्र" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "हीरा मार्कर" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "हीरा" @@ -6242,19 +6209,19 @@ msgstr "हीरा" msgid "workspace.options.stroke-cap.line-arrow" msgstr "रेखा तीर" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "तीर" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "कोई नहीं" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "गोल" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "चौकोर" @@ -6263,7 +6230,7 @@ msgstr "चौकोर" msgid "workspace.options.stroke-cap.square-marker" msgstr "चौकोर मार्कर" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "आयत" @@ -6272,83 +6239,83 @@ msgstr "आयत" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "त्रिकोण तीर" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "त्रिकोण" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "स्ट्रोक का रंग" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "स्ट्रोक की चौड़ाई" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "स्ट्रोक रंग जोड़ें" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "केंद्र" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "टूटी रेखा" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "बिंदुदार" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "अंदर" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "मिश्रित" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "बाहर की ओर" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "स्ट्रोक हटाओ" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "ठोस" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "नीचे संरेखित करें" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "मध्य संरेखित करें" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "ऊपर संरेखित करें" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "ऑटो ऊंचाई" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "ऑटो चौड़ाई" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "निश्चित" @@ -6370,35 +6337,35 @@ msgstr "निम्नाक्षर" msgid "workspace.options.text-options.none" msgstr "कोई नहीं" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "स्ट्राइकथ्रू (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "केंद्र संरेखित करें" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "जस्टिफ़ाई" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "बाएँ संरेखित करें" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "दाएँ संरेखित करें" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "पाठ" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "समूह पाठ" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "चयन पाठ" @@ -6407,7 +6374,7 @@ msgstr "चयन पाठ" msgid "workspace.options.text-options.titlecase" msgstr "टाइटल केस" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "अंडरलाइन (%s)" @@ -6416,19 +6383,19 @@ msgstr "अंडरलाइन (%s)" msgid "workspace.options.text-options.uppercase" msgstr "बड़ेअक्षर" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "प्रोटोटाइप व्यू चलाने के लिए हेडर में प्ले बटन का उपयोग करें।" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "चौड़ाई" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X अक्ष" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y अक्ष" @@ -6472,80 +6439,80 @@ msgstr "अलग नोड्स (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "स्नैप नोड्स (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "खुला" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "खोजें [अधिक प्लगइन्स](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "अभी तक कोई प्लगइन्स इंस्टॉल नहीं है" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "प्लगइन मैनिफेस्ट गलत है।" -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "इस प्लगइन का उपयोग करने के लिए आपको एक संपादक होना आवश्यक है" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "प्लगइन मौजूद नहीं है या URL सही नहीं है।" -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "इंस्टॉल" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "इंस्टॉल किए गए प्लगइन्स" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "प्लगइन्स मैनेजर" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "प्लग-इन" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "इस प्लगइन को अद्यतन करें" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "आपके द्वारा पिछली बार खोलने के बाद से इस प्लगइन में बदलाव किए गए हैं। अब यह " "निम्न तक पहुँच प्राप्त करना चाहता है:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "फ़ाइल डाउनलोड प्रारंभ करें।" -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "अपनी टिप्पणियाँ और उत्तर पढ़ें।" -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "आपकी टिप्पणियाँ पढ़ें और उनमें संशोधन करें, और आपके नाम से उत्तर दें।" -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "उन फ़ाइलों की सामग्री पढ़ें जिन तक उपयोगकर्ताओं को पहुँच प्राप्त है।" -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "" "उन फ़ाइलों की सामग्री पढ़ें और संशोधित करें जिन तक उपयोगकर्ताओं को पहुँच " "प्राप्त है।" -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "कृपया ध्यान दें कि यह प्लगइन किसी बाहरी पक्ष द्वारा बनाया गया है, इसलिए " @@ -6553,31 +6520,31 @@ msgstr "" "आपकी डेटा गोपनीयता और सुरक्षा हमारे लिए महत्वपूर्ण है। यदि आपको कोई चिंता " "हो, तो कृपया सहायता केंद्र से संपर्क करें।" -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "आपकी लाइब्रेरी और संसाधनों को पढ़ें।" -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "आपकी लाइब्रेरी और संसाधनों को पढ़ें और संशोधित करें।" -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "'%s' प्लगइन को निम्न तक पहुँच चाहिए:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "वर्तमान उपयोगकर्ता की प्रोफ़ाइल जानकारी पढ़ें।" -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "प्लगइन्स सूची" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "प्लगइन हटाएँ" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "एक प्लगइन URLलिखें" @@ -6585,26 +6552,26 @@ msgstr "एक प्लगइन URLलिखें" msgid "workspace.plugins.success" msgstr "प्लगइन सही ढंग से लोड हो गया।" -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "प्लग-इन" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "अभी नहीं" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "देखना चाहेंगे? यह आपकी वर्तमान टीम के लिए एक नए ड्राफ्ट में खुलेगा। (यदि " "नहीं, तो आप इसे किसी भी फ़ाइल के इंस्टॉल किए गए प्लगइन्स में हमेशा पा सकते " "हैं।)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "%s' प्लगइन आपके उपयोगकर्ता के लिए इंस्टॉल हो चुका है!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "प्लगइन आज़माएँ" @@ -6616,15 +6583,15 @@ msgstr "फ्लेक्स लेआउट जोड़ें" msgid "workspace.shape.menu.add-grid" msgstr "ग्रिड लेआउट जोड़ें" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "लेआउट जोड़ें" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "वैरिएंट बनाएं" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "नई संपत्ति जोड़ें" @@ -6668,7 +6635,7 @@ msgstr "SVGG के रूप में कॉपी करें" msgid "workspace.shape.menu.copy-text" msgstr "पाठ के रूप में कॉपी करें" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "एनोटेशन बनाएं" @@ -6676,11 +6643,11 @@ msgstr "एनोटेशन बनाएं" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "बोर्ड के लिए चयन" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "घटक बनाएँ" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "अनेक घटक बनाएँ" @@ -6688,7 +6655,7 @@ msgstr "अनेक घटक बनाएँ" msgid "workspace.shape.menu.cut" msgstr "काटना" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "मिटाना" @@ -6696,15 +6663,15 @@ msgstr "मिटाना" msgid "workspace.shape.menu.delete-flow-start" msgstr "प्रवाह प्रारंभ हटाएँ" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "उदाहरण अलग करें" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "उदाहरणों को अलग करें" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "भेद" @@ -6716,11 +6683,11 @@ msgstr "नकल करें" msgid "workspace.shape.menu.edit" msgstr "संपादन" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "बहिष्कृत" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "समतल" @@ -6753,19 +6720,19 @@ msgstr "मुख्य घटक फ़ाइल पर जाएँ" msgid "workspace.shape.menu.group" msgstr "समूह" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "छुपाएँ" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "UI दिखाएँ / छिपाएँ" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "चौराहा" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "ताला" @@ -6773,7 +6740,7 @@ msgstr "ताला" msgid "workspace.shape.menu.mask" msgstr "मास्क" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "चिपकाएँ" @@ -6793,11 +6760,11 @@ msgstr "फ्लेक्स लेआउट हटाएँ" msgid "workspace.shape.menu.remove-grid" msgstr "ग्रिड लेआउट हटाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "लेआउट हटाएँ" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "संपत्ति हटाएं" @@ -6805,15 +6772,15 @@ msgstr "संपत्ति हटाएं" msgid "workspace.shape.menu.rename" msgstr "नाम बदलें" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "ओवरराइड रीसेट करें" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "मुख्य घटक पुनर्स्थापित करें" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "वैरिएंट पुनर्स्थापित करें" @@ -6821,15 +6788,15 @@ msgstr "वैरिएंट पुनर्स्थापित करें" msgid "workspace.shape.menu.select-layer" msgstr "परत चुनें" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "दिखाएँ" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "संपत्ति पैनल में दिखाएँ" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "मुख्य घटक दिखाएं" @@ -6842,6 +6809,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "थंबनेल के रूप में सेट करें" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "पथ में परिवर्तन" @@ -6849,11 +6817,11 @@ msgstr "पथ में परिवर्तन" msgid "workspace.shape.menu.ungroup" msgstr "असमूहीकृत" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "संघ" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "अनलॉक" @@ -6866,7 +6834,7 @@ msgstr "मास्क हटाएं" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "मुख्य घटकों को अद्यतन करें" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "मुख्य घटक अद्यतन करें" @@ -6878,11 +6846,11 @@ msgstr "साइडबार को संक्षिप्त करें" msgid "workspace.sidebar.expand" msgstr "साइडबार का विस्तार करें" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "इतिहास" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "परतें" @@ -6922,11 +6890,11 @@ msgstr "टेक्स्ट" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "आयातित SVG गुण" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "पृष्ठों" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "पृष्ठ जोड़ें" @@ -6943,27 +6911,27 @@ msgstr "%s सक्रिय थीम" msgid "workspace.tokens.add set" msgstr "सेट जोड़ें" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "नई थीम जोड़ें" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "इस समूह में सेट जोड़ें" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "टोकन जोड़ें: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "के लिए आवेदन किया" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "अक्ष" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "थीम सूची पर वापस जाएँ" @@ -6993,15 +6961,15 @@ msgstr "रंग" msgid "workspace.tokens.create-new-theme" msgstr "अभी अपनी पहली थीम बनाएं।" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "एक बनाएं।" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "नया %s टोकन बनाएं" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "टोकन हटाएँ" @@ -7009,19 +6977,19 @@ msgstr "टोकन हटाएँ" msgid "workspace.tokens.delete-theme-title" msgstr "थीम हटाएँ" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "डुप्लीकेट टोकन" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "कापी" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "टोकन संपादित करें" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "थीम संपादित करें" @@ -7029,15 +6997,11 @@ msgstr "थीम संपादित करें" msgid "workspace.tokens.edit-themes" msgstr "थीम्स संपादित करें" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "टोकन संपादित करें" - #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "टोकन मान रिक्त नहीं हो सकता" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "%s टोकन नाम दर्ज करें" @@ -7069,7 +7033,7 @@ msgstr "पूर्व दर्शन:" msgid "workspace.tokens.export.single-file" msgstr "एक फाइल" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "अंतराल" @@ -7091,15 +7055,15 @@ msgstr "टोकन सेट ग्रुपिंग अभी समर् msgid "workspace.tokens.import-error" msgstr "आयात त्रुटि:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "एकाधिक फ़ाइलों में, फ़ाइल नाम/पथ सेट नाम हैं।" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "एकल JSON फ़ाइल में, प्रथम-स्तरीय कुंजियाँ टोकन सेट के नाम होने चाहिएं।" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "टोकन आयात करें" @@ -7108,7 +7072,7 @@ msgstr "टोकन आयात करें" msgid "workspace.tokens.import-tooltip" msgstr "JSON फ़ाइल आयात करने से आपके सभी वर्तमान टोकन, सेट और थीम ओवरराइट हो जाएँगे" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "टोकन आयात करने से आपके सभी वर्तमान टोकन, सेट और थीम ओवरराइट हो जाएँगे।" @@ -7161,15 +7125,15 @@ msgstr "थिम" msgid "workspace.tokens.label.theme-placeholder" msgstr "एक थीम जोड़ें (अर्थात् प्रकाश)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "मार्जिन्स" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "अधिकतम. आकार" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "न्यूनतम. आकार" @@ -7185,7 +7149,7 @@ msgstr "कोई सक्रिय सेट नहीं" msgid "workspace.tokens.no-active-theme" msgstr "कोई थीम सक्रिय नहीं" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "सेट्स को सक्रिय या निष्क्रिय करने के लिए आपको एक संपादक होना आवश्यक है" @@ -7193,11 +7157,11 @@ msgstr "सेट्स को सक्रिय या निष्क्र msgid "workspace.tokens.no-permission-themes" msgstr "थीम्स का उपयोग करने के लिए आपको एक संपादक होना आवश्यक है" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "अभी तक कोई सेट परिभाषित नहीं किया गया है। पहले एक सेट बनाएं।" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "अभी तक कोई सेट नहीं है।" @@ -7221,12 +7185,12 @@ msgstr "अमान्य टोकन मान. हल किया गया msgid "workspace.tokens.opacity-range" msgstr "अपारदर्शिता 0 और 100% या 0 और 1 (जैसे 50% या 0.5) के बीच होनी चाहिए।" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "मूल मान: %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "पैडिंग्स" @@ -7234,7 +7198,7 @@ msgstr "पैडिंग्स" msgid "workspace.tokens.radius" msgstr "त्रिज्या" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "संदर्भ मान्य नहीं है या किसी सक्रिय सेट में नहीं है" @@ -7243,7 +7207,7 @@ msgstr "संदर्भ मान्य नहीं है या किस msgid "workspace.tokens.reference-error" msgstr "संदर्भ त्रुटियाँ: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "समाधानित मान: %s" @@ -7252,7 +7216,7 @@ msgstr "समाधानित मान: %s" msgid "workspace.tokens.save-theme" msgstr "थीम सहेजें" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "सेट का चयन करें।" @@ -7260,11 +7224,11 @@ msgstr "सेट का चयन करें।" msgid "workspace.tokens.self-reference" msgstr "टोकन में स्व-संदर्भ होता है" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "नाम दर्ज करें (समूहों के लिए '/' का प्रयोग करें)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "" "इस थीम विकल्प के हिस्से के रूप में किन टोकन सेट्स का उपयोग किया जाना चाहिए, " @@ -7289,7 +7253,7 @@ msgstr "" msgid "workspace.tokens.settings" msgstr "टोकन सेटिंग्स" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "आकार" @@ -7311,16 +7275,16 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "थीम्स सूची" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "वर्णन" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "नाम" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " एक मान्य टोकन नाम नहीं है।\n" @@ -7332,11 +7296,11 @@ msgstr "" msgid "workspace.tokens.token-not-resolved" msgstr "नाम: '%s' वाला संदर्भ टोकन हल नहीं किया जा सका" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "मान" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "{alias} के साथ एक मान या उपनाम दर्ज करें" @@ -7344,7 +7308,7 @@ msgstr "{alias} के साथ एक मान या उपनाम दर msgid "workspace.tokens.tokens-section-title" msgstr "टोकन - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "औजार" @@ -7352,7 +7316,7 @@ msgstr "औजार" msgid "workspace.tokens.unknown-token-type-section" msgstr "टाइप '%s' समर्थित नहीं है (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "मान मान्य नहीं है" @@ -7360,11 +7324,11 @@ msgstr "मान मान्य नहीं है" msgid "workspace.tokens.value-with-units" msgstr "अमान्य मान: इकाइयाँ अनुमति नहीं हैं।" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "इस टोकन का नाम बदलने से इसके पुराने नाम के किसी भी संदर्भ टूट जाएंगे।" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "एसेट्स" @@ -7372,7 +7336,7 @@ msgstr "एसेट्स" msgid "workspace.toolbar.color-palette" msgstr "रंग पैलेट (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "टिप्पणियाँ (%s)" @@ -7583,19 +7547,19 @@ msgstr "% से अधिक ऑपरेशन" msgid "workspace.undo.title" msgstr "इतिहास" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "नकार देना" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "और जानकारी" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "साझा लाइब्रेरीज़ में अपडेट्स हैं" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "अद्यतन" @@ -7655,11 +7619,11 @@ msgstr "क्या आप इस संस्करण को पुनर् msgid "workspace.versions.snapshot-menu" msgstr "स्नैपशॉट मेनू खोलें" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "क्रियाएँ" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "इतिहास" diff --git a/frontend/translations/hr.po b/frontend/translations/hr.po index 16bf381dc9..0bd4774935 100644 --- a/frontend/translations/hr.po +++ b/frontend/translations/hr.po @@ -1,16 +1,17 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: al0cam \n" -"Language-Team: Croatian " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Zvonimir Juranko \n" +"Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.13-dev\n" +"Plural-Forms: nplurals=3; plural=" +"(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? " +"1 : 2);\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -174,7 +175,7 @@ msgstr "Open Source rješenje za dizajn i izradu prototipova." msgid "auth.terms-and-privacy-agreement" msgstr "Slažem se s [uvjetima usluge](%s) i [pravilima privatnosti](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Uvjeti pružanja usluge" @@ -201,7 +202,7 @@ msgstr "...branding, ilustracije, marketinški dijelovi, itd." msgid "comments.mentions.not-found" msgstr "Nisu pronađene osobe za @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Objavi" @@ -274,7 +275,7 @@ msgstr "Podijeli prototip" msgid "common.share-link.view-all" msgstr "Označi sve" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Poništi objavu" @@ -397,7 +398,7 @@ msgstr "Token nema datum isteka" msgid "dashboard.add-file" msgstr "Dodaj datoteku" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Dodaj kao zajedničku biblioteku" @@ -405,31 +406,31 @@ msgstr "Dodaj kao zajedničku biblioteku" msgid "dashboard.change-email" msgstr "Promijeni e-mail" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopiraj)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "+ Kreiraj novi tim" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Prikvači ovu verziju" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Tvoj Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Obriši tim" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Preuzmi Penpot datoteku (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Preuzmi standardnu datoteku (.svg + .json)" @@ -485,7 +486,7 @@ msgstr "Još nema biblioteka." msgid "dashboard.export-binary-multi" msgstr "Preuzmi %s Penpot datoteke (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Izvezi artboard u PDF" @@ -501,7 +502,7 @@ msgstr "Izvezi Penpot %s datoteka" msgid "dashboard.export-multiple.selected" msgstr "% od % elementa označeno" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Izvezi" @@ -700,11 +701,11 @@ msgstr "Prijenos podataka na poslužitelj (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Prijenos datoteke: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Pozovi u tim" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Napusti tim" @@ -716,7 +717,7 @@ msgstr "Biblioteke i predlošci" msgid "dashboard.libraries-and-templates.explore" msgstr "Istraži više njih i saznaj kako doprinijeti" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Došlo je do problema prilikom uvoza predloška. Predložak nije uvezen." @@ -748,7 +749,7 @@ msgstr "Premijesti u drugi tim" msgid "dashboard.new-file" msgstr "+ Nova datoteka" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Nova datoteka" @@ -756,7 +757,7 @@ msgstr "Nova datoteka" msgid "dashboard.new-project" msgstr "+ Novi projekt" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Novi projekt" @@ -764,11 +765,11 @@ msgstr "Novi projekt" msgid "dashboard.no-matches-for" msgstr "Nisu pronađeni rezultati za “%s”" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Prikvačeni projekti pojavit će se ovdje" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Obavijesti" @@ -780,7 +781,7 @@ msgstr "Tvoja e-mail adresa je uspješno ažurirana" msgid "dashboard.notifications.email-verified-successfully" msgstr "Tvoja e-mail adresa je uspješno potvrđena" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Postavke obavijesti ažurirane" @@ -788,11 +789,11 @@ msgstr "Postavke obavijesti ažurirane" msgid "dashboard.notifications.password-saved" msgstr "Lozinka je uspješno spremljena!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Pregledajte obavijesti" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s članova" @@ -824,7 +825,7 @@ msgstr "Sada ste vlasnik ovog tima." msgid "dashboard.permissions-change.viewer" msgstr "Sada ste gledatelj u ovom timu." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Prikvači/Otkvači" @@ -861,7 +862,7 @@ msgstr "Niste više dio tima \"%s\"." msgid "dashboard.save-settings" msgstr "Spremi postavke" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Pretraži…" @@ -941,7 +942,7 @@ msgstr "Obavijesti" msgid "dashboard.show-all-files" msgstr "Prikaži sve datoteke" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Povijest verzija" @@ -967,7 +968,7 @@ msgstr[2] "Tvoje datoteke su uspješno duplicirane" msgid "dashboard.success-duplicate-project" msgstr "Tvoj projekt je uspješno dupliciran" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Tvoja datoteka je uspješno premještena" @@ -979,15 +980,15 @@ msgstr "Tvoje datoteke su uspješno premještene" msgid "dashboard.success-move-project" msgstr "Tvoj projekt je uspješno premješten" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Informacije tima" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Članovi tima" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Projekti tima" @@ -1003,7 +1004,7 @@ msgstr "Pretraži rezultate" msgid "dashboard.type-something" msgstr "Upiši za rezultate pretraživanja" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Poništi objavu biblioteke" @@ -1011,50 +1012,50 @@ msgstr "Poništi objavu biblioteke" msgid "dashboard.update-settings" msgstr "Ažuriraj postavke" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Kreativnost nema ograničenja" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Free" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Aktivno" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Kada se ovaj webhook pokrene, bit će isporučene pojedinosti o događaju" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Možete samo brisati ili mijenjati webhookove koje ste sami izradili." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Vrsta sadržaja" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Stvorite webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook je uspješno stvoren." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhookovi su jednostavan način da se drugim web stranicama i aplikacijama " "omogući da budu obaviješteni kada se određeni događaji dogode na Penpotu. " "Poslat ćemo POST zahtjev na svaki URL koji navedete." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Pritisnite gumb \"Dodaj webhook\" da biste ga dodali." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Do sada nije izrađen nijedan webhook." @@ -1074,7 +1075,7 @@ msgstr "E-mail" msgid "dashboard.your-name" msgstr "Ime" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Tvoj Penpot" @@ -1090,15 +1091,15 @@ msgstr "Pažnja" msgid "ds.component-subtitle" msgstr "Komponente za ažuriranje:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Dopusti" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Poništi" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "U redu" @@ -1150,11 +1151,11 @@ msgstr "Ne možeš koristiti svoj e-mail kao lozinku" msgid "errors.email-domain-not-allowed" msgstr "Domena nije dopuštena" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "E-pmail «%s» ima mnogo trajnih izvješća o odbijanju." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "E-mail «%s» je prijavljen kao neželjena pošta ili je trajno odbijen." @@ -1168,11 +1169,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Značajka '%s' nije podržana." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "Mora sadržavati najviše 1 znak." - #, unused msgid "errors.field-min-length" msgstr "Mora sadržavati najmanje 1 znak." @@ -1189,7 +1185,7 @@ msgstr "" "datoteke koju pokušavate otvoriti. Prije otvaranja datoteke potrebno je " "primijeniti migracije za '%s'." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Dogodilo se nešto loše." @@ -1222,11 +1218,11 @@ msgstr "Ova pozivnica je možda otkazana ili je istekla." msgid "errors.ldap-disabled" msgstr "Onemogućena je LDAP provjera autentičnosti." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Dosegli ste kvotu '%s'. Kontaktirajte podršku." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "Dosegnut je najveći (%s) broj e-pošta koje se mogu pozvati u jednom zahtjevu" @@ -1242,7 +1238,7 @@ msgstr "Čini se da sadržaj slike ne odgovara ekstenziji datoteke." msgid "errors.media-type-not-allowed" msgstr "Čini se da ovo nije važeća slika." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Profil koji pozivaš ima isključen e-email (izvješća o neželjenoj pošti ili " @@ -1270,7 +1266,7 @@ msgstr "Nevažeći podaci u međuspremniku" msgid "errors.profile-blocked" msgstr "Profil je blokiran" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Tvoj profil ima isključen e-mail (izvješća o neželjenoj pošti ili veliki " @@ -1284,15 +1280,15 @@ msgstr "Registracija je trenutno onemogućena." msgid "errors.team-feature-mismatch" msgstr "Otkrivena nekompatibilna značajka '%s'" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "Nedovoljno članova za napuštanje tima, vjerojatno ga želiš izbrisati." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Član kojeg pokušavaš dodijeliti ne postoji." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Vlasnik ne može napustiti tim, moraš ponovno dodijeliti ulogu vlasnika." @@ -1312,31 +1308,31 @@ msgstr "Pogreška provjere valjanosti" msgid "errors.version-not-supported" msgstr "Datoteka ima nekompatibilan broj verzije" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Pogreška veze, URL nije dostupan" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL ne prolazi provjeru valjanosti." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Zadnja dostava nije bila uspješna." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Pogreška pri SSL provjeri valjanosti." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Istek vremena" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Neočekivana pogreška prilikom provjere" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Neočekivani status %s" @@ -1398,19 +1394,19 @@ msgstr "Došlo je do pogreške" msgid "inspect.attributes.blur" msgstr "Zamućenje" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Vrijednost" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1418,7 +1414,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Ispuna" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Preuzmi izvornu sliku" @@ -1512,81 +1508,84 @@ msgstr "Solidan" msgid "inspect.attributes.stroke.width" msgstr "Širina" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografija" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Font" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Veličina fonta" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Stil fonta" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Težina fonta" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Razmak između slova" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Visina linije" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Dekoracija teksta" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Nikakav" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Podcrtano" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformiraj tekst" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Velika i mala slova" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Mala slova" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Nikakav" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Nepostavljeno" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Velika slova" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Ako želite saznati više o pregledu dizajna, posjetite Penpotov centar za " "pomoć" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Više informacija o inspekciji" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Odaberite oblik, ploču ili grupu da provjerite njihova svojstva i kod" @@ -1646,7 +1645,7 @@ msgstr "Tekst" msgid "inspect.tabs.info" msgstr "Informacija" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Prečaci" @@ -1658,11 +1657,11 @@ msgstr "Prihvati" msgid "labels.access-tokens" msgstr "Pristupni tokeni" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktivan" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Dodati" @@ -1670,11 +1669,11 @@ msgstr "Dodati" msgid "labels.add-custom-font" msgstr "Dodajte custom font" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Dodavanje..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Administrator" @@ -1682,7 +1681,7 @@ msgstr "Administrator" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Sve" @@ -1705,7 +1704,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Loš Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Odbaci" @@ -1713,11 +1712,11 @@ msgstr "Odbaci" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Zatvori" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Sažmi" @@ -1729,11 +1728,11 @@ msgstr "Komentar" msgid "labels.comment.mark-as-solved" msgstr "Označi kao riješeno" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Komentari" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Zajenica" @@ -1741,7 +1740,7 @@ msgstr "Zajenica" msgid "labels.confirm-password" msgstr "Potvrdi lozinku" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Nastavi" @@ -1753,7 +1752,7 @@ msgstr "Nastavi sa" msgid "labels.continue-with-penpot" msgstr "Možeš nastaviti s Penpot računom" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Kopiraj vezu" @@ -1761,7 +1760,7 @@ msgstr "Kopiraj vezu" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Kreiraj" @@ -1781,7 +1780,7 @@ msgstr "Custom fontovi" msgid "labels.dashboard" msgstr "Nadzorna ploča" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Izbriši" @@ -1793,7 +1792,7 @@ msgstr "Izbriši komentar" msgid "labels.delete-comment-thread" msgstr "Izbriši thread" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Izbriši pozivnicu" @@ -1810,15 +1809,15 @@ msgstr "Razvoj" msgid "labels.director" msgstr "Direktor" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Odbaciti" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Nacrti" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Uredi" @@ -1826,7 +1825,7 @@ msgstr "Uredi" msgid "labels.edit-file" msgstr "Uredi datoteku" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Urednik" @@ -1835,11 +1834,11 @@ msgstr "Urednik" msgid "labels.event" msgstr "Događaj" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Isteklo" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Izvezi" @@ -1867,7 +1866,7 @@ msgstr "Pružatelji fontova" msgid "labels.font-variants" msgstr "Stilovi" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fontovi" @@ -1881,11 +1880,11 @@ msgstr "CEO ili osnivač" msgid "labels.freelancer" msgstr "Freelancer" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Github repozitorij" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Daj povratnu informaciju" @@ -1897,19 +1896,19 @@ msgstr "Povratak" msgid "labels.graphic-design" msgstr "Grafički dizajn" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Centar za pomoć" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Sakrij riješene komentare" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Uvoz" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Neaktivan" @@ -1931,7 +1930,7 @@ msgstr "Interna pogreška" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Pozivnice" @@ -1939,7 +1938,7 @@ msgstr "Pozivnice" msgid "labels.language" msgstr "Jezik" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Biblioteke i predlošci" @@ -1955,7 +1954,7 @@ msgstr "Prijava ili registracija" msgid "labels.login" msgstr "Prijava" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Odjava" @@ -1963,11 +1962,11 @@ msgstr "Odjava" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Član" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Članovi" @@ -1975,15 +1974,15 @@ msgstr "Članovi" msgid "labels.new-password" msgstr "Nova lozinka" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Sljedeći" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Nemaš obavijesti o komentarima na čekanju." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Nema pozivnica." @@ -2000,7 +1999,7 @@ msgstr "Ups!" msgid "labels.notifications" msgstr "Obavijesti" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 datoteka" @@ -2014,7 +2013,7 @@ msgstr[0] "1 ploča" msgstr[1] "%s ploča" msgstr[2] "%s ploča" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 projekt" @@ -2034,7 +2033,7 @@ msgstr "Stara lozinka" msgid "labels.only-yours" msgstr "Samo tvoj" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Mogućnosti" @@ -2050,7 +2049,7 @@ msgstr "Ostalo (navesti)" msgid "labels.other-short" msgstr "Ostalo" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Vlasnik" @@ -2058,7 +2057,7 @@ msgstr "Vlasnik" msgid "labels.password" msgstr "Lozinka" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "U tijeku" @@ -2082,11 +2081,11 @@ msgstr "Upravljanje proizvodima" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projekti" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Release notes" @@ -2100,11 +2099,11 @@ msgstr "Ponovno učitaj datoteku" msgid "labels.remove" msgstr "Ukloni" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Ukloni člana" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Preimenuj" @@ -2132,7 +2131,7 @@ msgstr "novi odgovor" msgid "labels.reply.thread" msgstr "Odgovor" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Ponovno pošalji pozivnicu" @@ -2144,15 +2143,15 @@ msgstr "Vratiti" msgid "labels.retry" msgstr "Pokušaj ponovo" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Uloga" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Spremi" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Pretraživanje" @@ -2180,11 +2179,11 @@ msgstr "U programiranom smo održavanju naših sustava." msgid "labels.service-unavailable.main-message" msgstr "Usluga je nedostupna" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Skupovi" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Postavke" @@ -2196,11 +2195,11 @@ msgstr "Dijeliti" msgid "labels.share-prototype" msgstr "Podijeli prototip" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibiloteke" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Prikaži sve komentare" @@ -2208,11 +2207,11 @@ msgstr "Prikaži sve komentare" msgid "labels.show-comments-list" msgstr "Prikaži listu komentara" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Prikaži samo svoja spominjanja" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Prikaži samo tvoje komentare" @@ -2224,7 +2223,7 @@ msgstr "Skica" msgid "labels.start" msgstr "Start" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" @@ -2246,7 +2245,7 @@ msgstr "Član tima" msgid "labels.themes" msgstr "Teme" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Upute" @@ -2274,15 +2273,15 @@ msgstr "Prenesi custom fontove" msgid "labels.uploading" msgstr "Prijenos…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Samo pogled" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Promatrač" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhookovi" @@ -2290,11 +2289,11 @@ msgstr "Webhookovi" msgid "labels.write-new-comment" msgstr "Napiši novi komentar" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(ti)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Tvoj korisnički račun" @@ -2303,23 +2302,23 @@ msgstr "Tvoj korisnički račun" msgid "labels.youtube" msgstr "YouTube" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Odaberite sliku" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Gradijent" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Slika" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "slika" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Zadrži omjer slike" @@ -2337,7 +2336,7 @@ msgstr "Učitavanje slike…" msgid "media.radial" msgstr "Radijalno" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Čvrsto" @@ -2412,19 +2411,19 @@ msgstr "Stvori token" msgid "modals.create-access-token.title" msgstr "Generirajte pristupni token" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Izradi webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Izradi webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL tereta" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://primjer.com/postreceive" @@ -2470,11 +2469,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Izbriši razgovor" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Jeste li sigurni da želite izbrisati ovu bilješku?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Izbriši bilješku" @@ -2522,11 +2521,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Brisanje fonta" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Jesi li siguran/na da želiš izbrisati ovu stranicu?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Brisanje stranice" @@ -2577,29 +2576,29 @@ msgstr[0] "Brisanje datoteke" msgstr[1] "Brisanje datoteka" msgstr[2] "Brisanje datoteka" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Brisanje tima" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Jesi li siguran/na da želiš izbrisati ovaj tim? Svi projekti i datoteke " "povezane s timom biti će trajno izbrisane." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Brisanje tima" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Brisanje člana" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Jesi li siguran/na da želiš izbrisati ovog člana iz tima?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Brisanje člana tima" @@ -2616,57 +2615,57 @@ msgstr[2] "" "Sredstva koja su već korištena u tim datotekama ostat će ondje (nijedan " "dizajn neće biti pokvaren)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Izbriši webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Jeste li sigurni da želite izbrisati ovaj webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Brisanje webhooka" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Uredi webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Uredi webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Pošalji pozivnicu" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-mail, odvojeno zarezom" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Neke e-adrese su od trenutačnih članova tima. Njima pozivnice neće biti " "poslane." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Možete pozvati članove u tim kako bi mogli pristupiti ovoj datoteci i svim " "datotekama tima." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Pozovi članove u tim" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Budući da si jedini član ovog tima, tim će biti izbrisan zajedno sa svojim " "projektima i datotekama." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Jesi li siguran/na da želiš napustiti tim %s?" @@ -2694,15 +2693,15 @@ msgstr "Odaberi člana za promociju" msgid "modals.leave-and-reassign.title" msgstr "Prije nego odeš" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Napusti tim" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Jesi li siguran/na da želiš napustiti ovaj tim?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Napuštanje tima" @@ -2727,39 +2726,39 @@ msgstr[0] "Premjesti biblioteku" msgstr[1] "Premjesti biblioteke" msgstr[2] "Premjesti biblioteke" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Pomakni za" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Prenesi vlasništvo" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Ako preneseš vlasništvo, promijenit ćeš svoju ulogu u Administrator, čime " "ćeš izgubiti neka dopuštenja za ovaj tim. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Ti si trenutni vlasnik ovog tima. Jesi li siguran/na da %s želiš postaviti " "za novog vlasnika tima?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Novi vlasnik tima" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Objavi" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Vaša biblioteka je prazna. Jeste li sigurni da je želite objaviti?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Objavi praznu biblioteku" @@ -2818,21 +2817,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Ažuriraj komponente u zajedničkoj biblioteci" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Ažuriraj" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Poništi" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Upravo ćeš ažurirati komponentu u zajedničkoj biblioteci. To može utjecati " "na druge datoteke koje ga koriste." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Ažuriraj komponentu u zajedničkoj biblioteci" @@ -2944,11 +2943,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Dostupna je nova verzija, molimo osvježite stranicu" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Pozivnica je uspješno poslana" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Veza pozivnice je kopirana" @@ -3095,7 +3094,7 @@ msgstr "" "Ne zaboravi uključiti sve. Programere, dizajnere, menadžere... raznolikost " "se isplati :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Pozovi s ulogom:" @@ -3313,665 +3312,649 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Idi na prijavu" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Odvojiti" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Izmješano" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Uklonite boju" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Odaberite stavke koristeći ovaj stil" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Osnove" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Nadzorna ploča" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Gledatelj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Radni prostor" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Poravnanje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Uredi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Generičko" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Generičko" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Glavni meni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Izmijeni layere" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigacija" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigacija" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigacija" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Paneli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Putanje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Oblici" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Tekstovi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Alati" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Komentari" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Dodaj čvor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Poravnaj dno" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Poravnajte središte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Poravnaj sredinu vodoravno" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Poravnajte obostrano" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Poravnaj lijevo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Poravnaj desno" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Poravnaj vrh" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Poravnaj sredinu okomito" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Kreiraj ploču iz odabira" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Uključi/isključi podebljano" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Boolean razlika" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Boolean isključenje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Boolean presijek" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Boolean unija" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Premijesti u pozadinu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Premiijesti nazad" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Premijesti naprijed" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Premijesti skroz naprijed" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Obriši povrat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopiraj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Kopiraj vezu u međuspremnik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Kreiraj novo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Izreži" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Zoom out" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Izbriši" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Izbriši čvor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Odvoji komponentu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Krivulja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipsa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Panel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Ucrtaj put" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Put" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Pravokutnik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Tekst" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Dupliciraj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Poništi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Izvezi oblike" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Zumiraj da stane sve" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Okreni vodoravno" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Okreni okomito" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Smanji veličinu fonta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Povećaj veličinu fonta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Idi na nacrte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Idi na zajedničke biblioteke" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Traži" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Grupiraj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribuiraj vodoravno" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Prikaži/sakrij UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Zoom in" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Umetni sliku" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Prebaci kurziv" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Spoji čvorove" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Smanjite razmak između slova" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Povećaj razmak između slova" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Smanji visinu linije" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Povećaj visinu linije" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Uključi precrtavanje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Izradi rub" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Izradi krivulju" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maskiraj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Spoji čvorove" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Premijesti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Premijesti brzo dolje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Premijesti brzo lijevo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Premijesti brzo desno" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Premijesti brzo gore" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Premijesti čvor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Premijesti dolje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Premijesti lijevo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Premijesti desno" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Premijesti gore" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Slijedeća ploča" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Nema pronađenih prečaca" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Postavi neprozirnost na 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Postavi neprozirnost na 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Postavi neprozirnost na 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Postavi neprozirnost na 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Postavi neprozirnost na 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Postavi neprozirnost na 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Postavi neprozirnost na 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Postavi neprozirnost na 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Postavi neprozirnost na 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Postavi neprozirnost na 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Birač boja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Idi na odjeljak s komentarima" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Idi na nadzornu ploču" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Idite na odjeljak pregleda preglednika" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Idi na odjeljak interakcija" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Idi na odjeljak interakcija gledatelja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Idi na radni prostor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " ili " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Zaljepi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Prethodna ploča" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Ponovi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Preimenujte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Resetiraj zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Skalirajte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Pretraži prečace" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Označi sve" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Odaberite sljedeći sloj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Odaberite nadređeni sloj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Odaberite prethodni sloj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Posebni čvorovi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Prikaži/sakrij \"pixel grid\"" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Prikaži/sakrij prečace" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Priključi na čvorove" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Priključi na \"pixel grid\"" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Počni uređivanje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Počni mjerenje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Zaustavi mjerenje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Postavi sličice" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Prečaci na tipkovnici" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Promijena dinamičkog poravnanja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Promijena stavaka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Promijena palete boja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Promijena fokus moda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Promijeni cijeli zaslon" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Prikaži / Sakrij vodiče" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Promijena povijesti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Promijena layera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Dodavanje/uklanjanje flex rasporeda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Dodaj/ukloni grid raspored" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Zaključaj odabrano" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Zaključaj proporcije" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Prikaži / Sakrij ravnala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Pričvrstite na vodilice" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Pričvrstite na vodilice ravnala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Promijeni paletu teksta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Promjena teme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Promijeni vidljivost" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Promijeni stil zooma" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Uključi podcrtavanje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Poništi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Razgrupiraj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Makni masku" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribuiraj okomito" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Smanjenje zuma objektiva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Povećanje zuma objektiva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zoomiraj na selektirano" @@ -4027,19 +4010,19 @@ msgstr "Lozinka - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Pozivnice - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Članovi - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Postavke - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhookovi - %s - Penpot" @@ -4111,43 +4094,43 @@ msgstr "Prikaži interakcije na klik" msgid "viewer.header.sitemap" msgstr "Sitemap" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Zadnja isporuka bila je uspješna." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Poravnaj vodoravno u sredinu (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribuiraj vodoravni razmak (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Poravnaj lijevo (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Poravnaj desno (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Poravnaj dolje (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Poravnaj okomito u sredinu (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribuiraj okomiti razmak (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Poravnaj gore (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Dodaj biblioteku" @@ -4156,19 +4139,19 @@ msgstr "Dodaj biblioteku" msgid "workspace.assets.assets" msgstr "Stavke" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Sve stavke" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Boje" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Dodajte boju" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Komponente" @@ -4176,19 +4159,19 @@ msgstr "Komponente" msgid "workspace.assets.components.add-component" msgstr "Dodajte komponentu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Kreiraj grupu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Tvoje stavke će se automatski imenovati kao \"naziv grupe / naziv stavke\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Izbriši" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Dupliciraj" @@ -4196,11 +4179,11 @@ msgstr "Dupliciraj" msgid "workspace.assets.duplicate-main" msgstr "Dupliciraj glavni" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Uredi" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filter" @@ -4209,23 +4192,23 @@ msgstr "Filter" msgid "workspace.assets.graphics" msgstr "Grafika" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Grid prikaz" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Grupa" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Ime grupe" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Popisni prikaz" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "lokalna biblioteka" @@ -4237,15 +4220,15 @@ msgstr "Nisu pronađene stavke" msgid "workspace.assets.open-library" msgstr "Otvori datoteku biblioteke" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Preimenuj" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Preimenuj grupu" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Pretraži stavke" @@ -4262,22 +4245,22 @@ msgstr[2] "%s odabranih stavki" msgid "workspace.assets.shared-library" msgstr "Zajednička biblioteka" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 komponenta" msgstr[1] "%s komponente" msgstr[2] "%s komponente" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Sortiraj" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografija" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Dodajte tipografiju" @@ -4302,7 +4285,7 @@ msgstr "Razmak između slova" msgid "workspace.assets.typography.line-height" msgstr "Visina linije" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4314,59 +4297,59 @@ msgstr "Stilovi teksta" msgid "workspace.assets.typography.text-transform" msgstr "Transformiraj tekst" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Razgrupiraj" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Stvorite područje" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Napravi ploču" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Spoji ćelije" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Dodajte 1 stupac desno" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Dodajte 1 stupac lijevo" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Izbriši stupac" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Izbriši stupac i oblike" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Dupliciraj stupac" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Dodajte 1 red ispod" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Dodajte 1 red iznad" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Izbriši red" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Izbrišite red i oblike" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Dupliciraj redak" @@ -4374,7 +4357,7 @@ msgstr "Dupliciraj redak" msgid "workspace.focus.focus-mode" msgstr "Fokus mode" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Fokus isključen" @@ -4394,11 +4377,11 @@ msgstr "Linearni gradijent" msgid "workspace.gradients.radial" msgstr "Radijalni gradijent" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Onemogući dinamičko poravnanje" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Onemogući proporcionalno mjerilo" @@ -4407,23 +4390,23 @@ msgstr "Onemogući proporcionalno mjerilo" msgid "workspace.header.menu.disable-scale-text" msgstr "Onemogući skaliranje teksta" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Onemogući \"snap to guides\"" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Onemogući \"snap to pixel\"" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Onemogući spajanje na vodilice ravnala" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Omogući dinamičko poravnanje" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Omogući proporcionalno mjerilo" @@ -4432,51 +4415,51 @@ msgstr "Omogući proporcionalno mjerilo" msgid "workspace.header.menu.enable-scale-text" msgstr "Omogući skaliranje teksta" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Pričvrstite na vodilice" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Omogući \"snap to pixel\"" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Pričvrstite na vodilice ravnala" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Sakrij nazive ploča" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Sakrij vodiče" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Sakrij paletu boja" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Sakrij \"pixel grid\"" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Sakrij \"rules\"" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Sakrij paletu boja" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Uredi" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Datoteka" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Pomoć i informacije" @@ -4485,59 +4468,59 @@ msgstr "Pomoć i informacije" msgid "workspace.header.menu.option.power-up" msgstr "Ojačajte svoj plan" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferencije" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Pregled" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Ponovi" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Odaberi sve" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Prikaži nazive ploča" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Prikaži vodiče" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Prikaži paletu boja" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Prikaži \"pixel grid\"" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Prikaži \"rules\"" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Prikaži paletu fontova" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Prebacite se na tamnu temu" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Prebaci na svijetlu temu" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Poništi" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Resetiraj" @@ -4553,7 +4536,7 @@ msgstr "Spremljeno" msgid "workspace.header.saving" msgstr "Spremanje" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Podijeli" @@ -4562,11 +4545,11 @@ msgstr "Podijeli" msgid "workspace.header.unsaved" msgstr "Nespremljene izmijene" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Način prikaza (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zum" @@ -4578,7 +4561,7 @@ msgstr "Ispuna - Skaliraj za popunjavanje" msgid "workspace.header.zoom-fit" msgstr "Prilagodi - Smanji veličinu da pristane" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Zumiraj da stane sve" @@ -4586,19 +4569,19 @@ msgstr "Zumiraj da stane sve" msgid "workspace.header.zoom-full-screen" msgstr "Cijeli ekran" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zumiraj na odabrano" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Uredi grid" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Izlaz" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Prikaži 4-strane opcije podstava" @@ -4614,7 +4597,7 @@ msgstr "Gotovo" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Pronađi" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Pronađite grid raspored" @@ -4623,10 +4606,6 @@ msgstr "Pronađite grid raspored" msgid "workspace.libraries.add" msgstr "Dodaj" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s boje" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "U vašoj biblioteci još nema stilova boja" @@ -4653,43 +4632,35 @@ msgstr "Nedavno korištene boje" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB komplementarno" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Spremi u stil boja" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s komponente" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Ili dodajte neke od ovih za isprobavanje:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "U vašem timu nema dijeljenih biblioteka, možete ih potražiti" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "neki predlošci ovdje" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Biblioteka datoteka" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s grafike" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTEKE U OVOJ DATOTECI" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTEKE" @@ -4698,11 +4669,11 @@ msgstr "BIBLIOTEKE" msgid "workspace.libraries.library" msgstr "BIBLIOTEKA" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "AŽURIRANJE KNJIŽNICE" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Učitavanje…" @@ -4711,79 +4682,75 @@ msgstr "Učitavanje…" msgid "workspace.libraries.more-templates" msgstr "Možete tražiti " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Ne postoje zajedničke biblioteke koje je potrebno ažurirati" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Nisu pronađeni rezultati za “%s”" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Pretraži zajedničke biblioteke" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "ZAJEDNIČKE BIBLIOTEKE" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Povežite biblioteku" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Višestruke tipografije" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Prekini vezu svih tipografija" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s tipografije" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Odspojite biblioteku" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Ažuriranje" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "vidjeti sve promjene" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "AŽURIRANJA" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Klikni gumb + za dodavanje interakcija." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Dodajte zamućenje" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Ukloni zamućenje" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Zamuti" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Grupiraj zamućenje" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Odabir zamućenja" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Uključi/isključi zamućenje" @@ -4791,39 +4758,39 @@ msgstr "Uključi/isključi zamućenje" msgid "workspace.options.canvas-background" msgstr "Pozadina canvasa" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Isjeci sadržaj" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Komponenta" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Bilješka" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Kopirati" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Napravite bilješku" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Uredite bilješku" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Glavni" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Zamijenite komponentu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "U ovoj biblioteci još nema sredstava" @@ -4867,7 +4834,7 @@ msgstr "Vrh" msgid "workspace.options.constraints.topbottom" msgstr "Vrh i dno" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Dizajn" @@ -4880,22 +4847,22 @@ msgstr "Izvoz" msgid "workspace.options.export-multiple" msgstr "Izvezi selektirano" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Izvezi 1 element" msgstr[1] "Izvezi %s elemenata" msgstr[2] "Izvezi %s elemenata" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Dodaj izvoz" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Ukloni izvoz" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Sufiks" @@ -4903,7 +4870,7 @@ msgstr "Sufiks" msgid "workspace.options.exporting-complete" msgstr "Izvoz završen" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Izvoz…" @@ -4915,27 +4882,27 @@ msgstr "Izvoz nije uspio" msgid "workspace.options.exporting-object-slow" msgstr "Izvoz neočekivano spor" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Ispuni" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Dodajte ispunu" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Ukloni ispunu" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Promijenite veličinu ploče da odgovara sadržaju" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Dodaj početak toka" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Tok" @@ -4944,19 +4911,19 @@ msgstr "Tok" msgid "workspace.options.flows.flow-start" msgstr "Početak toka" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Flow započinje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Uklonite tok" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Auto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Stupci" @@ -4965,7 +4932,7 @@ msgstr "Stupci" msgid "workspace.options.grid.grid-title" msgstr "Grid" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Boja" @@ -4974,15 +4941,15 @@ msgstr "Boja" msgid "workspace.options.grid.params.columns" msgstr "Stupci" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Oluk" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Visina" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margina" @@ -4991,7 +4958,7 @@ msgstr "Margina" msgid "workspace.options.grid.params.rows" msgstr "Redovi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Postavi kao zadano" @@ -5005,159 +4972,159 @@ msgstr "Veličina" msgid "workspace.options.grid.params.type" msgstr "Tip" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Dno" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Sredina" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Lijevo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Desno" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Razvuci" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Vrh" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Koristi zadano" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Širina" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Redovi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Kvadrat" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Popunjavanje grupe" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Grupni potez" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Dodajte vodilicu" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Uklonite vodilicu" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Vodilice" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Uključi/isključi vodilicu" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Visina" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Pregledati" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Akcija" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Nakon kašnjenja" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animacija" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Razriješi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Nijedan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Gurni" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Slide" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "auto" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Dodajte pozadinsko preklapanje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Zatvori kada klikneš izvana" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Zatvori preklapanje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Zatvori preklapanje: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Odgoda" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Odredište" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Trajanje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linearno" @@ -5166,47 +5133,47 @@ msgstr "Linearno" msgid "workspace.options.interaction-in" msgstr "U" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Ulaz mišem" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Izlaz mišem" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Idi do" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Idi do: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(nije spremno)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Offset učinak" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Na klik" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Otvoreno preklapanje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Otvoreno preklapanje: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Otvoreni url" @@ -5215,87 +5182,87 @@ msgstr "Otvoreni url" msgid "workspace.options.interaction-out" msgstr "Vani" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Dolje sredina" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Dolje lijevo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Dolje desno" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Sredina" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Priručnik" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Gore sredina" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Gore lijevo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Gore desno" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Pozicija" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Sačuvaj položaj scrolanja" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Prethodni ekran" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "U odnosu na" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "sebe" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Uključi/isključi preklapanje" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Uključi/isključi preklapanje: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Okidač" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Na hover" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Dok pritisneš" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interakcije" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Dodajte interakciju" @@ -5304,67 +5271,67 @@ msgstr "Dodajte interakciju" msgid "workspace.options.interactions.remove-interaction" msgstr "Ukloni interakciju" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Boja" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Izgaranje boje" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Izbjegavanje boja" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Zatamni" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Razlika" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Ekskluzija" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Tvrdo svjetlo" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Nijansa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Posvijetli" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Svjetlost" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Umnoži" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normalno" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Preklapanje" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturacija" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Ekran" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Nježno svjetlo" @@ -5383,7 +5350,7 @@ msgstr "Grupiraj layere" msgid "workspace.options.layer-options.title.multiple" msgstr "Označeni layeri" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Uključi/isključi vidljivost sloja" @@ -5392,19 +5359,19 @@ msgstr "Uključi/isključi vidljivost sloja" msgid "workspace.options.layout-item.advanced-ops" msgstr "Napredne opcije" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Max.visina" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Max.širina" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.visina" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.širina" @@ -5518,15 +5485,15 @@ msgstr "prostor između" msgid "workspace.options.layout.top" msgstr "Vrh" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Više boja" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Više boja iz biblioteke" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Neprozirnost" @@ -5535,35 +5502,35 @@ msgstr "Neprozirnost" msgid "workspace.options.position" msgstr "Pozicija" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototip" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Radius" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Dolje lijevo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Dolje desno" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Gore lijevo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Gore desno" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Sažmi neovisni radijus" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Prikaži neovisni radijus" @@ -5575,7 +5542,7 @@ msgstr "Nedavni" msgid "workspace.options.retry" msgstr "Pokušaj ponovo" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotacija" @@ -5583,31 +5550,31 @@ msgstr "Rotacija" msgid "workspace.options.search-font" msgstr "Pretraži font" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Odaberi oblik, ploču ili grupu za povlačenje veze na drugu ploču." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Odabrane boje" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Ispuna odabira" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Potez selektirano" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Dodajte sjenu" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Zamućeno" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Boja sjene" @@ -5619,55 +5586,56 @@ msgstr "Spusti sjenu" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Unutarnja sjena" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Ukloni sjenu" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Proširi" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Sjena" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Grupiraj sjenu" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Odabir sjena" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Uključi/isključi sjenu" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Prikaži u izvozu" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Prikaži u načinu pregleda" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Veličina" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Unaprijed postavljena veličina" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Potez" @@ -5676,7 +5644,7 @@ msgstr "Potez" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Kružni marker" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Krug" @@ -5685,7 +5653,7 @@ msgstr "Krug" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Dijamantni marker" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Dijamant" @@ -5694,19 +5662,19 @@ msgstr "Dijamant" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Strelica linije" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Strelica" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Nijedan" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Okruglo" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Kvadrat" @@ -5715,7 +5683,7 @@ msgstr "Kvadrat" msgid "workspace.options.stroke-cap.square-marker" msgstr "Kvadratni marker" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Pravokutnik" @@ -5724,83 +5692,83 @@ msgstr "Pravokutnik" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Trokutna strelica" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Trokut" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Boja poteza" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Širina poteza" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Dodajte boju poteza" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Sredina" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Crtkano" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Točkasto" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Unutra" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Miješano" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Vani" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Uklonite potez" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Čvrsto" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Poravnaj dno" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Poravnaj sredinu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Poravnaj vrh" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Automatska visina" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Automatska širina" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Popravljeno" @@ -5822,35 +5790,35 @@ msgstr "Mala slova" msgid "workspace.options.text-options.none" msgstr "Nijedan" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Precrtanko (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Poravnaj sredinu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Složi u blok" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Poravnaj lijevo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Poravnaj desno" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Tekst" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Grupiraj tekst" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Selektiraj tekst" @@ -5859,7 +5827,7 @@ msgstr "Selektiraj tekst" msgid "workspace.options.text-options.titlecase" msgstr "Velika i mala slova" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Podcrtano (%s)" @@ -5868,19 +5836,19 @@ msgstr "Podcrtano (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Velika slova" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Upotrijebi play gumb u zaglavlju za pokretanje prikaza prototipa." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Širina" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X os" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y" @@ -5924,78 +5892,78 @@ msgstr "Odvoji čvorove(%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Priključi čvorove (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Otvoriti" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Otkrijte [više dodataka](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Još nema instaliranih dodataka" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Manifest dodatka nije točan." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Morate biti urednik da biste koristili ovaj dodatak" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Dodatak ne postoji ili URL nije točan." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Instalirati" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Instalirani dodaci" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Upravitelj dodataka" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Dodaci" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "AŽURIRAJTE OVAJ DODATAK" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "Dodatak je izmijenjen otkad ste ga zadnji put otvorili. Sada također želi " "pristupiti:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Pokrenite preuzimanje datoteka." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Pročitajte svoje komentare i odgovore." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Pročitajte i izmijenite svoje komentare i odgovorite u svoje ime." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Pročitajte sadržaj datoteka kojima korisnici imaju pristup." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Čitajte i mijenjajte sadržaj datoteka kojima korisnici imaju pristup." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Imajte na umu da je ovaj dodatak izradila vanjska strana, stoga provjerite " @@ -6003,31 +5971,31 @@ msgstr "" "vaših podataka važni su nam. Ako imate bilo kakvih nedoumica, obratite se " "podršci." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Čitajte svoje biblioteke i stavke." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Čitajte i mijenjajte svoje biblioteke i stavke." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "'%s' DODATAK ŽELI PRISTUP:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Pročitajte informacije o profilu trenutnog korisnika." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Popis dodataka" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Ukloni dodatak" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Napišite URL dodatka" @@ -6035,25 +6003,25 @@ msgstr "Napišite URL dodatka" msgid "workspace.plugins.success" msgstr "Dodatak je ispravno učitan." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Dodaci" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "NE SADA" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Želite li pogledati? Otvorit će se u novom nacrtu za vaš trenutni tim. (Ako " "ne, uvijek ga možete pronaći u instaliranim dodacima bilo koje datoteke.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "'%s' PLUGIN JE INSTALIRAN ZA VAŠEG KORISNIKA!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "PROBAJTE DODATAK" @@ -6065,7 +6033,7 @@ msgstr "Dodajte flex raspored" msgid "workspace.shape.menu.add-grid" msgstr "Dodajte grid raspored" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Dodajte raspored" @@ -6105,7 +6073,7 @@ msgstr "Kopiraj svojstva" msgid "workspace.shape.menu.copy-text" msgstr "Kopiraj kao tekst" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Napravite bilješku" @@ -6113,11 +6081,11 @@ msgstr "Napravite bilješku" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Odabir na ploču" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Kreiraj komponentu" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Stvorite više komponenti" @@ -6125,7 +6093,7 @@ msgstr "Stvorite više komponenti" msgid "workspace.shape.menu.cut" msgstr "Izreži" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Izbriši" @@ -6133,15 +6101,15 @@ msgstr "Izbriši" msgid "workspace.shape.menu.delete-flow-start" msgstr "Izbriši početak flowa" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Odvoji instancu" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Odvoji instance" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Razlika" @@ -6153,11 +6121,11 @@ msgstr "Dupliciraj" msgid "workspace.shape.menu.edit" msgstr "Uredi" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Izuzmi" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Spljošti" @@ -6190,19 +6158,19 @@ msgstr "Idi na datoteku glavne komponente" msgid "workspace.shape.menu.group" msgstr "Grupiraj" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Sakrij" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Prikaži/sakrij korisničko sučelje" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Presjek" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Zaključaj" @@ -6210,7 +6178,7 @@ msgstr "Zaključaj" msgid "workspace.shape.menu.mask" msgstr "Maskiraj" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Zalijepi" @@ -6230,7 +6198,7 @@ msgstr "Uklonite flex raspored" msgid "workspace.shape.menu.remove-grid" msgstr "Uklonite grid raspored" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Uklonite raspored" @@ -6238,11 +6206,11 @@ msgstr "Uklonite raspored" msgid "workspace.shape.menu.rename" msgstr "Preimenovati" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Poništi overrides" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Vrati glavnu komponentu" @@ -6250,15 +6218,15 @@ msgstr "Vrati glavnu komponentu" msgid "workspace.shape.menu.select-layer" msgstr "Označi layer" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Prikaži" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Prikaži na ploči stavki" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Prikaži glavnu komponentu" @@ -6271,6 +6239,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Postavi kao sličicu" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformiraj u path" @@ -6278,11 +6247,11 @@ msgstr "Transformiraj u path" msgid "workspace.shape.menu.ungroup" msgstr "Razgrupiraj" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Unija" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Otključaj" @@ -6295,7 +6264,7 @@ msgstr "Ukloni masku" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Ažuriraj glavne komponente" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Ažuriraj glavnu komponentu" @@ -6307,11 +6276,11 @@ msgstr "Sažmi bočnu traku" msgid "workspace.sidebar.expand" msgstr "Proširi bočnu traku" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Povijest" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Layeri" @@ -6351,11 +6320,11 @@ msgstr "Tekstovi" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Uvezeni SVG atributi" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Stranice" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Dodaj stranicu" @@ -6372,11 +6341,11 @@ msgstr "%s aktivnih tema" msgid "workspace.tokens.add set" msgstr "Dodaj skup" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Primijenjeno na" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Povratak na popis tema" @@ -6384,15 +6353,15 @@ msgstr "Povratak na popis tema" msgid "workspace.tokens.create-new-theme" msgstr "Stvorite svoju prvu temu sada." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Stvorite jedan." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Stvorite novi %s token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Izbriši token" @@ -6400,15 +6369,15 @@ msgstr "Izbriši token" msgid "workspace.tokens.delete-theme-title" msgstr "Izbriši temu" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Udvostručite token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Uredite token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Uredite temu" @@ -6416,11 +6385,7 @@ msgstr "Uredite temu" msgid "workspace.tokens.edit-themes" msgstr "Uredite teme" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Uredite token" - -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Unesite %s naziv tokena" @@ -6441,7 +6406,7 @@ msgstr "Tema" msgid "workspace.tokens.no-active-theme" msgstr "Nema aktivnih tema" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Za aktiviranje/deaktiviranje skupova morate biti urednik" @@ -6449,11 +6414,11 @@ msgstr "Za aktiviranje/deaktiviranje skupova morate biti urednik" msgid "workspace.tokens.no-permission-themes" msgstr "Morate biti urednik da biste koristili teme" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Još nema definiranih skupova. Prvo stvorite jedan." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Još nema skupova." @@ -6465,16 +6430,16 @@ msgstr "Nema tema." msgid "workspace.tokens.no-themes-currently" msgstr "Trenutno nemate nijednu temu." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Izvorna vrijednost: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Referenca nije važeća ili nije ni u jednom aktivnom skupu" -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Riješena vrijednost: %s" @@ -6483,11 +6448,11 @@ msgstr "Riješena vrijednost: %s" msgid "workspace.tokens.save-theme" msgstr "Spremi temu" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Odaberite skup." -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "" "Definirajte koji se skupovi tokena trebaju koristiti kao dio ove opcije " @@ -6502,23 +6467,23 @@ msgstr "Skup tokena nije aktivan" msgid "workspace.tokens.theme-name" msgstr "Tema %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Opis" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Ime" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " nije važeće ime tokena.\n" "Nazivi tokena trebaju sadržavati samo slova i znamenke odvojene znakom . i " "ne smije počinjati znakom $." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Vrijednost" @@ -6526,19 +6491,19 @@ msgstr "Vrijednost" msgid "workspace.tokens.tokens-section-title" msgstr "TOKENI - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Alati" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "Vrijednost nije važeća" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "Preimenovanje ovog tokena prekinut će sve reference na njegov stari naziv." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Stavke" @@ -6546,7 +6511,7 @@ msgstr "Stavke" msgid "workspace.toolbar.color-palette" msgstr "Paleta boja (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Komentari (%s)" @@ -6753,19 +6718,19 @@ msgstr "Operacija izvršena %s" msgid "workspace.undo.title" msgstr "Povijest" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Odbaci" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Više informacija" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Postoje ažuriranja u zajedničkim bibliotekama" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Ažuriraj" @@ -6825,11 +6790,11 @@ msgstr "Želite li vratiti ovu verziju?" msgid "workspace.versions.snapshot-menu" msgstr "Otvaranje izbornika snimke" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Akcije" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Povijest" diff --git a/frontend/translations/id.po b/frontend/translations/id.po index 847b790104..1f972e352a 100644 --- a/frontend/translations/id.po +++ b/frontend/translations/id.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Linerly \n" -"Language-Team: Indonesian " -"\n" +"Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -179,7 +179,7 @@ msgstr "Solusi sumber terbuka untuk pembuatan desain dan prototipe." msgid "auth.terms-and-privacy-agreement" msgstr "Saya menyetujui [persyaratan layanan](%s) dan [kebijakan privasi](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Kebijakan layanan" @@ -206,7 +206,7 @@ msgstr "...pencitraan merek, ilustrasi, bagian pemasaran, dll." msgid "comments.mentions.not-found" msgstr "Tidak ada orang yang ditemukan untuk @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Terbitkan" @@ -277,7 +277,7 @@ msgstr "Bagikan prototipe" msgid "common.share-link.view-all" msgstr "Pilih Semua" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Batalkan penerbitan" @@ -402,7 +402,7 @@ msgstr "Token tidak memiliki tanggal kedaluwarsa" msgid "dashboard.add-file" msgstr "Tambahkan berkas" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Tambahkan sebagai Pustaka Bersama" @@ -410,31 +410,31 @@ msgstr "Tambahkan sebagai Pustaka Bersama" msgid "dashboard.change-email" msgstr "Ubah surel" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(salin)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Buat tim baru" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Sematkan versi ini" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Penpot Anda" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Hapus tim" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Unduh berkas Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Unduh berkas standar (.svg + .json)" @@ -518,7 +518,7 @@ msgstr "Mulai membuat hal-hal yang hebat" msgid "dashboard.export-binary-multi" msgstr "Unduh %s berkas Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Ekspor papan sebagai PDF" @@ -534,7 +534,7 @@ msgstr "Ekspor %s berkas Penpot" msgid "dashboard.export-multiple.selected" msgstr "%s dari %s elemen dipilih" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Ekspor" @@ -727,11 +727,11 @@ msgstr "Mengunggah data ke server (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Mengunggah berkas: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Undang orang" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Tinggalkan tim" @@ -739,7 +739,7 @@ msgstr "Tinggalkan tim" msgid "dashboard.libraries-and-templates" msgstr "Pustaka & Template" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "" "Di sini Anda memiliki Pustaka dan templat yang dapat ditambahkan ke proyek " @@ -749,7 +749,7 @@ msgstr "" msgid "dashboard.libraries-and-templates.explore" msgstr "Jelajahi lebih banyak dan pelajari cara berkontribusi" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Terjadi masalah saat mengimpor template. Template tidak diimpor." @@ -785,7 +785,7 @@ msgstr "Pindahkan ke tim lain" msgid "dashboard.new-file" msgstr "+ Buat Berkas" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Berkas Baru" @@ -793,7 +793,7 @@ msgstr "Berkas Baru" msgid "dashboard.new-project" msgstr "+ Buat Proyek" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Proyek Baru" @@ -801,11 +801,11 @@ msgstr "Proyek Baru" msgid "dashboard.no-matches-for" msgstr "Tidak ada hasil yang ditemukan untuk “%s”" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Proyek yang disemat akan muncul di sini" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Notifikasi" @@ -817,7 +817,7 @@ msgstr "Alamat surel Anda berhasil diperbarui" msgid "dashboard.notifications.email-verified-successfully" msgstr "Alamat surel Anda berhasil diverifikasi" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Pengaturan notifikasi diperbarui" @@ -825,11 +825,11 @@ msgstr "Pengaturan notifikasi diperbarui" msgid "dashboard.notifications.password-saved" msgstr "Berhasil menyimpan kata sandi!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Lihat notifikasi" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s anggota" @@ -861,7 +861,7 @@ msgstr "Anda sekarang seorang pemilik di tim ini." msgid "dashboard.permissions-change.viewer" msgstr "Anda sekarang seorang peninjau di tim ini." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Semat/Lepas semat" @@ -898,7 +898,7 @@ msgstr "Anda bukan merupakan bagian dari tim “%s” lagi." msgid "dashboard.save-settings" msgstr "Simpan pengaturan" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Cari…" @@ -978,7 +978,7 @@ msgstr "Notifikasi" msgid "dashboard.show-all-files" msgstr "Tampilkan semua berkas" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Riwayat versi" @@ -1000,7 +1000,7 @@ msgstr[0] "Berkas Anda berhasil digandakan" msgid "dashboard.success-duplicate-project" msgstr "Proyek Anda berhasil digandakan" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Berkas Anda berhasil dipindah" @@ -1012,15 +1012,15 @@ msgstr "Berkas Anda berhasil dipindah" msgid "dashboard.success-move-project" msgstr "Proyek Anda berhasil dipindah" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Info tim" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Anggota tim" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Proyek tim" @@ -1040,7 +1040,7 @@ msgstr "Hasil pencarian" msgid "dashboard.type-something" msgstr "Ketik untuk mencari hasil" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Batal Penerbitan Pustaka" @@ -1048,39 +1048,39 @@ msgstr "Batal Penerbitan Pustaka" msgid "dashboard.update-settings" msgstr "Perbarui pengaturan" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Tanpa batasan kreativitas" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Gratis" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Aktif" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Ketika kaitan ini dipicu detail peristiwa akan dikirim" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Anda hanya dapat menghapus atau mengubah webhook yang dibuat oleh Anda." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Jenis konten" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Buat kaitan web" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Kaitan web berhasil dibuat." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Kaitan web (webhook) adalah cara yang sederhana untuk memperbolehkan situs " @@ -1088,11 +1088,11 @@ msgstr "" "di Penpot. Kami mengirim permintaan POST untuk setiap URL yang Anda " "sediakan." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Klik tombol \"Tambahkan kaitan web\" untuk menambahkan." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Tidak ada kaitan web yang dibuat sejauh ini." @@ -1112,7 +1112,7 @@ msgstr "Surel" msgid "dashboard.your-name" msgstr "Nama Anda" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Penpot Anda" @@ -1128,15 +1128,15 @@ msgstr "Peringatan" msgid "ds.component-subtitle" msgstr "Komponen untuk diperbarui:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Perbolehkan" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Batal" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Oke" @@ -1176,7 +1176,7 @@ msgstr "Melebihi batas karakter" msgid "errors.clipboard-not-implemented" msgstr "Peramban Anda tidak dapat melakukan operasi ini" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "Tidak dapat melepaskan set induk ke jalur anak sendiri." @@ -1196,11 +1196,11 @@ msgstr "Anda tidak dapat menggunakan surel Anda sebagai kata sandi" msgid "errors.email-domain-not-allowed" msgstr "Domain tidak diperbolehkan" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Surel “%s” memiliki banyak laporan lompatan permanen." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "Surel “%s” telah dilaporkan sebagai spam atau lompatan permanen." @@ -1214,11 +1214,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Fitur '%s' tidak didukung." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "Harus berisi setidaknya 1 karakter." - #, unused msgid "errors.field-min-length" msgstr "Harus berisi setidaknya 1 karakter." @@ -1239,7 +1234,7 @@ msgstr "" "berkas yang sedang Anda buka. Migrasi untuk '%s' harus diterapkan sebelum " "berkasnya dapat dibuka." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Sesuatu yang salah terjadi." @@ -1281,11 +1276,11 @@ msgstr "Undangan ini mungkin dibatalkan atau telah kedaluwarsa." msgid "errors.ldap-disabled" msgstr "Autentikasi LDAP dinonaktifkan." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Anda telah meraih kutipan '%s'. Hubungi dukungan." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Jumlah email maksimum (%s) yang dapat diundang dalam satu permintaan telah " @@ -1303,7 +1298,7 @@ msgstr "Serpertinya konten gambar tidak cocok dengan ekstensi berkas." msgid "errors.media-type-not-allowed" msgstr "Sepertinya ini bukan gambar yang valid." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Profil yang Anda undang membisukan surel (laporan spam atau lompatan " @@ -1331,7 +1326,7 @@ msgstr "Data tidak valid dalam papan klip" msgid "errors.profile-blocked" msgstr "Profil diblokir" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "Profil Anda membisukan surel (laporan spam atau lompatan tinggi)." @@ -1343,33 +1338,33 @@ msgstr "Pendaftaran saat ini dinonaktifkan." msgid "errors.team-feature-mismatch" msgstr "Fitur '%s' tidak kompatibel terdeteksi" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Anggota tidak cukup untuk meninggalkan tim, Anda mungkin ingin menghapusnya " "saja." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Anggota yang Anda mencoba untuk memberikan peran tidak ada." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Pemilik tidak dapat meninggalkan tim, Anda harus memberikan ulang peran " "pemilik." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Set dengan nama yang sama sudah ada" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "" "Tidak dapat menyelesaikan drop, set dengan nama yang sama sudah ada di " "jalur ini." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Opsi Tema dengan nama yang sama sudah ada" @@ -1389,31 +1384,31 @@ msgstr "Kesalahan Validasi" msgid "errors.version-not-supported" msgstr "Berkas memiliki nomor versi tidak kompatibel" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Kesalahan koneksi, URL tidak dapat diraih" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL tidak melewati validasi." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Pengiriman terakhir tidak berhasil." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Terjadi kesalahan pada validasi SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Waktu habis" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Terjadi kesalahan tidak terduga saat memvalidasi" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Status %s tidak diduga" @@ -1478,19 +1473,19 @@ msgstr "Sebuah kesalahan telah terjadi" msgid "inspect.attributes.blur" msgstr "Buram" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Nilai" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1498,7 +1493,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Isian" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Unduh gambar sumber" @@ -1592,67 +1587,70 @@ msgstr "Padat" msgid "inspect.attributes.stroke.width" msgstr "Lebar" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografi" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Keluarga Fon" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Ukuran Fon" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Gaya Fon" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Berat Fon" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Spasi Huruf" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Tinggi Garis" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Dekorasi Teks" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Tidak ada" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Garis bawah" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformasi Teks" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Huruf Judul" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Huruf Kecil" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Tidak ada" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Tidak ditetapkan" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Huruf Besar" @@ -1660,17 +1658,17 @@ msgstr "Huruf Besar" msgid "inspect.attributes.variant" msgstr "Properti varian" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Jika Anda ingin mengetahui lebih lanjut tentang inspeksi desain kunjungi " "pusat bantuan Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Lebih banyak info tentang inspeksi" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Pilih bentuk, papan, atau grup untuk menginskpeksi properti dan kodenya" @@ -1738,11 +1736,11 @@ msgstr "Teks" msgid "inspect.tabs.info" msgstr "Info" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Tandai semua sebagai terbaca" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Pintasan" @@ -1754,11 +1752,11 @@ msgstr "Terima" msgid "labels.access-tokens" msgstr "Token akses" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktif" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Tambahkan" @@ -1766,11 +1764,11 @@ msgstr "Tambahkan" msgid "labels.add-custom-font" msgstr "Tambahkan fon khusus" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Menambahkan..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Admin" @@ -1778,7 +1776,7 @@ msgstr "Admin" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Semua" @@ -1801,7 +1799,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Gerbang Jalur Buruk" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Batal" @@ -1809,11 +1807,11 @@ msgstr "Batal" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Tutup" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Tutup" @@ -1825,11 +1823,11 @@ msgstr "Komentar" msgid "labels.comment.mark-as-solved" msgstr "Tandau sebagai selesai" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Komentar" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Komunitas" @@ -1837,7 +1835,7 @@ msgstr "Komunitas" msgid "labels.confirm-password" msgstr "Konfirmasi kata sandi" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Lanjutkan" @@ -1853,11 +1851,11 @@ msgstr "Anda dapat melanjutkan dengan sebuah akun Penpot" msgid "labels.copy" msgstr "Salin" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Salin warna" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Salin tautan" @@ -1865,7 +1863,7 @@ msgstr "Salin tautan" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Buat" @@ -1885,7 +1883,7 @@ msgstr "Fon khusus" msgid "labels.dashboard" msgstr "Dasbor" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Hapus" @@ -1897,7 +1895,7 @@ msgstr "Hapus komentar" msgid "labels.delete-comment-thread" msgstr "Hapus utasan" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Hapus undangan" @@ -1914,15 +1912,15 @@ msgstr "Pengembang" msgid "labels.director" msgstr "Direktur" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Abaikan" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Draf" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Sunting" @@ -1930,7 +1928,7 @@ msgstr "Sunting" msgid "labels.edit-file" msgstr "Sunting berkas" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Penyunting" @@ -1939,11 +1937,11 @@ msgstr "Penyunting" msgid "labels.event" msgstr "Acara" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Kedaluwarsa" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Ekspor" @@ -1971,7 +1969,7 @@ msgstr "Penyedia fon" msgid "labels.font-variants" msgstr "Gaya" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fon" @@ -1985,11 +1983,11 @@ msgstr "CEO atau Pendiri" msgid "labels.freelancer" msgstr "Saya seorang pekerja lepas" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repositori GitHub" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Berikan masukan" @@ -2001,7 +1999,7 @@ msgstr "Kembali" msgid "labels.graphic-design" msgstr "Desain grafis" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Pusat Bantuan" @@ -2009,15 +2007,15 @@ msgstr "Pusat Bantuan" msgid "labels.hide" msgstr "Sembunyikan" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Sembunyikan komentar yang telah diselesaikan" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Impor" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Tidak Aktif" @@ -2039,7 +2037,7 @@ msgstr "Kesalahan Internal" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Undangan" @@ -2047,7 +2045,7 @@ msgstr "Undangan" msgid "labels.language" msgstr "Bahasa" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Pustaka & Templat" @@ -2063,7 +2061,7 @@ msgstr "Masuk atau daftar" msgid "labels.login" msgstr "Masuk" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Keluar" @@ -2071,11 +2069,11 @@ msgstr "Keluar" msgid "labels.marketing" msgstr "Pemasaran" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Anggota" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Anggota" @@ -2087,15 +2085,15 @@ msgstr "Sebutkan" msgid "labels.new-password" msgstr "Kata sandi baru" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Berikutnya" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Anda telah melihat semuanya! Notifikasi komentar baru akan muncul di sini." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Tidak ada undangan yang menunggu." @@ -2114,7 +2112,7 @@ msgstr "Aduh!" msgid "labels.notifications" msgstr "Notifikasi" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "%s berkas" @@ -2124,7 +2122,7 @@ msgid "labels.num-of-frames" msgid_plural "labels.num-of-frames" msgstr[0] "%s papan" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "%s proyek" @@ -2142,7 +2140,7 @@ msgstr "Kata sandi lama" msgid "labels.only-yours" msgstr "Hanya Anda" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Opsi" @@ -2158,7 +2156,7 @@ msgstr "Lainnya (jelaskan)" msgid "labels.other-short" msgstr "Lainnya" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Pemilik" @@ -2166,7 +2164,7 @@ msgstr "Pemilik" msgid "labels.password" msgstr "Kata sandi" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Ditunda" @@ -2190,7 +2188,7 @@ msgstr "Pengelolaan Produk" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Proyek" @@ -2198,7 +2196,7 @@ msgstr "Proyek" msgid "labels.refresh" msgstr "Muat ulang" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Catatan rilis" @@ -2212,11 +2210,11 @@ msgstr "Muat ulang berkas" msgid "labels.remove" msgstr "Hapus" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Keluarkan anggota" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Ubah nama" @@ -2244,7 +2242,7 @@ msgstr "balasan baru" msgid "labels.reply.thread" msgstr "Balas" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Kirim ulang undangan" @@ -2256,15 +2254,15 @@ msgstr "Pulihkan" msgid "labels.retry" msgstr "Coba lagi" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Peran" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Simpan" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Cari" @@ -2292,11 +2290,11 @@ msgstr "Kami dalam pemeliharaan yang telah diprogram untuk sistem kami." msgid "labels.service-unavailable.main-message" msgstr "Layanan Tidak Tersedia" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Set" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Pengaturan" @@ -2308,7 +2306,7 @@ msgstr "Bagikan" msgid "labels.share-prototype" msgstr "Bagikan prototipe" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Pustaka" @@ -2316,7 +2314,7 @@ msgstr "Pustaka" msgid "labels.show" msgstr "Tampilkan" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Tampilkan semua komentar" @@ -2324,11 +2322,11 @@ msgstr "Tampilkan semua komentar" msgid "labels.show-comments-list" msgstr "Tampilkan daftar komentar" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Hanya tampilkan sebutan Anda" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Hanya tampilkan komentar Anda" @@ -2340,7 +2338,7 @@ msgstr "Sketch" msgid "labels.start" msgstr "Mulai" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" @@ -2362,11 +2360,11 @@ msgstr "Anggota tim" msgid "labels.themes" msgstr "Tema" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutorial" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Kesalahan tidak diketahui" @@ -2394,15 +2392,15 @@ msgstr "Unggah fon khusus" msgid "labels.uploading" msgstr "Mengunggah…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "TAMPILAN SAJA" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Pelihat" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Kaitan web" @@ -2410,11 +2408,11 @@ msgstr "Kaitan web" msgid "labels.write-new-comment" msgstr "Tulis komentar baru" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(Anda)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Akun Anda" @@ -2445,7 +2443,7 @@ msgstr "Desain secara fleksibel dengan kontrol tata letak seperti CSS." #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Tata Letak Otomatis seperti CSS" +msgstr "Tata Letak seperti CSS" #: src/app/main/ui/ds/product/loader.cljs:27 msgid "loader.tips.04.message" @@ -2505,23 +2503,23 @@ msgstr "Tingkatkan Penpot dengan plugin dari komunitas untuk fungsi tambahan." msgid "loader.tips.10.title" msgstr "Dukungan Plugin" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Pilih gambar" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Gradien" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Gambar" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "gambar" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Jaga rasio aspek" @@ -2539,7 +2537,7 @@ msgstr "Memuat gambar…" msgid "media.radial" msgstr "Radial" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Padat" @@ -2614,19 +2612,19 @@ msgstr "Buat token" msgid "modals.create-access-token.title" msgstr "Buat token baru" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Buat kaitan web" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Buat kaitan web" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL Muatan" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://contoh.co.id/terimapos" @@ -2674,11 +2672,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Hapus percakapan" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Apakah Anda yakin ingin menghapus anotasi ini?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Haus anotasi" @@ -2726,11 +2724,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Menghapus fon" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Apakah Anda yakin ingin menghapus halaman ini?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Hapus halaman" @@ -2771,29 +2769,29 @@ msgid "modals.delete-shared-confirm.title" msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Menghapus berkas" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Hapus tim" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Apakah Anda yakin ingin menghapus tim ini? Semua proyek dan berkas terkait " "dengan tim akan dihapus secara permanen." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Menghapus tim" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Keluarkan anggota" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Apakah Anda yakin ingin mengeluarkan anggota ini dari tim?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Keluarkan anggota tim" @@ -2804,57 +2802,57 @@ msgstr[0] "" "Aset yang telah digunakan dalam berkas akan tetap di sana (tidak ada desain " "yang akan rusak)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Hapus kaitan web" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Apakah Anda yakin ingin menghapus kaitan web ini?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Menghapus kaitan web" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Sunting kaitan web" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Sunting kaitan web" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Kirim undangan" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Surel, dipisah dengan koma" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Beberapa surel berasal dari anggota tim saat ini. Undangan mereka tidak " "akan dikirim." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Anda dapat mengundang anggota ke tim supaya mereka dapat mengakses berkas " "ini dan semua berkas tim." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Undang anggota ke tim" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Karena Anda anggota satu-satunya dari tim ini, tim akan dihapus beserta " "proyek dan berkasnya." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Apakah Anda yakin ingin meninggalkan tim %s?" @@ -2882,15 +2880,15 @@ msgstr "Pilih seorang anggota untuk dipromosikan" msgid "modals.leave-and-reassign.title" msgstr "Sebelum Anda tinggal" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Tinggalkan tim" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Apakah Anda ingin meninggalkan tim ini?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Meninggalkan tim" @@ -2909,39 +2907,39 @@ msgid "modals.move-shared-confirm.title" msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Pindahkan pustaka" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Jumlah dorongan" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Transfer kemilikan" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Jika Anda mentransfer kemilikan, Anda akan mengubah peran Anda ke Admin, " "dan kehilangan beberapa izin pada tim ini. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Anda saat ini adalah pemilik dari tim ini. Apakah Anda yakin ingin membuat " "%s sebagai pemilik tim ini?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Pemilik tim baru" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Terbitkan" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Pustaka Anda sedang kosong. Apakah Anda ingin menerbitkannya?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Terbitkan pustaka kosong" @@ -2993,21 +2991,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Perbarui komponen dalam pustaka terbagi" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Perbarui" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Batal" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Anda akan memperbarui sebuah komponen dalam sebuah pustaka terbagi. Ini " "mungkin memengaruhi berkas lain yang menggunakannya." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Perbarui sebuah komponen dalam sebuah pustaka terbagi" @@ -3119,11 +3117,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Versi baru sudah tersedia, silakan muat ulang laman" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Undangan berhasil dikirim" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Tautan undangan disalin" @@ -3277,7 +3275,7 @@ msgstr "" "Pastikan untuk menyertakan semuanya. Pengembang, pendesain, pengelola... " "keragaman bertambah :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Undang dengan peran:" @@ -3497,193 +3495,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Pergi ke log masuk" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Copot" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Tercampur" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Hapus warna" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Pilih item menggunakan gaya ini" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Dasar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Dasbor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Pelihat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Ruang Kerja" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Penyesuaian" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Sunting" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Generik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Generik" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu utama" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Ubah lapisan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigasi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigasi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigasi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Jejak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Bentuk" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Teks" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Peralatan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Komentar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Tambahkan simpul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Sesuaikan ke bawah" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Paskan ke tengah" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Sesuaikan ke tengah secara horizontal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Paskan secara rata" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Sesuaikan ke kiri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Sesuaikan ke kanan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Sesuaikan ke atas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Sesuaikan ke tengah secara vertikal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Buat papan dari seleksi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Tebal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Perbedaan boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Pengecualian boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Berpotongan boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Serikat boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Turunkan ke paling belakang" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Turunkan ke belakang" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Naikkan ke atas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Naikkan ke paling atas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Hapus urungan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Salin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Salin tautan ke papan klip" @@ -3692,287 +3690,271 @@ msgstr "Salin tautan ke papan klip" msgid "shortcuts.copy-props" msgstr "Salin properti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Buat baru" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Potong" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Perkecil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Hapus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Hapus simpul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Lepaskan komponen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Kurva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipss" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Papan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Gambar jalur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Jalur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Persegi Panjang" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Teks" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Gandakan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Batal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Ekspor bentuk" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Zum untuk muat semua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Balikkan secara horizontal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Balikkan secara vertikal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Kurangi ukuran fon" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Tambahkan ukuran fon" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Pergi ke draf" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Pergi ke pustaka terbagi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Cari" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Kelompok" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribusikan secara horizontal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Tampilkan/sembunyikan antarmuka" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Perbesar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Sematkan gambar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Miring" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Gabungkan simpul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Kurangi spasi huruf" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Tambahkan spasi huruf" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Kurangi ketinggian baris" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Tambahkan ketinggian baris" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Coret" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Buat sudut" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Buat kurva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Topeng" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Gabungkan simpul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Pindah" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Pindah ke bawah secara cepat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Pindah ke kiri secara cepat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Pindah ke kanan secara cepat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Pindah ke atas secara cepat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Pindahkan simpul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Pindah ke bawah" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Pindah ke kiri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Pindah ke kanan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Pindah ke atas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Papan berikutnya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Tidak ada pintasan yang ditemukan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Tetapkan opasitas ke 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Tetapkan opasitas ke 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Tetapkan opasitas ke 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Tetapkan opasitas ke 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Tetapkan opasitas ke 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Tetapkan opasitas ke 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Tetapkan opasitas ke 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Tetapkan opasitas ke 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Tetapkan opasitas ke 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Tetapkan opasitas ke 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Pemilih warna" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Pergi ke bagian komentar pelihat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Pergi ke dasbor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Pergi ke bagian inspeksi penampil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Pergi ke bagian interaksi pelihat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Pergi ke bagian interaksi pelihat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Pergi ke ruang kerja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " atau " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Tempelkan" @@ -3986,191 +3968,191 @@ msgstr "Tempelkan properti" msgid "shortcuts.plugins" msgstr "Pengelola plugin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Papan sebelumnya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Ulangi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Ubah nama" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Atur ulang zum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Skala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Cari pintasan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Pilih semua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Pilih lapisan berikutnya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Pilih lapisan induk" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Pilih lapisan sebelumnya" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Pisahkan simpul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Tampilkan/sembunyikan kisi piksel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Tampilkan/sembunyikan pintasan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Tancap ke simpul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Tancap ke kisi piksel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Mulai menyunting" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Mulai mengukur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Berhenti mengukur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Tetapkan gambar kecil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Pintasan papan ketik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Alih penyesuaian dinamis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Alih aset" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Alih palet warna" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Alih mode fokus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Alih layar penuh" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Tampilkan / Sembunyikan panduan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Alih riwayat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Alih lapisan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Tambahkan/hapus tata letak flex" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Tambahkan/hapus tata letak kisi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Kunci dipilih" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Kunci proporsi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Tampilkan / Sembunyikan penggaris" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Pasang ke panduan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Pasang ke panduan penggaris" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Alih palet teks" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Ubah tema" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Alih keterlihatan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Alih gaya zum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Garis bawah" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Urungkan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Lepaskan kelompok" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Lepaskan topeng" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribusikan secara vertikal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Kurangi lensa zum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Tambahkan lensa zum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zum ke terpilih" @@ -4226,19 +4208,19 @@ msgstr "Kata sandi - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Undangan - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Anggota - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Pengaturan - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Kaitan Web - %s - Penpot" @@ -4310,43 +4292,43 @@ msgstr "Tampilkan interaksi pada klik" msgid "viewer.header.sitemap" msgstr "Peta Situs" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Pengiriman terakhir berhasil." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Sesuaikan tengah horizontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribusikan spasi horizontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Sesuaikan ke kiri (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Sesuaikan ke kanan (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Sesuaikan ke bawah (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Sesuaikan ke tengah vertikal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribusikan spasi vertikal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Sesuaikan ke atas (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Tambahkan pustaka" @@ -4355,19 +4337,19 @@ msgstr "Tambahkan pustaka" msgid "workspace.assets.assets" msgstr "Aset" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Semua aset" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Warna" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Tambahkan warna" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Komponen" @@ -4375,19 +4357,19 @@ msgstr "Komponen" msgid "workspace.assets.components.add-component" msgstr "Tambahkan komponen" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Buat sebuah kelompok" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Butir Anda akan dinamakan \"nama kelompok / nama butir\" secara otomatis" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Hapus" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Gandakan" @@ -4395,11 +4377,11 @@ msgstr "Gandakan" msgid "workspace.assets.duplicate-main" msgstr "Gandakan utama" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Sunting" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Penyaring" @@ -4408,27 +4390,27 @@ msgstr "Penyaring" msgid "workspace.assets.graphics" msgstr "Grafis" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Tampilan kisi" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Kelompok" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nama kelompok" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Tampilan daftar" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "pustaka lokal" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Kelola pustaka" @@ -4440,15 +4422,15 @@ msgstr "Tidak ada aset yang ditemukan" msgid "workspace.assets.open-library" msgstr "Buka berkas pustaka" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Ubah nama" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Ubah nama kelompok" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Cari aset" @@ -4463,20 +4445,20 @@ msgstr[0] "%s aset dipilih" msgid "workspace.assets.shared-library" msgstr "Pustaka terbagi" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "%s komponen" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Urutkan" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografi" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Tambahkan tipografi" @@ -4501,7 +4483,7 @@ msgstr "Spasi Huruf" msgid "workspace.assets.typography.line-height" msgstr "Ketinggian Garis" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4513,59 +4495,59 @@ msgstr "Gaya teks" msgid "workspace.assets.typography.text-transform" msgstr "Transformasi Teks" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Lepas kelompok" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Buat area" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Buat papan" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Gabungkan sel" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Tambah 1 kolom ke kanan" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Tambah 1 kolom ke kiri" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Hapus kolom" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Hapus kolom dan bentuk" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Gandakan kolom" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Tambah 1 baris di bawah" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Tambah 1 baris di atas" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Hapus baris" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Hapus baris dan bentuk" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Gandakan baris" @@ -4573,7 +4555,7 @@ msgstr "Gandakan baris" msgid "workspace.focus.focus-mode" msgstr "Mode fokus" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Fokus nonaktif" @@ -4593,11 +4575,11 @@ msgstr "Gradien linear" msgid "workspace.gradients.radial" msgstr "Gradien radial" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Nonaktifkan penyesuaian dinamis" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Nonaktifkan skala proporsional" @@ -4606,23 +4588,23 @@ msgstr "Nonaktifkan skala proporsional" msgid "workspace.header.menu.disable-scale-text" msgstr "Nonaktifkan skala teks" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Nonaktifkan tancapan ke pemandu" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Nonaktifkan tancapan ke piksel" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Nonaktifkan pemasangan ke panduan penggaris" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Aktifkan penyesuaian dinamis" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Aktifkan skala proporsional" @@ -4631,51 +4613,51 @@ msgstr "Aktifkan skala proporsional" msgid "workspace.header.menu.enable-scale-text" msgstr "Aktifkan skala teks" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Tancapkan ke pemandu" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Aktifkan tancapkan ke piksel" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Pasang ke panduan penggaris" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Sembunyikan nama papan" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Sembunyikan panduan" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Sembunyikan palet warna" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Sembunyikan kisi piksel" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Sembunyikan penggaris" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Sembunyikan palet fon" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Sunting" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Berkas" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Bantuan & info" @@ -4684,59 +4666,59 @@ msgstr "Bantuan & info" msgid "workspace.header.menu.option.power-up" msgstr "Tingkatkan paket Anda" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferensi" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Tampilan" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Ulangi" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Pilih semua" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Tampilkan nama papan" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Tampilkan panduan" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Tampilkan palet warna" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Tampilkan kisi piksel" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Tampilkan penggaris" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Tampilkan palet fon" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Ubah ke tema gelap" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Ubah ke tema terang" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Urungkan" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Atur ulang" @@ -4752,7 +4734,7 @@ msgstr "Disimpan" msgid "workspace.header.saving" msgstr "Menyimpan" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Bagikan" @@ -4761,11 +4743,11 @@ msgstr "Bagikan" msgid "workspace.header.unsaved" msgstr "Perubahan belum disimpan" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Mode penampilan (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zum" @@ -4777,7 +4759,7 @@ msgstr "Penuhi - Ubah ukuran untuk memenuhi" msgid "workspace.header.zoom-fit" msgstr "Pas - Ubah ukuran supaya pas" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Zum supaya pas semua" @@ -4785,43 +4767,43 @@ msgstr "Zum supaya pas semua" msgid "workspace.header.zoom-full-screen" msgstr "Layar penuh" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zum ke terpilih" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Sunting kisi" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Keluar" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Padding bawah" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Tampilkan opsi bantalan 4 sisi" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Padding horizontal" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Padding kiri" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Padding kanan" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Padding atas" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Padding vertikal" @@ -4837,7 +4819,7 @@ msgstr "Selesai" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Cari lokasi" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Lokasi tata letak kisi" @@ -4846,10 +4828,6 @@ msgstr "Lokasi tata letak kisi" msgid "workspace.libraries.add" msgstr "Tambahkan" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s warna" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Belum ada gaya warna dalam pustaka Anda" @@ -4876,43 +4854,35 @@ msgstr "Warna terkini" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Pelengkap RGB" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Simpan gaya warna" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s komponen" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Atau tambahkan beberapa dari sini untuk mencoba:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "Tidak ada Pustaka Terbagi dalam tim Anda, Anda dapat melihat" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "beberapa templat di sini" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Pustaka berkas" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s grafis" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "PUSTAKA DALAM BERKAS INI" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "PUSTAKA" @@ -4921,11 +4891,11 @@ msgstr "PUSTAKA" msgid "workspace.libraries.library" msgstr "PUSTAKA" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "PEMBARUAN PUSTAKA" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Memuat…" @@ -4934,79 +4904,75 @@ msgstr "Memuat…" msgid "workspace.libraries.more-templates" msgstr "Anda dapat mencari " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Tidak ada Pustaka Terbagi yang membutuhkan pembaruan" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Tidak ada yang cocok dengan “%s”" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Cari pustaka terbagi" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "PUSTAKA TERBAGI" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Hubungkan pustaka" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Beberapa tipografi" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Lepaskan tautan dari semua tipografi" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s tipografi" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Putuskan pustaka" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Perbarui" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "lihat semua perubahan" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "PEMBARUAN" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Klik tombol + untuk menambahkan interaksi." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Tambahkan buram" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Hapus buram" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Buram" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Buram kelompok" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Buram seleksi" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Sakelar buram" @@ -5014,39 +4980,39 @@ msgstr "Sakelar buram" msgid "workspace.options.canvas-background" msgstr "Latar belakang kanvas" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Klip konten" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Komponen" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Anotasi" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Salin" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Buat anotasi" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Sunting anotasi" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Utama" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Ganti komponen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Belum ada aset dalam pustaka ini" @@ -5090,7 +5056,7 @@ msgstr "Atas" msgid "workspace.options.constraints.topbottom" msgstr "Atas & Bawah" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Desain" @@ -5103,20 +5069,20 @@ msgstr "Ekspor" msgid "workspace.options.export-multiple" msgstr "Ekspor seleksi" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Ekspor %s elemen" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Tambahkan ekspor" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Hapus ekspor" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Akhiran" @@ -5124,7 +5090,7 @@ msgstr "Akhiran" msgid "workspace.options.exporting-complete" msgstr "Pengeksporan selesai" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Mengekspor…" @@ -5136,27 +5102,27 @@ msgstr "Pengeksporan gagal" msgid "workspace.options.exporting-object-slow" msgstr "Pengeksporan secara tidak terduga lambat" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Isian" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Tambahkan warna isian" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Hapus isian" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Ubah ukuran papan untuk memuat konten" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Tambahkan awalan alur" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Alur" @@ -5165,19 +5131,19 @@ msgstr "Alur" msgid "workspace.options.flows.flow-start" msgstr "Awalan alur" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Aluran dimulai" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Hapus alur" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Otomatis" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Kolom" @@ -5186,7 +5152,7 @@ msgstr "Kolom" msgid "workspace.options.grid.grid-title" msgstr "Kisi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Warna" @@ -5195,15 +5161,15 @@ msgstr "Warna" msgid "workspace.options.grid.params.columns" msgstr "Kolom" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Selokan" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Tinggi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margin" @@ -5212,7 +5178,7 @@ msgstr "Margin" msgid "workspace.options.grid.params.rows" msgstr "Baris" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Tetapkan sebagai bawaan" @@ -5226,159 +5192,159 @@ msgstr "Ukuran" msgid "workspace.options.grid.params.type" msgstr "Jenis" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Bawah" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Tengah" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Kiri" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Kanan" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Lebarkan" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Atas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Gunakan bawaan" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Lebar" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Baris" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Kotak" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Isian kelompok" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Sapuan kelompok" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Tambahkan alur" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Hapus alur" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Panduan" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Sakelar pemandu" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Tinggi" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspeksi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Tindakan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Setelah jeda" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animasi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Larut" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Tidak ada" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Dorong" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Geser" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "otomatis" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Tambahkan hamparan latar belakang" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Tutup ketika mengeklik di luar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Tutup hamparan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Tutup hamparan: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Jeda" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Tujuan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Durasi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Pemasukan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease masuk" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease masuk keluar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease keluar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linear" @@ -5387,47 +5353,47 @@ msgstr "Linear" msgid "workspace.options.interaction-in" msgstr "Masuk" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Tetikus masuk" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Tetikus keluar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "md" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navigasi ke" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navigasi ke: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(tidak ditetapkan)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Efek ofset" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Pada Klik" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Buka hamparan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Buka hamparan: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Buka URL" @@ -5436,87 +5402,87 @@ msgstr "Buka URL" msgid "workspace.options.interaction-out" msgstr "Keluar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Tengah bawah" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Kiri bawah" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Kanan bawah" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Tengah" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manual" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Tengah atas" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Kiri atas" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Kanan atas" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Posisi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Jaga posisi gulir" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Layar sebelumnya" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relatif ke" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "diri sendiri" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Alih hamparan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Alih hamparan: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Picuan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Saat Melayang" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Saat Menekan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interaksi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Tambahkan interaksi" @@ -5525,67 +5491,67 @@ msgstr "Tambahkan interaksi" msgid "workspace.options.interactions.remove-interaction" msgstr "Hapus interaksi" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Warna" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Bakaran warna" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Penghindaran warna" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Gelapkan" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Perbedaan" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Tidak termasukan" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Cahaya keras" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Rona" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Terangkan" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Kilau" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Kalikan" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Hamparan" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturasi" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Layar" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Cahaya lembut" @@ -5604,7 +5570,7 @@ msgstr "Lapisan kelompok" msgid "workspace.options.layer-options.title.multiple" msgstr "Lapisan terpilih" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Sakelar keterlihatan lapisan" @@ -5613,19 +5579,19 @@ msgstr "Sakelar keterlihatan lapisan" msgid "workspace.options.layout-item.advanced-ops" msgstr "Opsi tingkat lanjut" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Max.Height" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Max.Width" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.Height" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.Width" @@ -5739,15 +5705,15 @@ msgstr "ruang di antara" msgid "workspace.options.layout.top" msgstr "Atas" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Lebih banyak warna" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Lebih banyak warna pustaka" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opasitas" @@ -5756,35 +5722,35 @@ msgstr "Opasitas" msgid "workspace.options.position" msgstr "Posisi" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototipe" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Radius" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Kiri bawah" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Kanan bawah" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Kiri atas" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Kanan atas" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Tutup radius tersendiri" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Buka radius tersendiri" @@ -5796,7 +5762,7 @@ msgstr "Terkini" msgid "workspace.options.retry" msgstr "Coba lagi" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotasi" @@ -5804,31 +5770,31 @@ msgstr "Rotasi" msgid "workspace.options.search-font" msgstr "Cari fon" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Pilih bentuk, papan, atau kelompok untuk menyeret koneksi ke papan lain." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Warna terpilih" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Isian seleksi" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Sapuan seleksi" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Tambahkan bayangan" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Buram" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Warna bayangan" @@ -5840,55 +5806,56 @@ msgstr "Bayangan jatuhan" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Bayangan masuk" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Hapus bayangan" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Tersebar" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Bayangan" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Bayangan kelompok" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Bayangan seleksi" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Sakelar bayangan" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Tampilkan dalam ekspor" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Tampilkan dalam mode penampil" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Ukuran" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Prasetel ukuran" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Sapuan" @@ -5897,7 +5864,7 @@ msgstr "Sapuan" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Penanda lingkaran" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Lingkaran" @@ -5906,7 +5873,7 @@ msgstr "Lingkaran" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Penanda berlian" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Berlian" @@ -5915,19 +5882,19 @@ msgstr "Berlian" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Panah garis" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Tanda panah" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Tidak ada" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Bulat" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Kotak" @@ -5936,7 +5903,7 @@ msgstr "Kotak" msgid "workspace.options.stroke-cap.square-marker" msgstr "Penanda kotak" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Persegi panjang" @@ -5945,83 +5912,83 @@ msgstr "Persegi panjang" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Panah segi tiga" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Segitiga" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Warna sapuan" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Lebar sapuan" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Tambahkan warna garis" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Tengah" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Garis" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Titik" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Dalam" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Tercampur" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Luar" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Hapus garis" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Padat" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Paskan ke bawah" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Paskan ke tengah" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Paskan ke atas" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "Kiri ke Kanan" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "Kanan ke Kiri" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Tinggi otomatis" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Lebar otomatis" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Tetap" @@ -6043,35 +6010,35 @@ msgstr "Huruf kecil" msgid "workspace.options.text-options.none" msgstr "Tidak ada" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Coret (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Paskan ke tengah" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Rata Kiri Kanan" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Paskan ke kiri" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Paskan ke kanan" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Teks" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Teks kelompok" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Teks seleksi" @@ -6080,7 +6047,7 @@ msgstr "Teks seleksi" msgid "workspace.options.text-options.titlecase" msgstr "Huruf judul" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Garis bawah (%s)" @@ -6089,19 +6056,19 @@ msgstr "Garis bawah (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Huruf Besar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Gunakan tombol main di tajuk untuk menjalankan tampilan prototipe." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Lebar" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Sumbu X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Sumbu Y" @@ -6145,78 +6112,78 @@ msgstr "Simpul terpisah (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Tancap simpul (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Buka" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Jelajahi [lebih banyak plugin](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Belum ada plugin yang terpasang" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Manifes plugin tidak benar." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Anda perlu menjadi penyunting untuk menggunakan plugin ini" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Plugin tidak ada atau URL tidak benar." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Pasang" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Plugin terpasang" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Pengelola plugin" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Plugin" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "PERBARUI PLUGIN INI" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "Plugin ini telah diubah sejak terakhir kali Anda membukanya. Ini sekarang " "memerlukan akses:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Memulai pengunduhan berkas." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Membaca komentar dan balasan Anda." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Membaca dan mengubah komentar Anda dan membalas dengan nama Anda." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Membaca konten berkas yang dapat diakses pengguna." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Membaca dan mengubah konten berkas yang dapat diakses pengguna." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Harap diingat bahwa plugin ini dibuat oleh pihak eksternal, jadi pastikan " @@ -6224,31 +6191,31 @@ msgstr "" "Anda penting bagi kami. Jika Anda memiliki masalah, silakan hubungi " "dukungan." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Membaca pustaka dan aset Anda." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Membaca dan mengubah pustaka dan aset Anda." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "PLUGIN '%s' MEMINTA AKSES:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Membaca informasi profil pengguna sasaat ini." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Daftar Plugin" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Hapus plugin" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Tuliskan URL plugin" @@ -6256,26 +6223,26 @@ msgstr "Tuliskan URL plugin" msgid "workspace.plugins.success" msgstr "Plugin dimuat dengan benar." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Plugin" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "NANTI" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Ingin melihat? Ini akan membuka dalam draf baru untuk tim Anda saat ini. " "(Jika tidak, Anda selalu dapat mencarinya dalam plugin terpasang dalam " "berkas apa pun.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "PLUGIN '%s' TERPASANG UNTUK PENGGUNA ANDA!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "COBA PLUGIN" @@ -6287,15 +6254,15 @@ msgstr "Tambahkan tata letak flex" msgid "workspace.shape.menu.add-grid" msgstr "Tambahkan tata letak kisi" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Tambahkan tata letak" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Buat varian" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "Buat properti baru" @@ -6335,7 +6302,7 @@ msgstr "Salin properti" msgid "workspace.shape.menu.copy-text" msgstr "Salin sebagai teks" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Buat anotasi" @@ -6343,11 +6310,11 @@ msgstr "Buat anotasi" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Seleksi ke papan" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Buat komponen" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Buat beberapa komponen" @@ -6355,7 +6322,7 @@ msgstr "Buat beberapa komponen" msgid "workspace.shape.menu.cut" msgstr "Potong" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Hapus" @@ -6363,15 +6330,15 @@ msgstr "Hapus" msgid "workspace.shape.menu.delete-flow-start" msgstr "Hapus awalan alur" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Lepaskan bagian" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Lepaskan bagian" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Perbedaan" @@ -6383,11 +6350,11 @@ msgstr "Gandakan" msgid "workspace.shape.menu.edit" msgstr "Sunting" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Tidak termasuk" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Ratakan" @@ -6420,19 +6387,19 @@ msgstr "Pergi ke berkas komponen utama" msgid "workspace.shape.menu.group" msgstr "Kelompok" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Sembunyikan" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Tampilkan/Sembunyikan Antarmuka" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Persimpangan" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Kunci" @@ -6440,7 +6407,7 @@ msgstr "Kunci" msgid "workspace.shape.menu.mask" msgstr "Topeng" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Tempelkan" @@ -6460,11 +6427,11 @@ msgstr "Hapus tata letak flex" msgid "workspace.shape.menu.remove-grid" msgstr "Hapus tata letak kisi" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Hapus tata letak" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "Hapus properti" @@ -6472,11 +6439,11 @@ msgstr "Hapus properti" msgid "workspace.shape.menu.rename" msgstr "Ubah nama" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Atur ulang timpaan" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Pulihkan komponen utama" @@ -6484,15 +6451,15 @@ msgstr "Pulihkan komponen utama" msgid "workspace.shape.menu.select-layer" msgstr "Pilih lapisan" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Tampilkan" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Tampilkan dalam panel aset" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Tampilkan komponen utama" @@ -6505,6 +6472,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Tetapkan sebagai gambar kecil" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformasi ke jalur" @@ -6512,11 +6480,11 @@ msgstr "Transformasi ke jalur" msgid "workspace.shape.menu.ungroup" msgstr "Lepaskan kelompok" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Serikat" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Buka kunci" @@ -6529,7 +6497,7 @@ msgstr "Buka topeng" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Perbarui komponen utama" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Perbarui komponen utama" @@ -6541,11 +6509,11 @@ msgstr "Tutup bilah samping" msgid "workspace.sidebar.expand" msgstr "Buka bilah samping" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Riwayat" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Lapisan" @@ -6585,11 +6553,11 @@ msgstr "Teks" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Atribut SVG Diimpor" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Halaman" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Tambahkan halaman" @@ -6606,23 +6574,23 @@ msgstr "%s tema aktif" msgid "workspace.tokens.add set" msgstr "Tambahkan set" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Tambahkan tema baru" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "Tambahkan set ke kelompok ini" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Diterapkan pada" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "Axis" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Kembali ke daftar tema" @@ -6634,15 +6602,15 @@ msgstr "Warna" msgid "workspace.tokens.create-new-theme" msgstr "Buat tema pertama Anda sekarang." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Buat baru." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Buat token %s baru" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Hapus token" @@ -6650,19 +6618,19 @@ msgstr "Hapus token" msgid "workspace.tokens.delete-theme-title" msgstr "Hapus tema" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Gandakan token" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "salin" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Sunting token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Sunting tema" @@ -6670,11 +6638,7 @@ msgstr "Sunting tema" msgid "workspace.tokens.edit-themes" msgstr "Sunting tema" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Sunting token" - -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Masukkan nama token %s" @@ -6682,7 +6646,7 @@ msgstr "Masukkan nama token %s" msgid "workspace.tokens.error-parse" msgstr "Kesalahan Pengimporan: Tidak dapat mengurai JSON." -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "Celah" @@ -6737,15 +6701,15 @@ msgstr "Tema" msgid "workspace.tokens.label.theme-placeholder" msgstr "Tambahkan tema (mis. Terang)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "Margin" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "Ukuran maksimal" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "Ukuran minimal" @@ -6761,7 +6725,7 @@ msgstr "Tidak ada set aktif" msgid "workspace.tokens.no-active-theme" msgstr "Tidak ada tema aktif" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Anda perlu menjadi penyunting untuk mengaktifkan / menonaktifkan set" @@ -6769,11 +6733,11 @@ msgstr "Anda perlu menjadi penyunting untuk mengaktifkan / menonaktifkan set" msgid "workspace.tokens.no-permission-themes" msgstr "Anda perlu menjadi penyunting untuk menggunakan tema" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Belum ada set yang ditetapkan. Buatlah terlebih dahulu." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Belum ada set." @@ -6797,12 +6761,12 @@ msgstr "Nilai token tidak valid. Nilai terurai terlalu besar: %s" msgid "workspace.tokens.opacity-range" msgstr "Opasitas harus antara 0 dan 100% atau 0 dan 1 (mis. 50% atau 0.5)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Nilai asli: %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "Padding" @@ -6810,7 +6774,7 @@ msgstr "Padding" msgid "workspace.tokens.radius" msgstr "Radius" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Referensi tidak valid atau tidak dalam set aktif mana pun" @@ -6819,7 +6783,7 @@ msgstr "Referensi tidak valid atau tidak dalam set aktif mana pun" msgid "workspace.tokens.reference-error" msgstr "Kesalahan Referensi: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Nilai terselesaikan: %s" @@ -6828,7 +6792,7 @@ msgstr "Nilai terselesaikan: %s" msgid "workspace.tokens.save-theme" msgstr "Simpan tema" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Pilih set." @@ -6836,11 +6800,11 @@ msgstr "Pilih set." msgid "workspace.tokens.self-reference" msgstr "Token memiliki referensi diri" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "Masukkan nama (gunakan '/' untuk grup)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "Tentukan set token apa yang digunakan sebagai bagian opsi tema ini:" @@ -6853,7 +6817,7 @@ msgstr "Token yang diatur tidak aktif" msgid "workspace.tokens.sets-hint" msgstr "Sunting tema dan kelola set" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "Ukuran" @@ -6871,16 +6835,16 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "Daftar tema" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Deskripsi" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Nama" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " bukanlah nama token yang valid.\n" @@ -6892,11 +6856,11 @@ msgstr "" msgid "workspace.tokens.token-not-resolved" msgstr "Tidak dapat mengurai token referensi dengan nama: %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Nilai" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "Masukkan nilai atau alias dengan {alias}" @@ -6904,19 +6868,19 @@ msgstr "Masukkan nilai atau alias dengan {alias}" msgid "workspace.tokens.tokens-section-title" msgstr "TOKEN - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Peralatan" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "Nilai tidak valid" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "Mengubah nama token ini akan merusak referensi nama lamanya." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Aset" @@ -6924,7 +6888,7 @@ msgstr "Aset" msgid "workspace.toolbar.color-palette" msgstr "Palet Warna (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Komentar (%s)" @@ -7135,19 +7099,19 @@ msgstr "Operasi pada %s" msgid "workspace.undo.title" msgstr "Riwayat" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Abaikan" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Info lebih lanjut" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Ada pembaruan dalam pustaka terbagi" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Perbarui" @@ -7207,11 +7171,11 @@ msgstr "Apakah Anda ingin memulihkan versi ini?" msgid "workspace.versions.snapshot-menu" msgstr "Buka menu snapshot" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Tindakan" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Riwayat" diff --git a/frontend/translations/ig.po b/frontend/translations/ig.po index a19379e9cb..8afc6dd8a3 100644 --- a/frontend/translations/ig.po +++ b/frontend/translations/ig.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: Alejandro Alonso \n" +"PO-Revision-Date: 2025-10-07 16:35+0000\n" +"Last-Translator: Anonymous \n" "Language-Team: Igbo " "\n" "Language: ig\n" @@ -9,7 +9,7 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:277 #, unused @@ -132,7 +132,7 @@ msgstr "Mepee ebe ntinye ihe" msgid "auth.sidebar-tagline" msgstr "Nsina ghere oghe iji mee nse na atụtụ" -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Ọnọdụ ọrụ" @@ -151,7 +151,7 @@ msgstr "Anyị ezigaala ozi nnyocha na" msgid "branding-illustrations-marketing-pieces" msgstr "...onyinye aha, nkọwa gasị, ngwa ire ahịa dịrị gabazịa." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "bipụta" @@ -207,7 +207,7 @@ msgstr "Sọọsọ ndị otu" msgid "common.share-link.title" msgstr "Kee atụ gasị" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Ebiputaghị" @@ -314,7 +314,7 @@ msgstr "Ọdịmara ga-emebi na%s" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "Ọdịmara enweghị ụbọchị mmebi" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Tinye dị ka ọ a nkwekọrịta" @@ -322,27 +322,27 @@ msgstr "Tinye dị ka ọ a nkwekọrịta" msgid "dashboard.change-email" msgstr "Gbanwee ozi - n" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(sere)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Mebe otu ọhụrụ" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Ite mkpịsị gị" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "kacha otu" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Butuo ederede ite mkpịsị (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Butuo ederede tozuru etozu (.svg + .json)" @@ -358,7 +358,7 @@ msgstr "Mee o yiri %s ederede" msgid "dashboard.export-binary-multi" msgstr "Butuo %s ederede ite mkpịsị (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Bupu bọọdụ dị ka PDF" @@ -488,11 +488,11 @@ msgstr "Ibugo njatụle n'ebe nkesa (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Ibugo ederede : %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Kpọta mmadụ" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Hapụ otu" @@ -504,7 +504,7 @@ msgstr "Ọba ederede gasị & ndebiri" msgid "dashboard.libraries-and-templates.explore" msgstr "Nyocha ọtụtụ n'ime ha ma mara etu ị ga-esi tinye ọnụ" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "E nwere nsogbu ibu aba ndebiri . E bubataghị ndebiri." @@ -536,7 +536,7 @@ msgstr "Gaa n'otu ọzọ" msgid "dashboard.new-file" msgstr "+ Ederede ọhụrụ" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Ederede ọhụrụ" @@ -544,7 +544,7 @@ msgstr "Ederede ọhụrụ" msgid "dashboard.new-project" msgstr "+ Nchọcha ọhụrụ" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Arụmarụ ọhụrụ" @@ -552,7 +552,7 @@ msgstr "Arụmarụ ọhụrụ" msgid "dashboard.no-matches-for" msgstr "Ọ nweghị ihe ndabara e nwetara maka “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Arụmarụ a kụdoro ga-apụta ebe a" @@ -568,7 +568,7 @@ msgstr "E nyochala adreesị ozi - n gị nke ọma" msgid "dashboard.notifications.password-saved" msgstr "E dọkwara akara mpịbanye nke ọma !" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s Ndị otu" @@ -584,7 +584,7 @@ msgstr "Nhọrọ gasị" msgid "dashboard.password-change" msgstr "Gbanwee akara mpịbanye" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Nọmba /Wepụ nọmba" @@ -605,7 +605,7 @@ msgstr "Wepụ dị ka ọba ederede nkekọrịta" msgid "dashboard.save-settings" msgstr "Dokwa ntọala" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Chọọ…" @@ -621,7 +621,7 @@ msgstr "Họrọ asụsụ UI" msgid "dashboard.success-duplicate-project" msgstr "E megharịala arụmarụ gị nke ọma\"" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "E wepula ederede gị nke ọma\"" @@ -629,15 +629,15 @@ msgstr "E wepula ederede gị nke ọma\"" msgid "dashboard.success-move-project" msgstr "E bupula arụmarụ gị nke ọma" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Ozi otu" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Ndị otu" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Arụmarụ otu" @@ -653,7 +653,7 @@ msgstr "Chọọ risọltụ gasị" msgid "dashboard.type-something" msgstr "Pinye ịchọ risọltụ" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Ọba ederede ebiputaghị" @@ -661,38 +661,38 @@ msgstr "Ọba ederede ebiputaghị" msgid "dashboard.update-settings" msgstr "Hazie ntọala" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Dị gara gara" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Mgbe a kpọlitere nkọ a, ọ ga-Ezipụta nkọwa emume n'uju" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Ụdị ndịna" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Mepe nko - ududọ" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "E mepere nko-ududọ nke ọma ." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Nko-ududọ bụ ụzọ dị mfe ga-ekwe ka ebe ududọ na apps ndị ọzọ nweta ozi Mgbe " "ụfọdụ emume na eme n'ite mkpịsị . Anyị ga e ziga OZI arịrịọ nwe URLs ọ bụla " "ị nwetara" -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Pịa mpị \"Tinye nko-ududọ \" ịtinye otu ." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "E nweghị Nko-ududọ e ebere ruo ugbu a ." @@ -708,7 +708,7 @@ msgstr "Ebe Ntinye ihe gị" msgid "dashboard.your-email" msgstr "Ozi-n" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Ite mkpịsị. gị" @@ -720,11 +720,11 @@ msgstr "Okay" msgid "ds.alert-title" msgstr "Gee ntị" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Kagbuo" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Okay" @@ -764,11 +764,11 @@ msgstr "Aha ozi-n adabala." msgid "errors.email-as-password" msgstr "Ị nweghị ike iji aha ozi-n gị dị ka akara mpịbanye" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Ozi-n «%s» nwere ọtụtụ ozi nkọwa mbịaghachigide." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "E nwela ozi nkọwa na ozi-n«%s» dị ka ozi abaghị uru ma ọ bụ mbịaghachigide." @@ -782,7 +782,7 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Akwadoghị agwara '%s' ." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Ihe ezighị ezi emela ." @@ -815,7 +815,7 @@ msgstr "This invite might be canceled or may be expired." msgid "errors.ldap-disabled" msgstr "LDAP mbinye aka agaghị ." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "I ruola '%s' ole a chọrọ . Chọọ enyemaka nkwado ." @@ -827,7 +827,7 @@ msgstr "Onyinyo a ebuka ibu maka itinye ." msgid "errors.media-type-mismatch" msgstr "Dị ka ihe dị na onyinyo adabaghị na mgbatị ederede." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Nchịkọta gị nwere ozi-n mechiri emechi (akụkọ ozi-n adịghị mma ma ọ bụ " @@ -837,7 +837,7 @@ msgstr "" msgid "errors.profile-blocked" msgstr "A gbachiri nchịkọta agbachi" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Nchịkọta gị lnwere ozi-n mechiri emechi(akụkọ ozi-n adịghị mma ma ọ bụ " @@ -847,15 +847,15 @@ msgstr "" msgid "errors.registration-disabled" msgstr "Ndebanye merụrụ emerụ ugbu a." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "Ndị otu ezughị okè ịhapụ otu, ọ nyere ike na ị chọrọ ihichapụ ya ." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Onye otu ị na-achọ inye adịghị ." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "O wee enweghị ike ịhapụ otu, ị ga-enyegharịrị ọrụ onwee." @@ -867,19 +867,19 @@ msgstr "Ndejo atughị anya ya pụtara ." msgid "errors.unexpected-token" msgstr "Ọdịmara amaghị ama" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Mmejọ, e nwetaghị URL" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL enweghị nkwado ." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Mmejọ na nkwado SSL ." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Oge ezuola" @@ -939,19 +939,19 @@ msgstr "Mmehie apụtala" msgid "inspect.attributes.blur" msgstr "Inyogo" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Uru" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -959,7 +959,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Wunye" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Butuo onyinyo nsina" @@ -1048,55 +1048,57 @@ msgstr "Akpụrụka" msgid "inspect.attributes.stroke.width" msgstr "Uhie" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Akara nkụpụta" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Ezinụlọ mkpụrụ edide" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Nhazi mkpụrụ edide" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Ndesa mkpụrụ edemede" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Ogo akara" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Nkwazi ederede" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Ncha ncha" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "N'okpuru" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Mgbanwe ederede" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Mkpụrụ edemede isiokwu" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "None" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Mkpụrụ edemede nnukwu" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Ị chọọ ị ma ihe ndị ọzọ maka nnyocha esereese, gaa n'ebe enyemaka ite " @@ -1158,7 +1160,7 @@ msgstr "Ederede" msgid "inspect.tabs.info" msgstr "Ozi" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Ụzọ mkpirisi" @@ -1170,7 +1172,7 @@ msgstr "Nabata" msgid "labels.access-tokens" msgstr "Nweta ọdịmara gasị" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Gara gara" @@ -1178,7 +1180,7 @@ msgstr "Gara gara" msgid "labels.add-custom-font" msgstr "Tinye mkpụrụ edide a haziri ahazi" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Ọchịkwa" @@ -1186,7 +1188,7 @@ msgstr "Ọchịkwa" msgid "labels.adobe-xd" msgstr "Ngwa nrụkọrịta ọrụ Adobe" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Ha niile" @@ -1203,7 +1205,7 @@ msgstr "Azụ" msgid "labels.bad-gateway.main-message" msgstr "Ajọ ụzọ mbanye" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Kagbuo" @@ -1211,15 +1213,15 @@ msgstr "Kagbuo" msgid "labels.canva" msgstr "Kanva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Megbuo" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Okwu gasị" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Ogbe" @@ -1227,7 +1229,7 @@ msgstr "Ogbe" msgid "labels.confirm-password" msgstr "Nabata akara mpịbanye" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Ga n'ihu" @@ -1239,11 +1241,11 @@ msgstr "Gaa n'ihu" msgid "labels.continue-with-penpot" msgstr "I Nwere Ike ịganihu" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Dọrọ njikọ" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Meputa" @@ -1255,7 +1257,7 @@ msgstr "Mepee otu ọhụrụ" msgid "labels.custom-fonts" msgstr "mkpụrụ edide a haziri" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Hichaa" @@ -1267,7 +1269,7 @@ msgstr "Hichaa okwu" msgid "labels.delete-comment-thread" msgstr "Hichapụ eri" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Hichapụ oku" @@ -1279,11 +1281,11 @@ msgstr "Hichapụ ederede %s" msgid "labels.developer" msgstr "Onye nrụpụta" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Ndesita" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Dezie" @@ -1291,11 +1293,11 @@ msgstr "Dezie" msgid "labels.edit-file" msgstr "Dezie ederede" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Odezi" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Mebiri" @@ -1323,7 +1325,7 @@ msgstr "Ndị na-enye mkpụrụ edide" msgid "labels.font-variants" msgstr "Ụdịdị gasị" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Mkpụrụ edide gasị" @@ -1337,11 +1339,11 @@ msgstr "Onye malitere /VP" msgid "labels.freelancer" msgstr "Onye nwere onwe ya" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Ọ a Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Nye nzaghachi" @@ -1349,15 +1351,15 @@ msgstr "Nye nzaghachi" msgid "labels.go-back" msgstr "Gaa azụ" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Ebe enyemaka" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Zoo nkwupụta e kpebiri" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Arụghị ọrụ" @@ -1377,7 +1379,7 @@ msgstr "Nrụjọ ndịnime" msgid "labels.invision" msgstr "Mmakpo" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Akwụkwọ ịkpọ ọkụ gasị" @@ -1385,7 +1387,7 @@ msgstr "Akwụkwọ ịkpọ ọkụ gasị" msgid "labels.language" msgstr "Asụsụ" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Ọba ederede na Ndebiri gasị" @@ -1393,7 +1395,7 @@ msgstr "Ọba ederede na Ndebiri gasị" msgid "labels.log-or-sign" msgstr "Banye ma ọ bụ debanye" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Pụọ" @@ -1401,11 +1403,11 @@ msgstr "Pụọ" msgid "labels.marketing" msgstr "Ịzụ ahịa" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Onye otu" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Ndị otu" @@ -1413,15 +1415,15 @@ msgstr "Ndị otu" msgid "labels.new-password" msgstr "Akara mpịbanye ọhụrụ" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Ọzọ" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "E jidere unu niile! Ngosi nkwupụta ọhụrụ ga-apụta ebe a ." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "E nweghị ọkụ na-echere" @@ -1451,7 +1453,7 @@ msgstr "ma ọ bụ" msgid "labels.other" msgstr "Ọzọ (zipụta)" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Onye nwe" @@ -1459,7 +1461,7 @@ msgstr "Onye nwe" msgid "labels.password" msgstr "Akara mpịbanye" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Na-echere" @@ -1471,11 +1473,11 @@ msgstr "Onye njikwa ngwaahịa ma ọ bụ arụmarụ" msgid "labels.profile" msgstr "Nchịkọta" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Ọrụ gasị" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Wepụta ndetu" @@ -1489,11 +1491,11 @@ msgstr "Bugharịa ederede" msgid "labels.remove" msgstr "Wepu" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Wepụ onye otu" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Nyegharịa aha" @@ -1505,11 +1507,11 @@ msgstr "Nyegharịa otu" msgid "labels.retry" msgstr "Nwagharịa" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Ọrụ" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Dokwa" @@ -1529,15 +1531,15 @@ msgstr "Ziga" msgid "labels.sending" msgstr "Na-eziga…" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Ntọala" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Ọba ederede" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Gosi nkwupụta niile" @@ -1545,7 +1547,7 @@ msgstr "Gosi nkwupụta niile" msgid "labels.show-comments-list" msgstr "Gosi ndepụta nkwupụta gasị" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Gosi nanị nkwupụta gị gasị" @@ -1557,7 +1559,7 @@ msgstr "Eserese" msgid "labels.start" msgstr "Bido" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Ọnọdụ" @@ -1565,7 +1567,7 @@ msgstr "Ọnọdụ" msgid "labels.student-teacher" msgstr "Nwata akwụkwọ ma ọ bụ onye nkụzi" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Nkuzi" @@ -1593,15 +1595,15 @@ msgstr "Bugo ederede gasị ahaziri" msgid "labels.uploading" msgstr "Na-ebugo…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Sọọsọ nkiri" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Ndị nkiri" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Nko-ududọ" @@ -1609,11 +1611,11 @@ msgstr "Nko-ududọ" msgid "labels.write-new-comment" msgstr "Dee nkwupụta ọhụrụ" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(gị)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Akara mbata gị" @@ -1666,19 +1668,19 @@ msgstr "Create token" msgid "modals.create-access-token.title" msgstr "Mepụta ọdịmara nweta" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Mebe nko - ududo" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Mebe nko-ududo" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Isi ozi URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://ọmụmaaụ.com/ozi anabara" @@ -1720,11 +1722,11 @@ msgstr "Ọ kara gị obi na ị chọrọ ị hichapụ mkparịtaụka a?" msgid "modals.delete-comment-thread.title" msgstr "Hichaa mkparịtaụka" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Ọ kara gị obi na ị chọrọ ị hichapụ nkọwa ?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Hichapụ nkọwa" @@ -1748,11 +1750,11 @@ msgstr "Na-ehichapụ ederede %s" msgid "modals.delete-font.title" msgstr "Na-ehichapụ mkpụrụ edide" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Ọ kara gị obi na ị chọrọ ị hichapụ ihu akwụkwọ a?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Hichapụ ihu akwụkwọ" @@ -1768,75 +1770,75 @@ msgstr "Ọ kara gị obi na ị chọrọ ị hichapụ arụmarụ ?" msgid "modals.delete-project-confirm.title" msgstr "Hichapụ arụmarụ" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Hichapụ otu" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Ọ kara gị obi na ị chọrọ ị hichapụ otu? ARỤMARỤ na ederede nille gasị " "gbasara otú ga-ehichapụ kpam kpam" -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Na-ehichapụ otu" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Hichapụ onye otu" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Ọ kara gị obi na ị chọrọ ị hichapụ onye otu n'otu a?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Hichapụ onye otu" -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Hichapụ nko-ududọ" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Ọ kara gị obi na ị chọrọ ị hichapụ nko-ududọ ?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Na-ehichapụ nko-ududo" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Dezie nko-ududo" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Dezie nko-ududo" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Ziga akwụkwọ ozi mkpọta" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Ozi-n gasị, Rịkọm e kewara" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "Ụfọdụ ozi n sitere na ndị ugbu a A gaghị e ịga akwụkwọ ozi mkpọta ha" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "kpọta ndị otu n'otu a" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Etu ị bụ sọọ otu onye otu , a ga e hichapụ otu a ya n'ọrụ na ederede ya " "gasịits projects and files." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Ọ kara gị obi na ị chọrọ ịhapụ otu %s ?" @@ -1864,47 +1866,47 @@ msgstr "Họrọ onye otu maka ịkwalite" msgid "modals.leave-and-reassign.title" msgstr "Tupu ị hapụ" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Hapụ otu" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Ọ kara gị obi na ịchọrọ ịhapụ otu ?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Nhapụ otu" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "ọnụ ọgụgụ nkpatụ" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Ọ bụrụ na Inyefe onwunwe , ị ga-agbanwe ọrụ gị ka ọchikwa, ụfọdụ ikikere " "n'isi ndị otu na-efu " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "G bụ onye nwe otu a ugbu a, Ọ doro gị anya na ị chọrọ ime%s Onye ọhụrụ nwe " "otu a?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Onye nwe otu ọhụrụ" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Biputa" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Your library is empty. Are you sure you want to publish it?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Biputa ọba ederede efu" @@ -1941,11 +1943,11 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Update components in a shared library" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Hazigharịa" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Kagbuo" @@ -2060,7 +2062,7 @@ msgstr "" "Cheta ka itinye onye ọ bụla Ndị nzụlite, ndị nrụpụta, ndị njikwa... dị iche " "iche adds up :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "kpọta tinye ọrụ :" @@ -2151,19 +2153,15 @@ msgstr "Bido osise" msgid "profile.recovery.go-to-login" msgstr "Gaa na mbanye" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Wega ebe azụ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Mkpị" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Leta mmụba oghere" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Nyado" @@ -2172,7 +2170,7 @@ msgstr "Nyado" msgid "viewer.breaking-change.message" msgstr "Ndo" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Kachapụ" @@ -2184,7 +2182,7 @@ msgstr "Umezi nlekwasa anya" msgid "workspace.focus.focus-on" msgstr "Gbanye nlekwasa anya" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Mee ọtụtụ akọrọngwa ga" @@ -2192,6 +2190,6 @@ msgstr "Mee ọtụtụ akọrọngwa ga" msgid "workspace.toolbar.color-palette" msgstr "Agba[ Palette (Na narị)" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "E nwegasịrị nhazizigharị nime ọba ederede ga e kere eke" diff --git a/frontend/translations/it.po b/frontend/translations/it.po index 120628de98..9924edb306 100644 --- a/frontend/translations/it.po +++ b/frontend/translations/it.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Nicola Bortoletto \n" -"Language-Team: Italian " -"\n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -178,7 +178,7 @@ msgstr "La soluzione open source per il design e la prototipazione." msgid "auth.terms-and-privacy-agreement" msgstr "Accetto i [termini di servizio](%s) e la [politica sulla privacy](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Condizioni di servizio" @@ -205,7 +205,7 @@ msgstr "…branding, illustrazione, materiali di marketing, etc." msgid "comments.mentions.not-found" msgstr "Nessuna persona trovata per @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Pubblica" @@ -277,7 +277,7 @@ msgstr "Condividi i prototipi" msgid "common.share-link.view-all" msgstr "Seleziona tutto" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Rimuovi pubblicazione" @@ -400,7 +400,7 @@ msgstr "Il token non ha una data di scadenza" msgid "dashboard.add-file" msgstr "Aggiungi file" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Aggiungi come libreria condivisa" @@ -408,31 +408,31 @@ msgstr "Aggiungi come libreria condivisa" msgid "dashboard.change-email" msgstr "Cambia indirizzo e-mail" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copia)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Crea un nuovo team" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Appunta questa versione" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Il tuo Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Elimina team" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Scarica il file Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Scarica il file standard (.svg + .json)" @@ -516,7 +516,7 @@ msgstr "Inizia a creare cose straordinarie" msgid "dashboard.export-binary-multi" msgstr "Scarica %s file Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Esporta le tavole da disegno in PDF" @@ -532,7 +532,7 @@ msgstr "Esporta %s file Penpot" msgid "dashboard.export-multiple.selected" msgstr "%s di %s elementi selezionati" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Esporta" @@ -750,11 +750,11 @@ msgstr "Caricamento dei dati sul server (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Caricamento file: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Invita nel team" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Abbandona il team" @@ -762,7 +762,7 @@ msgstr "Abbandona il team" msgid "dashboard.libraries-and-templates" msgstr "Librerie e modelli" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "Ecco alcune librerie e modelli che puoi aggiungere al tuo progetto" @@ -770,7 +770,7 @@ msgstr "Ecco alcune librerie e modelli che puoi aggiungere al tuo progetto" msgid "dashboard.libraries-and-templates.explore" msgstr "Esplorane di più e scopri come contribuire" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "" "Si è verificato un problema nell'importazione del modello. Il modello non è " @@ -808,7 +808,7 @@ msgstr "Sposta in un altro team" msgid "dashboard.new-file" msgstr "+ Nuovo File" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Nuovo File" @@ -816,7 +816,7 @@ msgstr "Nuovo File" msgid "dashboard.new-project" msgstr "+ Nuovo progetto" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nuovo progetto" @@ -824,11 +824,11 @@ msgstr "Nuovo progetto" msgid "dashboard.no-matches-for" msgstr "Nessuna corrispondenza trovata per \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "I progetti appuntati appariranno qui" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Notifiche" @@ -840,7 +840,7 @@ msgstr "Il tuo indirizzo e-mail è stato aggiornato con successo" msgid "dashboard.notifications.email-verified-successfully" msgstr "Il tuo indirizzo e-mail è stato verificato con successo" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Impostazioni di notifica aggiornate" @@ -848,11 +848,11 @@ msgstr "Impostazioni di notifica aggiornate" msgid "dashboard.notifications.password-saved" msgstr "La password è stata salvata con successo!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Visualizza notifiche" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s membri" @@ -884,7 +884,7 @@ msgstr "Ora sei il proprietario di questo team." msgid "dashboard.permissions-change.viewer" msgstr "Ora sei un visualizzatore di questo team." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Appunta/Rimuovi" @@ -921,7 +921,7 @@ msgstr "Non fai più parte del team \"%s\"." msgid "dashboard.save-settings" msgstr "Salva impostazioni" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Cerca…" @@ -1013,7 +1013,7 @@ msgstr "Notifiche" msgid "dashboard.show-all-files" msgstr "Mostra tutti i file" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Cronologia versione" @@ -1037,7 +1037,7 @@ msgstr[1] "I tuoi file sono stati duplicati con successo" msgid "dashboard.success-duplicate-project" msgstr "Il tuo progetto è stato duplicato con successo" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Il tuo file è stato spostato con successo" @@ -1049,15 +1049,15 @@ msgstr "I tuoi file sono stati spostati con successo" msgid "dashboard.success-move-project" msgstr "Il tuo progetto è stato spostato con successo" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Informazioni sul team" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Membri del team" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Progetti del team" @@ -1077,7 +1077,7 @@ msgstr "Risultati della ricerca" msgid "dashboard.type-something" msgstr "Scrivi per cercare" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Annulla pubblicazione libreria" @@ -1085,50 +1085,50 @@ msgstr "Annulla pubblicazione libreria" msgid "dashboard.update-settings" msgstr "Aggiorna le impostazioni" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Nessun limite alla creatività" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Gratis" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "È attivo" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Quando questo webhook viene attivato verranno inviati i dati dell'evento" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Puoi solo eliminare o modificare i webhook creati da te." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Tipo di contenuto" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Crea webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook creato con successo." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "I webhook sono un modo semplice per consentire ad altri siti web e app di " "essere notificati quando si verificano determinati eventi su Penpot. " "Invieremo una richiesta POST a ciascuno degli URL che fornisci." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Premi il bottone \"Aggiungi webhook\" per aggiungerne uno." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Nessun webhook presente." @@ -1148,7 +1148,7 @@ msgstr "E-mail" msgid "dashboard.your-name" msgstr "Il tuo nome" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Il tuo Penpot" @@ -1164,15 +1164,15 @@ msgstr "Attenzione" msgid "ds.component-subtitle" msgstr "Componenti da aggiornare:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Acconsenti" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Annulla" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1180,6 +1180,26 @@ msgstr "Ok" msgid "ds.confirm-title" msgstr "Sei sicuro?" +#: src/app/main/ui/ds/controls/numeric_input.cljs:98 +msgid "ds.inputs.numeric-input.no-applicable-tokens" +msgstr "Nessun token applicabile nei set o temi attivi." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:99 +msgid "ds.inputs.numeric-input.no-matches" +msgstr "Nessuna corrispondenza trovata." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 +msgid "ds.inputs.numeric-input.open-token-list-dropdown" +msgstr "Apri elenco token" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 +msgid "ds.inputs.token-field.detach-token" +msgstr "Scollega token" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 +msgid "ds.inputs.token-field.no-active-token-option" +msgstr "Questo token non è disponibile in nessun set o tema attivo." + #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" msgstr "Provider di autenticazione non consentito per questo profilo" @@ -1234,7 +1254,7 @@ msgstr "Anche se Penpot non supporta più questo tipo di risorse, puoi" msgid "errors.deprecated.contact.text" msgstr "contattarci" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "" "Impossibile rilasciare un set genitore in un percorso appartenente a un " @@ -1252,15 +1272,19 @@ msgstr "Indirizzo e-mail già convalidato." msgid "errors.email-as-password" msgstr "Non è possibile utilizzare il tuo indirizzo e-mail come password" +#: src/app/main/ui/auth/register.cljs:89 +msgid "errors.email-does-not-match-invitation" +msgstr "L’email non corrisponde all’invito." + #: src/app/main/data/auth.cljs:316, src/app/main/ui/auth/register.cljs:95 msgid "errors.email-domain-not-allowed" msgstr "Dominio non consentito" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "L'email «%s» ha molti report di rimbalzi permanenti." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "L'e-mail \"%s\" è stata riportata come spam o respinta in modo permanente." @@ -1274,10 +1298,9 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "La funzione '%s' non è supportata." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused +#: src/app/main/ui/workspace/tokens/management/create/form.cljs msgid "errors.field-max-length" -msgstr "Deve contenere al massimo 1 carattere." +msgstr "Deve contenere al massimo %s caratteres." #, unused msgid "errors.field-min-length" @@ -1299,7 +1322,7 @@ msgstr "" "file che stai cercando di aprire. È necessario applicare le migrazioni per " "'%s' prima di poter aprire il file." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Si è verificato un problema." @@ -1349,11 +1372,11 @@ msgstr "Questo è invito può essere stato revocato o può essere scaduto." msgid "errors.ldap-disabled" msgstr "Autenticazione LDAP disabilitata." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Hai raggiunto la quota '%s'. Contatta il supporto." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "È stato raggiunto il massimo numero di email (%s) che possono essere " @@ -1373,7 +1396,7 @@ msgstr "" msgid "errors.media-type-not-allowed" msgstr "L'immagine non sembra valida." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Il profilo che stai invitando ha le email disattivate (rapporti di spam o " @@ -1409,7 +1432,7 @@ msgstr "Dati non validi negli appunti" msgid "errors.profile-blocked" msgstr "Questo profilo è bloccato" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Il tuo profilo ha le email disattivate (rapporti di spam o alti tassi di " @@ -1427,23 +1450,23 @@ msgstr "L'SVG non è valido o è danneggiato" msgid "errors.team-feature-mismatch" msgstr "Rilevata funzione incompatibile '%s'" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Il numero di membri non è sufficiente per abbandonare il team. " "Probabilmente lo vuoi eliminare." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Il membro che stai provando ad assegnare non esiste." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Il proprietario non può abbandonare il team. Devi riassegnare il ruolo di " "proprietario." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Esiste già un set con lo stesso nome" @@ -1452,13 +1475,13 @@ msgstr "Esiste già un set con lo stesso nome" msgid "errors.token-set-doesnt-exists" msgstr "Impossibile duplicare un set sconosciuto" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "" "Impossibile completare il rilascio: esiste già un set con lo stesso nome in " "questo percorso." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Esiste già un'opzione tema con lo stesso nome" @@ -1486,31 +1509,31 @@ msgstr "Questa versione è bloccata e non può essere eliminata da altri" msgid "errors.version-not-supported" msgstr "Il file ha un numero di versione incompatibile" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Errore di connessione, l'URL è irraggiungibile" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "L'URL non ha superato la validazione." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Errore nell'ultimo invio." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Errore nella validazione SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Timeout" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Errore inaspettato durante la validazione" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Stato inaspettato %s" @@ -1575,7 +1598,7 @@ msgstr "Si è verificato un errore" msgid "inspect.attributes.blur" msgstr "Sfocatura" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Valore" @@ -1583,15 +1606,15 @@ msgstr "Valore" msgid "inspect.attributes.color" msgstr "Colore" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1599,7 +1622,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Riempimento" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Scarica l'immagine sorgente" @@ -1693,35 +1716,37 @@ msgstr "Solido" msgid "inspect.attributes.stroke.width" msgstr "Larghezza" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografia" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Famiglia di caratteri" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Dimensione del carattere" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Stile del carattere" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Peso del carattere" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Spaziatura delle lettere" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Interlinea" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Decorazioni testo" @@ -1729,35 +1754,36 @@ msgstr "Decorazioni testo" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "Barrato" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Nessuno" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Sottolineato" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Trasforma Testo" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Prime lettere maiuscole" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Minuscolo" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Nessuno" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Annulla impostazione" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Maiuscolo" @@ -1769,17 +1795,17 @@ msgstr "Proprietà della variante" msgid "inspect.attributes.variants" msgstr "Proprietà delle varianti" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Per ulteriori informazioni su l'ispezione, visita il centro di supporto di " "Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Maggiori informazioni sull'ispezione" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Seleziona una forma, una tavola da disegno o un gruppo per ispezionare le " @@ -1845,15 +1871,23 @@ msgstr "SVG" msgid "inspect.tabs.code.selected.text" msgstr "Testo" +#: src/app/main/ui/inspect/right_sidebar.cljs:109 +msgid "inspect.tabs.computed" +msgstr "Calcolato" + #: src/app/main/ui/inspect/right_sidebar.cljs:114 msgid "inspect.tabs.info" msgstr "Informazione" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/inspect/right_sidebar.cljs:165 +msgid "inspect.tabs.switcher.label" +msgstr "Informazioni livello" + +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Contassegna tutto come letto" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Scorciatoie" @@ -1865,11 +1899,11 @@ msgstr "Accetto" msgid "labels.access-tokens" msgstr "Token di accesso" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Attivo" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Aggiungi" @@ -1877,11 +1911,11 @@ msgstr "Aggiungi" msgid "labels.add-custom-font" msgstr "Aggiungi un carattere personalizzato" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Aggiungendo…" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Amministratore" @@ -1889,7 +1923,7 @@ msgstr "Amministratore" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Tutti" @@ -1912,7 +1946,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Gateway non corretto" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Annulla" @@ -1920,11 +1954,11 @@ msgstr "Annulla" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Chiudi" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Comprimi" @@ -1936,11 +1970,11 @@ msgstr "Commenta" msgid "labels.comment.mark-as-solved" msgstr "Segna come risolto" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Commenti" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Community" @@ -1948,7 +1982,7 @@ msgstr "Community" msgid "labels.confirm-password" msgstr "Conferma la password" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continua" @@ -1964,11 +1998,11 @@ msgstr "Puoi continuare con un account Penpot" msgid "labels.copy" msgstr "Copia" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Copia colore" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Copia link" @@ -1976,7 +2010,7 @@ msgstr "Copia link" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Crea" @@ -1996,7 +2030,7 @@ msgstr "Caratteri personalizzati" msgid "labels.dashboard" msgstr "Pannello di controllo" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Elimina" @@ -2008,7 +2042,7 @@ msgstr "Elimina il commento" msgid "labels.delete-comment-thread" msgstr "Elimina il thread" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Elimina l'invito" @@ -2025,19 +2059,19 @@ msgstr "Sviluppo" msgid "labels.director" msgstr "Direttore" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Scarta" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Bozze" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "Duplica" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Modifica" @@ -2045,11 +2079,11 @@ msgstr "Modifica" msgid "labels.edit-file" msgstr "Modifica il file" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Redattore" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "Vuoto" @@ -2062,11 +2096,11 @@ msgstr "Errore" msgid "labels.event" msgstr "Evento" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Scaduto" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Esporta" @@ -2094,7 +2128,7 @@ msgstr "Fornitori di caratteri" msgid "labels.font-variants" msgstr "Stili" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Font" @@ -2108,11 +2142,11 @@ msgstr "Amministratore delegato e Fondatore" msgid "labels.freelancer" msgstr "Libero professionista" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repository Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Dai la tua opinione" @@ -2124,7 +2158,7 @@ msgstr "Torna indietro" msgid "labels.graphic-design" msgstr "Graphic design" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Supporto" @@ -2132,15 +2166,15 @@ msgstr "Supporto" msgid "labels.hide" msgstr "Nascondi" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Non mostrare i commenti risolti" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Importa" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inattivo" @@ -2162,7 +2196,7 @@ msgstr "Errore interno" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Inviti" @@ -2170,7 +2204,7 @@ msgstr "Inviti" msgid "labels.language" msgstr "Lingua" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Librerie e modelli" @@ -2190,7 +2224,7 @@ msgstr "Connettiti o iscriviti" msgid "labels.login" msgstr "Accesso" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Disconnetti" @@ -2198,11 +2232,11 @@ msgstr "Disconnetti" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Membro" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Membri" @@ -2210,23 +2244,27 @@ msgstr "Membri" msgid "labels.mention" msgstr "Menziona" +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 +msgid "labels.mixed-values" +msgstr "Misto" + #: src/app/main/ui/settings/password.cljs:84 msgid "labels.new-password" msgstr "Nuova password" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Successivo" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Non ci sono notifiche di commenti in attesa." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Non ci sono inviti." -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "Raduna le persone e costruite grandi cose insieme." @@ -2243,7 +2281,7 @@ msgstr "Ops!" msgid "labels.notifications" msgstr "Notifiche" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 file" @@ -2255,7 +2293,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 tavola da disegno" msgstr[1] "%s tavole da disegno" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 progetto" @@ -2274,7 +2312,7 @@ msgstr "Vecchia password" msgid "labels.only-yours" msgstr "Solo tuoi" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Opzioni" @@ -2290,7 +2328,7 @@ msgstr "Altro (specifica)" msgid "labels.other-short" msgstr "Altro" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Proprietario" @@ -2298,10 +2336,14 @@ msgstr "Proprietario" msgid "labels.password" msgstr "Password" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "In attesa" +#: src/app/main/ui/dashboard/sidebar.cljs:751 +msgid "labels.pinned-projects" +msgstr "Progetti in evidenza" + #: src/app/main/ui/comments.cljs:679 msgid "labels.post" msgstr "Pubblica" @@ -2322,7 +2364,7 @@ msgstr "Gestione del prodotto" msgid "labels.profile" msgstr "Profilo" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Progetti" @@ -2330,7 +2372,7 @@ msgstr "Progetti" msgid "labels.refresh" msgstr "Ricarica" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Note di versione" @@ -2344,11 +2386,11 @@ msgstr "Ricarica file" msgid "labels.remove" msgstr "Rimuovi" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Rimuovi membro" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Rinomina" @@ -2376,7 +2418,7 @@ msgstr "nuova risposta" msgid "labels.reply.thread" msgstr "Rispondi" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Invia di nuovo l'invito" @@ -2388,15 +2430,15 @@ msgstr "Ricarica file" msgid "labels.retry" msgstr "Riprova" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Ruolo" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Salva" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Cerca" @@ -2424,11 +2466,11 @@ msgstr "Stiamo effettuando la manutenzione programmata dei nostri sistemi." msgid "labels.service-unavailable.main-message" msgstr "Servizio non disponibile" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Set" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Configurazione" @@ -2440,7 +2482,7 @@ msgstr "Condividi" msgid "labels.share-prototype" msgstr "Condividi il prototipo" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Librerie condivise" @@ -2448,7 +2490,7 @@ msgstr "Librerie condivise" msgid "labels.show" msgstr "Mostra" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Mostra tutti i commenti" @@ -2456,11 +2498,11 @@ msgstr "Mostra tutti i commenti" msgid "labels.show-comments-list" msgstr "Mostra la lista dei commenti" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Mostra solo le tue menzioni" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Mostra solo i tuoi commenti" @@ -2468,11 +2510,15 @@ msgstr "Mostra solo i tuoi commenti" msgid "labels.sketch" msgstr "Sketch" +#: src/app/main/ui/dashboard/sidebar.cljs:730 +msgid "labels.sources" +msgstr "Fonti" + #: src/app/main/ui/onboarding/questions.cljs:55 msgid "labels.start" msgstr "Inizia" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Stato" @@ -2494,11 +2540,11 @@ msgstr "Membro del team" msgid "labels.themes" msgstr "Temi" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutorial" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Errore sconosciuto" @@ -2530,15 +2576,15 @@ msgstr "Carica caratteri personalizzati" msgid "labels.uploading" msgstr "Caricamento…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Solo visualizzazione" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Visualizzatore" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhook" @@ -2546,11 +2592,11 @@ msgstr "Webhook" msgid "labels.write-new-comment" msgstr "Scrivi un nuovo commento" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(tu)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Il tuo account" @@ -2581,7 +2627,7 @@ msgstr "Progetta in modo flessibile con controlli di layout simili al CSS." #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Layout automatico simile al CSS" +msgstr "Layouts simile al CSS" #: src/app/main/ui/ds/product/loader.cljs:27 msgid "loader.tips.04.message" @@ -2643,23 +2689,23 @@ msgstr "" msgid "loader.tips.10.title" msgstr "Supporto Plugin" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Scegli un'immagine" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Gradiente" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Immagine" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "Img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Mantieni proporzioni" @@ -2677,7 +2723,7 @@ msgstr "Caricamento dell'immagine…" msgid "media.radial" msgstr "Radiale" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Solido" @@ -2752,19 +2798,19 @@ msgstr "Crea token" msgid "modals.create-access-token.title" msgstr "Genera token di accesso" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Crea webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Crea webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL del payload" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2812,11 +2858,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Elimina conversazione" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Sei sicuro di voler eliminare questa annotazione?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Elimina annotazione" @@ -2862,11 +2908,11 @@ msgstr "Eliminare questo carattere? Se è usato in un file, non verrà caricato. msgid "modals.delete-font.title" msgstr "Eliminazione carattere" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Eliminare questa pagina?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Elimina pagina" @@ -2912,29 +2958,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Eliminazione del file" msgstr[1] "Eliminazione dei file" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Elimina team" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Eliminare questo team? Tutti i progetti e i file associati con questo team " "verranno cancellati permanentemente." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Eliminazione del team in corso" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Elimina membro" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Eliminare questo membro dal team?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Elimina membro del team" @@ -2948,55 +2994,55 @@ msgstr[1] "" "Le risorse già utilizzare in questi file rimarranno lì (nessun design verrà " "compromesso)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Elimina webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Sei sicuro di voler eliminare questo webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Eliminazione del webhook in corso" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Modifica webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Modifica webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Invia invito" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Email, separate da virgole" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "Alcuni membri sono già nel team. Inviteremo i restanti." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Puoi invitare membri nel team affinché possano accedere a questo file e a " "tutti i file del team." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Invita membri al team" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Poiché sei il solo membro di questo team, il team verrà eliminato insieme " "ai sui file e progetti." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Lasciare il team di %s?" @@ -3024,15 +3070,15 @@ msgstr "Seleziona un membro da promuovere" msgid "modals.leave-and-reassign.title" msgstr "Prima di uscire" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Lascia il team" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Vuoi lasciare questo team?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Lasciando il team" @@ -3054,39 +3100,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Sposta libreria" msgstr[1] "Sposta librerie" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Ampiezza scatto" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Trasferisci proprietà" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Trasferendo la proprietà, il tuo ruolo diverrà quello di Admin, perdendo " "alcuni privilegi su questo team. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Sei l'attuale proprietario di questo team. Trasferire la proprietà del team " "a %s?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Nuovo proprietario del team" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Pubblica" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "La tua libreria è vuota. Sei sicuro di volerla pubblicare?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Pubblica libreria vuota" @@ -3141,21 +3187,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Aggiorna componenti in una libreria condivisa" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Aggiorna" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Cancella" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Stai per aggiornare un componente in una libreria condivisa. Questo " "potrebbe causare modifiche nei file che la utilizzano." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Aggiorna un componente in una libreria condivisa" @@ -3267,11 +3313,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Una nuova versione è disponibile, si prega di ricaricare la pagina" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Invito inviato con successo" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Link d'invito copiato" @@ -3419,7 +3465,7 @@ msgstr "" "Non dimenticarti di includere ogni tipo di persona. Programmatori, " "designers, responsabili... la diversità si somma :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Invita con il ruolo:" @@ -3639,193 +3685,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Vai all'accesso" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Scollega" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Misto" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Rimuovi colore" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Seleziona gli elementi che utilizzano questo stile" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Nozioni di base" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Pannello di controllo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Visualizzatore" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Area di lavoro" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Allineamento" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Modifica" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Generico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Generico" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu principale" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modifica livelli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigazione" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigazione" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigazione" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Pannelli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Tracciati" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Forme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Testi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Strumenti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Commenti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Aggiungi nodo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Allinea in basso" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Allinea al centro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Allinea al centro orizzontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Allinea giustificato" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Allinea a sinistra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Allinea a destra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Allinea in alto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Allinea al centro verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Crea una tavola da disegno a partire dalla selezione" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Attiva/Disattiva grassetto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Differenza" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Escludi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Interseca" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Unisci" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Porta sotto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Porta dietro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Porta avanti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Porta in primo piano" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Pulisci cronologia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Copia link negli appunti" @@ -3834,287 +3880,271 @@ msgstr "Copia link negli appunti" msgid "shortcuts.copy-props" msgstr "Copia proprietà" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Crea nuovo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Taglia" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Zoom indietro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Elimina" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Elimina nodo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Scollega componente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Ellisse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Tavola da disegno" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Disegna tracciato" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Tracciato" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rettangolo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Testo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplica" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Annulla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Esporta forme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Adatta zoom a tutto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Capovolgi orizzontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Capovolgi verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Riduci dimensione carattere" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Aumenta dimensione carattere" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Vai alle bozze" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Vai alle librerie condivise" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Cerca" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Raggruppa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribuisci orizzontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Mostra / Nascondi UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Aumenta zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Inserisci immagine" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Attiva/Disattiva corsivo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Unisci nodi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Diminuisci spaziatura tra le lettere" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Aumenta spaziatura tra le lettere" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Diminuisci interlinea" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Aumenta interlinea" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Attiva/disattiva testo barrato" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Crea angolo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Crea curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maschera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Fondi nodi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Sposta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Sposta rapidamente in basso" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Sposta rapidamente a sinistra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Sposta rapidamente a destra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Sposta rapidamente in alto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Sposta nodo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Sposta in basso" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Sposta a sinistra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Sposta a destra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Sposta in alto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Tavola da disegno successiva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Nessuna scorciatoia trovata" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Imposta opacità al 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Imposta opacità al 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Imposta opacità al 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Imposta opacità al 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Imposta opacità al 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Imposta opacità al 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Imposta opacità al 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Imposta opacità al 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Imposta opacità all'80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Imposta opacità al 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Selettore colore" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Vai alla sezione commenti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Vai al pannello di controllo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Vai alla sezione di ispezione" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Vai alla sezione interazioni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Vai alla sezione interazioni del visualizzatore" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Vai all'area di lavoro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " o " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Incolla" @@ -4128,191 +4158,191 @@ msgstr "Incolla proprietà" msgid "shortcuts.plugins" msgstr "Gestore plugin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Tavola da disegno precedente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Ripeti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Rinomina" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Reimposta zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Ridimensiona" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Scorciatoie di ricerca" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Seleziona tutto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Seleziona livello successivo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Seleziona livello genitore" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Seleziona livello precedente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Separa nodi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Mostra/Nascondi griglia pixel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Mostra/Nascondi scorciatoie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Aggancia ai nodi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Aggancia alla griglia pixel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Inizia a modificare" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Avvia misurazione" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Interrompi misurazione" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Imposta miniature" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Scorciatoie da tastiera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Attiva/Disattiva allineamento dinamico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Attiva/Disattiva risorse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Attiva/Disattiva palette colori" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Attiva/Disattiva modalità focus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Attiva/Disattiva schermo intero" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Mostra/Nascondi guide" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Attiva/Disattiva cronologia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Attiva/Disattiva livelli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Aggiungi / Rimuovi layout flex" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Aggiungi / Rimuovi layout grid" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Blocca/Sblocca" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Blocca proporzioni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Mostra/Nascondi righelli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Aggancia alle guide" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Aggancia alle guide del righello" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Attiva/Disattiva palette testi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Cambia tema" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Mostra/Nascondi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Attiva/Disattiva stile zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Attiva/Disattiva sottolineatura" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Annulla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Separa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Rimuovi maschera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribuisci verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Diminuire lo zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Aumentare lo zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zoom su selezione" @@ -4320,6 +4350,17 @@ msgstr "Zoom su selezione" msgid "subscription.dashboard.power-up.enterprise-plan" msgstr "Piano Enterprise" +#: src/app/main/ui/dashboard/subscription.cljs:85 +msgid "subscription.dashboard.power-up.enterprise-trial.top-title" +msgstr "Piano Enterprise (prova)" + +#: src/app/main/ui/dashboard/subscription.cljs:64 +#, markdown +msgid "subscription.dashboard.power-up.professional.bottom-text" +msgstr "" +"Ottieni spazio extra, recupero file e altro per i tuoi team con il piano " +"Unlimited. [Potenzia ora!|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:63 msgid "subscription.dashboard.power-up.professional.top-title" msgstr "Piano Professional" @@ -4344,6 +4385,14 @@ msgstr "Piano Unlimited (versione di prova)" msgid "subscription.dashboard.power-up.unlimited-plan" msgstr "Piano Unlimited" +#: src/app/main/ui/dashboard/subscription.cljs:78 +#, markdown +msgid "subscription.dashboard.power-up.unlimited.bottom-text" +msgstr "" +"Ottieni spazio illimitato, recupero file esteso ed editor illimitati per " +"tutti i tuoi team, ad un prezzo fisso. [Dai un’occhiata al piano " +"Enterprise.|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:70 #, unused msgid "subscription.dashboard.power-up.unlimited.cta" @@ -4360,11 +4409,48 @@ msgstr "" msgid "subscription.dashboard.power-up.your-subscription" msgstr "Il tuo abbonamento:" +#: src/app/main/ui/dashboard/subscription.cljs:168 +msgid "subscription.dashboard.professional-dashboard-cta-title" +msgstr "" +"Hai %s editor nei team di tua proprietà, mentre il tuo piano Professional " +"ne copre fino a 8." + +#: src/app/main/ui/dashboard/subscription.cljs:176 +#, markdown +msgid "subscription.dashboard.professional-dashboard-cta-upgrade-owner" +msgstr "" +"Esegui subito l’upgrade a Unlimited o Enterprise per sbloccare più editor, " +"spazio di archiviazione e recupero file. [Abbonati ora.|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:111 msgid "subscription.dashboard.team-plan" msgstr "Piano del team" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/subscription.cljs:171 +msgid "subscription.dashboard.unlimited-dashboard-cta-title" +msgstr "" +"Il tuo team continua a crescere! Il tuo piano Unlimited copre fino a %s " +"editor, ma ora ne hai %s." + +#: src/app/main/ui/dashboard/subscription.cljs:179 +#, markdown +msgid "subscription.dashboard.unlimited-dashboard-cta-upgrade-owner" +msgstr "" +"Esegui subito l’upgrade per adeguarti al numero attuale di editor. " +"[Abbonati ora.|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:156 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-text" +msgstr "" +"Solo i nuovi editor nei team di tua proprietà verranno conteggiati per la " +"fatturazione futura. Rimane valido un costo fisso di 175 $/mese per oltre " +"25 editor." + +#: src/app/main/ui/dashboard/subscription.cljs:152 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-title" +msgstr "Invita persone con il piano Unlimited" + +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "Potenzia" @@ -4384,6 +4470,10 @@ msgstr "Tutti i vantaggi del piano Professional e:" msgid "subscription.settings.benefits.all-unlimited-benefits" msgstr "Tutti i vantaggi del piano Unlimited e:" +#: src/app/main/ui/settings/subscription.cljs:39 +msgid "subscription.settings.editors" +msgstr "(x %s editor)" + #: src/app/main/ui/dashboard/subscription.cljs:119, src/app/main/ui/settings/subscription.cljs:72, src/app/main/ui/settings/subscription.cljs:346, src/app/main/ui/settings/subscription.cljs:399, src/app/main/ui/settings/subscription.cljs:449 msgid "subscription.settings.enterprise" msgstr "Enterprise" @@ -4392,16 +4482,51 @@ msgstr "Enterprise" msgid "subscription.settings.enterprise-trial" msgstr "Enterprise (versione di prova)" +#: src/app/main/ui/settings/subscription.cljs:393, src/app/main/ui/settings/subscription.cljs:403, src/app/main/ui/settings/subscription.cljs:455 +msgid "subscription.settings.enterprise.autosave" +msgstr "Versioni di salvataggio automatico a 90 giorni e recupero file" + +#: src/app/main/ui/settings/subscription.cljs:394, src/app/main/ui/settings/subscription.cljs:404, src/app/main/ui/settings/subscription.cljs:456 +msgid "subscription.settings.enterprise.capped-bill" +msgstr "Fattura mensile fissa" + +#: src/app/main/ui/settings/subscription.cljs:392, src/app/main/ui/settings/subscription.cljs:402, src/app/main/ui/settings/subscription.cljs:454 +msgid "subscription.settings.enterprise.unlimited-storage-benefit" +msgstr "Spazio di archiviazione illimitato" + #: src/app/main/ui/dashboard/subscription.cljs:124, src/app/main/ui/settings/subscription.cljs:371, src/app/main/ui/settings/subscription.cljs:383, src/app/main/ui/settings/subscription.cljs:395, src/app/main/ui/settings/subscription.cljs:405 msgid "subscription.settings.manage-your-subscription" msgstr "Gestisci il tuo abbonamento" +#: src/app/main/ui/settings/subscription.cljs:131 +msgid "subscription.settings.management.dialog.currently-editors-title" +msgid_plural "subscription.settings.management.dialog.currently-editors-title" +msgstr[0] "Attualmente hai %s persona nei tuoi team che può modificare." +msgstr[1] "Attualmente hai %s persone nei tuoi team che possono modificare." + #: src/app/main/ui/settings/subscription.cljs:149 msgid "subscription.settings.management.dialog.downgrade" msgstr "" "Attenzione: passare a un piano inferiore significa meno spazio di " "archiviazione e backup e cronologia delle versioni più brevi." +#: src/app/main/ui/settings/subscription.cljs:133 +msgid "subscription.settings.management.dialog.editors" +msgstr "Editor" + +#: src/app/main/ui/settings/subscription.cljs:138 +msgid "subscription.settings.management.dialog.editors-explanation" +msgstr "" +"(Proprietari, Amministratore ed Editor. I Visualizzatori non vengono " +"considerati Editor)" + +#: src/app/main/ui/settings/subscription.cljs:181 +msgid "subscription.settings.management.dialog.input-error" +msgstr "" +"Non puoi impostare un numero di editor inferiore a quello attuale. Modifica " +"il ruolo (editor/admin in visualizzatore) per le persone che non modificano " +"effettivamente i file nelle impostazioni del team." + #: src/app/main/ui/settings/subscription.cljs:177 msgid "subscription.settings.management.dialog.payment-explanation" msgstr "(Non verrà effettuato nessun pagamento in questo momento)" @@ -4415,6 +4540,12 @@ msgstr "$7 per editor/mese x %s" msgid "subscription.settings.management.dialog.title" msgstr "Applica %s ai tuoi team" +#: src/app/main/ui/settings/subscription.cljs:184 +msgid "subscription.settings.management.dialog.unlimited-capped-warning" +msgstr "" +"Suggerimento: puoi aumentare ora il numero di posti per anticipare gli " +"inviti. Con oltre 25 editor nei team, pagherai un costo fisso di 175 $/mese." + #: src/app/main/ui/settings/subscription.cljs:418 msgid "subscription.settings.member-since" msgstr "Membro Penpot dal %s" @@ -4439,6 +4570,18 @@ msgstr "organizzazione per mese" msgid "subscription.settings.professional" msgstr "Professional" +#: src/app/main/ui/settings/subscription.cljs:360, src/app/main/ui/settings/subscription.cljs:427 +msgid "subscription.settings.professional.autosave-benefit" +msgstr "Versioni di salvataggio automatico a 7 giorni e recupero file" + +#: src/app/main/ui/settings/subscription.cljs:359, src/app/main/ui/settings/subscription.cljs:426 +msgid "subscription.settings.professional.storage-benefit" +msgstr "10GB di spazio di archiviazione" + +#: src/app/main/ui/settings/subscription.cljs:361, src/app/main/ui/settings/subscription.cljs:428 +msgid "subscription.settings.professional.teams-editors-benefit" +msgstr "Team illimitati. Fino a 8 editor nei team di tua proprietà." + #: src/app/main/ui/settings/subscription.cljs:355 msgid "subscription.settings.section-plan" msgstr "Il tuo abbonamento" @@ -4457,6 +4600,10 @@ msgstr "" "Puoi modificare il tuo abbonamento in qualsiasi momento tramite la pagina " "'Abbonamento' nei dettagli del tuo account." +#: src/app/main/ui/settings/subscription.cljs:238 +msgid "subscription.settings.success.dialog.thanks" +msgstr "Grazie per aver scelto il piano Penpot %s!" + #: src/app/main/ui/settings/subscription.cljs:240 msgid "subscription.settings.sucess.dialog.footer" msgstr "Goditi il tuo piano!" @@ -4482,14 +4629,41 @@ msgstr "Illimitato" msgid "subscription.settings.unlimited-trial" msgstr "Unlimited (prova)" +#: src/app/main/ui/settings/subscription.cljs:369, src/app/main/ui/settings/subscription.cljs:381, src/app/main/ui/settings/subscription.cljs:441 +msgid "subscription.settings.unlimited.autosave-benefit" +msgstr "Versioni di salvataggio automatico a 30 giorni e recupero file" + #: src/app/main/ui/settings/subscription.cljs:370, src/app/main/ui/settings/subscription.cljs:382, src/app/main/ui/settings/subscription.cljs:442 msgid "subscription.settings.unlimited.bill" msgstr "Fattura mensile con tetto massimo" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/settings/subscription.cljs:368, src/app/main/ui/settings/subscription.cljs:380, src/app/main/ui/settings/subscription.cljs:440 +msgid "subscription.settings.unlimited.storage-benefit" +msgstr "25GB di spazio di archiviazione" + +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "Potenzia il tuo piano" +#: src/app/main/ui/workspace/sidebar/versions.cljs:56 +#, markdown +msgid "subscription.workspace.versions.warning.enterprise.subtext-owner" +msgstr "Se desideri aumentare questo limite, scrivici a [%s](mailto)" + +#: src/app/main/ui/workspace/sidebar/versions.cljs:58 +#, markdown +msgid "subscription.workspace.versions.warning.subtext-member" +msgstr "" +"Se desideri aumentare questo limite, scrivi al proprietario del team " +"[%s](mailto)" + +#: src/app/main/ui/workspace/sidebar/versions.cljs:57 +#, markdown +msgid "subscription.workspace.versions.warning.subtext-owner" +msgstr "" +"Se desideri aumentare questo limite, [esegui l'upgrade del tuo " +"piano|target:self](%s)" + #: src/app/main/ui/dashboard/files.cljs:180 msgid "title.dashboard.files" msgstr "%s - Penpot" @@ -4542,19 +4716,19 @@ msgstr "Password - Penpot" msgid "title.settings.profile" msgstr "Profilo - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Inviti - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Membri - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Impostazioni - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhook - %s - Penpot" @@ -4626,43 +4800,43 @@ msgstr "Mostra interazioni al click" msgid "viewer.header.sitemap" msgstr "Sitemap" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "L'ultimo invio è avvenuto con successo." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Allinea orizzontalmente al centro (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribuisci spaziatura orizzontale (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Allinea a sinistra (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Allinea a destra (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Allinea in basso (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Allinea verticalmente al centro (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribuisci spaziatura verticale (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Allinea in alto (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Aggiungi libreria" @@ -4671,19 +4845,23 @@ msgstr "Aggiungi libreria" msgid "workspace.assets.assets" msgstr "Risorse" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Tutte le risorse" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Colori" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Aggiungi colore" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:81 +msgid "workspace.assets.component-group-options" +msgstr "Opzioni gruppo componenti" + +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Componenti" @@ -4691,25 +4869,25 @@ msgstr "Componenti" msgid "workspace.assets.components.add-component" msgstr "Aggiungi componente" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s Varianti" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Crea un gruppo" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "I tuoi elementi verrano rinominati automaticamente come \"Nome gruppo / " "nome elemento\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Elimina" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplica" @@ -4717,11 +4895,11 @@ msgstr "Duplica" msgid "workspace.assets.duplicate-main" msgstr "Duplica principale" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Modifica" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filtra" @@ -4730,27 +4908,27 @@ msgstr "Filtra" msgid "workspace.assets.graphics" msgstr "Grafiche" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Vista a griglia" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Gruppo" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nome gruppo" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Vista a elenco" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "libreria locale" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Gestisci libreria" @@ -4762,15 +4940,15 @@ msgstr "Nessuna risorsa trovata" msgid "workspace.assets.open-library" msgstr "Apri file libreria" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Rinomina" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Rinomina gruppo" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Cerca risorse" @@ -4786,21 +4964,21 @@ msgstr[1] "%s elementi selezionati" msgid "workspace.assets.shared-library" msgstr "Librerie condivise" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 componente" msgstr[1] "%s componenti" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Ordina" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Elementi tipografici" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Aggiungi elemento tipografico" @@ -4825,7 +5003,7 @@ msgstr "Spaziatura tra lettere" msgid "workspace.assets.typography.line-height" msgstr "Interlinea" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4837,59 +5015,59 @@ msgstr "Stili di testo" msgid "workspace.assets.typography.text-transform" msgstr "Trasforma testo" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Separa" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Crea area" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Crea tavola da disegno" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Unisci celle" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Aggiungi 1 colonna a destra" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Aggiungi 1 colonna a sinistra" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Elimina colonna" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Elimina colonna e forme" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Duplica colonna" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Aggiungi 1 riga sotto" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Aggiungi 1 riga sopra" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Elimina riga" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Elimina riga e forme" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Duplica riga" @@ -4897,7 +5075,7 @@ msgstr "Duplica riga" msgid "workspace.focus.focus-mode" msgstr "Modalità focus" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Disattiva modalità focus" @@ -4917,11 +5095,11 @@ msgstr "Gradiente lineare" msgid "workspace.gradients.radial" msgstr "Gradiente radiale" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Disattiva allineamento dinamico" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Disattiva ridimensionamento proporzionale" @@ -4930,23 +5108,23 @@ msgstr "Disattiva ridimensionamento proporzionale" msgid "workspace.header.menu.disable-scale-text" msgstr "Disattiva ridimensionamento testo" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Disattiva allineamento a guide" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Disattiva allineamento al pixel" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Disattiva allineamento alle guide righello" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Attiva allineamento dinamico" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Attiva ridimensionamento proporzionale" @@ -4955,51 +5133,51 @@ msgstr "Attiva ridimensionamento proporzionale" msgid "workspace.header.menu.enable-scale-text" msgstr "Attiva ridimensionamento testo" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Allinea alle guide" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Attiva allineamento al poxel" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Allinea alle guide righello" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Nascondi nomi delle tavole da disegno" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Nascondi guide" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Nascondi palette colori" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Nascondi griglia pixel" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Nascondi righelli" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Nascondi palette caratteri" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Modifica" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "File" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Aiuto e informazioni" @@ -5008,63 +5186,63 @@ msgstr "Aiuto e informazioni" msgid "workspace.header.menu.option.power-up" msgstr "Migliora il tuo piano" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferenze" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Visualizza" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Ripeti" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Seleziona tutto" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Mostra nomi delle tavole da disegno" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Mostra guide" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Mostra palette colori" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Mostra griglia pixel" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Mostra righelli" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Mostra palette caratteri" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Passa al tema scuro" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Passa al tema chiaro" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "Passa al tema di sistema" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Annulla" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Reimposta" @@ -5080,7 +5258,7 @@ msgstr "Salvato" msgid "workspace.header.saving" msgstr "In salvataggio" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Condividi" @@ -5089,11 +5267,11 @@ msgstr "Condividi" msgid "workspace.header.unsaved" msgstr "Cambiamenti non salvati" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Modalità di visualizzazione (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zoom" @@ -5105,7 +5283,7 @@ msgstr "Riempi - Ridimensiona per riempire" msgid "workspace.header.zoom-fit" msgstr "Adatta - Riduci per adattare" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Adatta zoom a tutto" @@ -5113,43 +5291,43 @@ msgstr "Adatta zoom a tutto" msgid "workspace.header.zoom-full-screen" msgstr "Schermo intero" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zoom su selezione" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Modifica griglia" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Esci" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Padding inferiore" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Mostra opzioni di padding su 4 lati" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Padding orizzontale" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Padding sinistro" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Padding destro" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Padding superiore" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Padding verticale" @@ -5165,7 +5343,7 @@ msgstr "Fatto" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Individua" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Individua layout grid" @@ -5174,10 +5352,6 @@ msgstr "Individua layout grid" msgid "workspace.libraries.add" msgstr "Aggiungi" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s colori" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Non ci sono ancora stili di colore nella tua libreria" @@ -5204,43 +5378,35 @@ msgstr "Colori recenti" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Complementare" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Salva stile di colore" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s componenti" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "O aggiungi alcuni di questi per provare:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "Non ci sono librerie condivise nel tuo team, puoi cercare" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "alcuni modelli qui" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Libreria del file" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s grafiche" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "LIBRERIE IN QUESTO FILE" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "LIBRERIE" @@ -5249,11 +5415,11 @@ msgstr "LIBRERIE" msgid "workspace.libraries.library" msgstr "LIBRERIA" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "AGGIORNAMENTI DELLA LIBRERIA" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Caricamento…" @@ -5262,51 +5428,47 @@ msgstr "Caricamento…" msgid "workspace.libraries.more-templates" msgstr "Puoi cercare altri " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Non ci sono librerie condivise che necessitano un aggiornamento" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Nessun risultato trovato per “%s”" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Cerca librerie condivise" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "LIBRERIE CONDIVISE" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Connetti libreria" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Elementi tipografici multipli" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Scollega tutti gli elementi tipografici" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s elementi tipografici" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Disconnetti libreria" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Aggiorna" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "vedi tutti i cambiamenti" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "AGGIORNAMENTI" @@ -5314,31 +5476,31 @@ msgstr "AGGIORNAMENTI" msgid "workspace.notification-pill.detail" msgstr "Dettagli" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Clicca il bottone + per aggiungere interazioni." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Aggiungi sfocatura" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Elimina sfocatura" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Sfocatura" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Sfocatura di gruppo" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Sfocatura della selezione" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Attiva/Disattiva sfocatura" @@ -5346,74 +5508,159 @@ msgstr "Attiva/Disattiva sfocatura" msgid "workspace.options.canvas-background" msgstr "Colore di sfondo" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Ritaglia contenuto" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Componente" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Annotazione" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Copia" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Crea un'annotazione" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Modifica un'annotazione" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Principale" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Sostituisci componente" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Non ci sono ancora risorse in questa libreria" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "Scollegato" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 +msgid "workspace.options.component.variant.duplicated.copy.locate" +msgstr "Individua varianti in conflitto" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:509 +msgid "workspace.options.component.variant.duplicated.copy.title" +msgstr "" +"Questo componente ha varianti in conflitto. Verifica che ciascuna variante " +"abbia un set di valori di proprietà univoci." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 +msgid "workspace.options.component.variant.duplicated.group.locate" +msgstr "Individua varianti duplicate" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1278 +msgid "workspace.options.component.variant.duplicated.group.title" +msgstr "Alcune varianti hanno proprietà e valori identici" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:268 +msgid "workspace.options.component.variant.duplicated.single.all" +msgstr "" +"Queste varianti hanno proprietà e valori identici. Modifica i valori " +"affinché possano essere distinti." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 +msgid "workspace.options.component.variant.duplicated.single.one" +msgstr "" +"Questa variante ha proprietà e valori identici ad un'altra variante. " +"Modifica i valori affinché possano essere distinti." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 +msgid "workspace.options.component.variant.duplicated.single.some" +msgstr "" +"Alcune di queste varianti hanno proprietà e valori identici. Modifica i " +"valori affinché possano essere distinti." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +msgid "workspace.options.component.variant.malformed.copy" +msgstr "" +"Questo componente ha varianti con nomi non validi. Verifica che ogni " +"variante rispetti la struttura corretta." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "Individua varianti non valide" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "Alcune varianti hanno nomi non validi" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:502 +msgid "workspace.options.component.variant.malformed.locate" +msgstr "Individua varianti non valide" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "Queste varianti hanno nomi non validi." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "Questa variante ha un nome non valido." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "Alcune di queste varianti hanno nomi non validi." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[proprietà]=[valore], [proprietà]=[valore]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "Prova a usare la seguente struttura:" +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:54 +msgid "workspace.options.component.variants-help-modal.intro" +msgstr "" +"Per mantenere le modifiche quando si passa da una variante all’altra, " +"Penpot collega i livelli che:" + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:91 +msgid "workspace.options.component.variants-help-modal.outro" +msgstr "" +"La modifica di uno qualsiasi di questi elementi (ad es. rinominare o " +"raggruppare un livello) interrompe la connessione, ma annullando la " +"modifica verrà ripristinata." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:67 +msgid "workspace.options.component.variants-help-modal.rule1" +msgstr "Condividono lo stesso nome." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:76 +msgid "workspace.options.component.variants-help-modal.rule2" +msgstr "Sono dello stesso tipo." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:77 +msgid "workspace.options.component.variants-help-modal.rule2.detail" +msgstr "" +"Rettangoli, ellissi, tracciati e operazioni booleane sono considerati dello " +"stesso tipo." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:87 +msgid "workspace.options.component.variants-help-modal.rule3" +msgstr "Si trovano allo stesso livello gerarchico." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:88 +msgid "workspace.options.component.variants-help-modal.rule3.detail" +msgstr "Gruppi, tavole da disegno e layout sono considerati equivalenti." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +msgid "workspace.options.component.variants-help-modal.title" +msgstr "Come rimangono connesse le varianti" + #: src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:163 msgid "workspace.options.constraints" msgstr "Vincoli" @@ -5454,7 +5701,7 @@ msgstr "Superiore" msgid "workspace.options.constraints.topbottom" msgstr "Superiore e Inferiore" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" @@ -5467,21 +5714,21 @@ msgstr "Esporta" msgid "workspace.options.export-multiple" msgstr "Esporta selezione" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Esporta 1 elemento" msgstr[1] "Esporta %s elementi" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Aggiungi esportazione" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Rimuovi esportazione" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Suffisso" @@ -5489,7 +5736,7 @@ msgstr "Suffisso" msgid "workspace.options.exporting-complete" msgstr "Esportazione completata" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "In esportazione…" @@ -5501,27 +5748,27 @@ msgstr "Esportazione fallita" msgid "workspace.options.exporting-object-slow" msgstr "Esportazione inaspettatamente lenta" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Riempimento" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Aggiungi riempimento" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Elimina riempimento" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Adatta tavola da disegno al contenuto" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Aggiungi inizio flusso" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Flusso" @@ -5530,19 +5777,19 @@ msgstr "Flusso" msgid "workspace.options.flows.flow-start" msgstr "Inizio flusso" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Inizi flusso" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Rimuovi flusso" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Auto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Colonne" @@ -5551,7 +5798,7 @@ msgstr "Colonne" msgid "workspace.options.grid.grid-title" msgstr "Griglia" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Colore" @@ -5560,15 +5807,15 @@ msgstr "Colore" msgid "workspace.options.grid.params.columns" msgstr "Colonne" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Interspazio" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Altezza" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margine" @@ -5577,7 +5824,7 @@ msgstr "Margine" msgid "workspace.options.grid.params.rows" msgstr "Righe" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Imposta come predefinito" @@ -5591,159 +5838,159 @@ msgstr "Dimensione" msgid "workspace.options.grid.params.type" msgstr "Tipo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Basso" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Sinistra" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Destra" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Estendi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Alto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Usa predefinito" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Larghezza" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Righe" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Quadrato" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Riempimento di gruppo" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Traccia di gruppo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Aggiungi guida" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Rimuovi guida" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Guide" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Attiva/Disattiva guida" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Altezza" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Ispeziona" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Azione" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Dopo un ritardo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animazione" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Dissolvenza" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Nessuna" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Spinta" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Scorrimento" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "automatico" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Aggiungi sovrapposizione di sfondo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Chiudi al click esterno" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Chiudi sovrapposizione" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Chiudi sovrapposizione: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Ritardo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destinazione" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Durata" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linear" @@ -5752,47 +5999,47 @@ msgstr "Linear" msgid "workspace.options.interaction-in" msgstr "In" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Entrata del mouse" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Uscita del mouse" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Naviga verso" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Naviga verso: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(non impostato)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Effetti di offset" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Al click" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Apri sovrapposizione" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Apri la sovrapposizione: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Apri un URL" @@ -5801,87 +6048,87 @@ msgstr "Apri un URL" msgid "workspace.options.interaction-out" msgstr "Fuori" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "In basso centrato" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "In basso a sinistra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "In basso a destra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Centrato" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manuale" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "In alto centrato" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "In alto a sinistra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "In alto a destra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Posizione" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Preserva posizione di scorrimento" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Schermata precedente" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relativo a" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "se stesso" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Attiva/Disattiva sovrapposizione" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Attiva/Disattiva la sovrapposizione: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Trigger" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Durante il passaggio del mouse" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Durante la pressione" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interazioni" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Aggiungi interazione" @@ -5890,67 +6137,67 @@ msgstr "Aggiungi interazione" msgid "workspace.options.interactions.remove-interaction" msgstr "Rimuovi interazione" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Colore" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Colore brucia" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Colore scherma" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Scurisci" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Differenza" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Esclusione" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Luce intensa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Tonalità" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Schiarisci" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminosità" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Moltiplica" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normale" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Sovrapponi" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturazione" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Scolora" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Luce soffusa" @@ -5969,7 +6216,7 @@ msgstr "Livelli di gruppo" msgid "workspace.options.layer-options.title.multiple" msgstr "Livelli selezionati" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Attiva/Disattiva visibilità livello" @@ -5978,19 +6225,19 @@ msgstr "Attiva/Disattiva visibilità livello" msgid "workspace.options.layout-item.advanced-ops" msgstr "Opzioni avanzate" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Altezza.Max" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Larghezza.Max" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Altezza.Min" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Larghezza.Min" @@ -6104,15 +6351,15 @@ msgstr "spazio tra" msgid "workspace.options.layout.top" msgstr "In alto" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Più colori" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Più librerie colori" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacità" @@ -6121,35 +6368,35 @@ msgstr "Opacità" msgid "workspace.options.position" msgstr "Posizione" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototipo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Raggio" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Inferiore sinistro" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Inferiore destro" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Superiore sinistro" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Superiore destro" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Comprimi raggio indipendente" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Mostra raggio indipendente" @@ -6161,7 +6408,7 @@ msgstr "Recenti" msgid "workspace.options.retry" msgstr "Riprova" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotazione" @@ -6169,33 +6416,33 @@ msgstr "Rotazione" msgid "workspace.options.search-font" msgstr "Cerca carattere" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Seleziona una forma, una tavola da disegno o un gruppo per trascinare una " "connessione verso un'altra tavola." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Colori selezionati" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Riempimento di selezione" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Traccia di selezione" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Aggiungi ombra" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Sfoca" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Colore ombra" @@ -6207,63 +6454,64 @@ msgstr "Ombra esterna" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Ombra interna" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Rimuovi ombra" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Diffusione" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Ombra" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Ombra di gruppo" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Ombre della selezione" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Attiva/Disattiva ombra" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Mostra in esportazione" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Mostra in modalità visualizzazione" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Dimensione" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Dimensioni predefinite" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "Blocca proporzioni" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "Sblocca proporzioni" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Traccia" @@ -6272,7 +6520,7 @@ msgstr "Traccia" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Marcatore circolare" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Cerchio" @@ -6281,7 +6529,7 @@ msgstr "Cerchio" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Marcatore diamante" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamante" @@ -6290,19 +6538,19 @@ msgstr "Diamante" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Freccia di linea" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Freccia" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Nessuno" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Rotondo" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Quadrato" @@ -6311,7 +6559,7 @@ msgstr "Quadrato" msgid "workspace.options.stroke-cap.square-marker" msgstr "Marcatore quadrato" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Rettangolo" @@ -6320,83 +6568,83 @@ msgstr "Rettangolo" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Freccia triangolo" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Triangolo" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Colore traccia" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Spessore traccia" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Aggiungi colore traccia" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Tratteggiato" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Puntinato" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Interno" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Misto" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Esterno" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Rimuovi traccia" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Solido" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Allinea in basso" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Allinea verticalmente al centro" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Allinea in alto" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Altezza automatica" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Larghezza automatica" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fisso" @@ -6418,35 +6666,35 @@ msgstr "Minuscolo" msgid "workspace.options.text-options.none" msgstr "Nessuno" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Barrato (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Allinea al centro" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Giustifica" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Allinea a sinistra" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Allinea a destra" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Testo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Testo di gruppo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Testo della selezione" @@ -6455,7 +6703,7 @@ msgstr "Testo della selezione" msgid "workspace.options.text-options.titlecase" msgstr "Iniziale maiuscola" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Sottolineato (%s)" @@ -6464,21 +6712,21 @@ msgstr "Sottolineato (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Maiuscolo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Utilizza il pulsante di riproduzione nell'header per avviare la " "visualizzazione del prototipo." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Larghezza" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Asse X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Asse Y" @@ -6522,78 +6770,82 @@ msgstr "Separa nodi (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Aggancia nodi (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Apri" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Scopri [altri plugin](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Nessun plugin ancora installata" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Il manifesto del plugin è errato." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Devi essere un editor per utilizzare questo plugin" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Il plugin non esiste o l'URL non è corretto." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Installa" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Plugin installati" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Manager dei plugin" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Plugin" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "AGGIORNA QUESTO PLUGIN" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "Il plugin è stato modificato da quando l'hai aperto l'ultima volta. Ora " "richiede l'accesso a:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Inizia il download dei file." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:286 +msgid "workspace.plugins.permissions.allow-localstorage" +msgstr "Memorizza i dati nel browser." + +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Leggi i tuoi commenti e risposte." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Leggi e modifica i tuoi commenti e rispondi a tuo nome." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Leggi il contenuto dei file a cui gli utenti hanno accesso." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Leggi e modifica il contenuto dei file a cui gli utenti hanno accesso." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Tieni presente che questo plugin è creato da una terza parte, quindi " @@ -6601,31 +6853,31 @@ msgstr "" "sicurezza dei dati sono importanti per noi. Se hai dubbi, contatta il " "supporto." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Leggere le tue librerie e risorse." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Leggere e modificare le tue librerie e risorse." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "IL PLUGIN '%s' VUOLE ACCEDERE A:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Leggere le informazioni del profilo dell'utente attuale." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Lista plugin" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Rimuovi plugin" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Scrivi URL di un plugin" @@ -6633,26 +6885,26 @@ msgstr "Scrivi URL di un plugin" msgid "workspace.plugins.success" msgstr "Plugin caricato correttamente." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Plugin" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "NON ORA" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Vuoi dare un'occhiata? Si aprirà in una nuova bozza per il tuo team " "attuale. (In caso contrario, puoi sempre trovarlo nei plugin installati di " "qualsiasi file.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "IL PLUGIN '%s' È INSTALLATO PER IL TUO UTENTE!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "PROVA PLUGIN" @@ -6664,15 +6916,15 @@ msgstr "Aggiungi layout flex" msgid "workspace.shape.menu.add-grid" msgstr "Aggiungi layout grid" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Aggiungi layout" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Crea variante" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "Aggiungi nuova proprietà" @@ -6684,6 +6936,14 @@ msgstr "Porta in fondo" msgid "workspace.shape.menu.backward" msgstr "Porta indietro" +#: src/app/main/ui/workspace/context_menu.cljs:617, src/app/main/ui/workspace/sidebar/assets/components.cljs:634, src/app/main/ui/workspace/sidebar/assets/groups.cljs:75, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1041 +msgid "workspace.shape.menu.combine-as-variants" +msgstr "Combina come varianti" + +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:636 +msgid "workspace.shape.menu.combine-as-variants-error" +msgstr "I componenti devono essere nella stessa pagina" + #: src/app/main/ui/workspace/context_menu.cljs:199 msgid "workspace.shape.menu.copy" msgstr "Copia" @@ -6716,7 +6976,7 @@ msgstr "Copia come SVG" msgid "workspace.shape.menu.copy-text" msgstr "Copia come testo" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Crea annotazione" @@ -6724,11 +6984,11 @@ msgstr "Crea annotazione" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Tavola da disegno da selezione" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Crea componente" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Crea componenti multipli" @@ -6736,7 +6996,7 @@ msgstr "Crea componenti multipli" msgid "workspace.shape.menu.cut" msgstr "Taglia" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Elimina" @@ -6744,15 +7004,15 @@ msgstr "Elimina" msgid "workspace.shape.menu.delete-flow-start" msgstr "Elimina inizio del flusso" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Scollega istanza" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Scollega istanze" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Differenza" @@ -6764,11 +7024,11 @@ msgstr "Duplica" msgid "workspace.shape.menu.edit" msgstr "Modifica" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Escludi" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Appiattisci" @@ -6801,19 +7061,19 @@ msgstr "Vai al componente principale" msgid "workspace.shape.menu.group" msgstr "Raggruppa" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Nascondi" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Mostra/Nascondi UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Interesezione" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Blocca" @@ -6821,7 +7081,7 @@ msgstr "Blocca" msgid "workspace.shape.menu.mask" msgstr "Maschera" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Incolla" @@ -6841,27 +7101,31 @@ msgstr "Rimuovi layout flex" msgid "workspace.shape.menu.remove-grid" msgstr "Rimuovi layout grid" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Rimuovi layout" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "Rimuovi proprietà" +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1256 +msgid "workspace.shape.menu.remove-variant-property.last-property" +msgstr "Le varianti devono avere almeno una proprietà" + #: src/app/main/ui/workspace/context_menu.cljs:328 msgid "workspace.shape.menu.rename" msgstr "Rinomina" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Reimposta modifiche" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Ripristina componente principale" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "Ripristina variante" @@ -6869,15 +7133,15 @@ msgstr "Ripristina variante" msgid "workspace.shape.menu.select-layer" msgstr "Seleziona livello" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Mostra" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Mostra nel pannello delle risorse" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Mostra componente principale" @@ -6890,6 +7154,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Imposta come miniatura" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Trasforma in tracciato" @@ -6897,11 +7162,11 @@ msgstr "Trasforma in tracciato" msgid "workspace.shape.menu.ungroup" msgstr "Separa" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Unione" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Sblocca" @@ -6914,7 +7179,7 @@ msgstr "Rimuovi maschera" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Aggiorna componente principale" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Aggiorna componente principale" @@ -6926,11 +7191,11 @@ msgstr "Comprimi barra laterale" msgid "workspace.sidebar.expand" msgstr "Espandi barra laterale" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Cronologia" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Livelli" @@ -6970,11 +7235,11 @@ msgstr "Testi" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Attributi SVG importati" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Pagine" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Aggiungi pagina" @@ -6991,27 +7256,27 @@ msgstr "%s temi attivi" msgid "workspace.tokens.add set" msgstr "Aggiungi set" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Aggiungi nuovo tema" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "Aggiungi il set a questo gruppo" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "Aggiungi token: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Applicato a" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "Assi" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Torna all'elenco dei temi" @@ -7043,15 +7308,15 @@ msgstr "Colore" msgid "workspace.tokens.create-new-theme" msgstr "Crea ora il tuo prima tema." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Creane uno." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Crea un nuovo token %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Elimina token" @@ -7059,19 +7324,19 @@ msgstr "Elimina token" msgid "workspace.tokens.delete-theme-title" msgstr "Elimina tema" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Duplica token" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "copia" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Modifica token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Modifica tema" @@ -7079,15 +7344,11 @@ msgstr "Modifica tema" msgid "workspace.tokens.edit-themes" msgstr "Modifica temi" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Modifica token" - #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "Il valore del token non può essere vuoto" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Inserisci il nome del token %s" @@ -7119,7 +7380,17 @@ msgstr "Anteprima:" msgid "workspace.tokens.export.single-file" msgstr "File singolo" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/data/workspace/tokens/application.cljs:292 +msgid "workspace.tokens.font-variant-not-found" +msgstr "" +"Errore nell’impostazione del peso/stile del font. Questo stile non esiste " +"nel font corrente" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1024, src/app/main/ui/workspace/tokens/management/create/form.cljs:1039 +msgid "workspace.tokens.font-weight-value-enter" +msgstr "Font weight (300, Bold, Regular Italic...) o {alias}" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "Spaziature" @@ -7137,21 +7408,37 @@ msgstr "Nome gruppo" msgid "workspace.tokens.grouping-set-alert" msgstr "Il raggruppamento di set di token non è ancora supportato." +#: src/app/main/ui/workspace/tokens/import/modal.cljs:233 +msgid "workspace.tokens.import-button-prefix" +msgstr "Importa %s" + #: src/app/main/data/workspace/tokens/errors.cljs:32, src/app/main/data/workspace/tokens/errors.cljs:37 msgid "workspace.tokens.import-error" msgstr "Errore di importazione:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:273 +msgid "workspace.tokens.import-menu-folder-option" +msgstr "Cartella" + +#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 +msgid "workspace.tokens.import-menu-json-option" +msgstr "File JSON singolo" + +#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 +msgid "workspace.tokens.import-menu-zip-option" +msgstr "File ZIP" + +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "In più file, il nome/percorso del file corrisponde al nome del set." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "" "In un singolo file JSON, le chiavi di primo livello devono corrispondere ai " "nomi dei set di token." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "Importa token" @@ -7162,7 +7449,7 @@ msgstr "" "L'importazione di un file JSON sovrascriverà tutti i tuoi token, set e temi " "attuali" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "" "L'importazione dei token sovrascriverà tutti i tuoi attuali token, set e " @@ -7182,6 +7469,13 @@ msgstr "" msgid "workspace.tokens.invalid-color" msgstr "Valore colore invalido: %s" +#: src/app/main/data/workspace/tokens/errors.cljs:89 +msgid "workspace.tokens.invalid-font-weight-token-value" +msgstr "" +"Valore del peso del font non valido: usa valori numerici (100-950) o nomi " +"standard (thin, light, regular, bold, ecc.) eventualmente seguiti da " +"'Italic'" + #: src/app/main/data/workspace/tokens/errors.cljs:23 msgid "workspace.tokens.invalid-json" msgstr "Errore di importazione: Dati del token non validi nel JSON." @@ -7197,6 +7491,18 @@ msgstr "" "I nomi dei token devono contenere solo lettere e cifre, separate dal " "carattere . e non devono iniziare con il simbolo $." +#: src/app/main/data/workspace/tokens/errors.cljs:81 +msgid "workspace.tokens.invalid-text-case-token-value" +msgstr "" +"Valore del token non valido: sono accettati solo none, Uppercase, Lowercase " +"o Capitalize" + +#: src/app/main/data/workspace/tokens/errors.cljs:85 +msgid "workspace.tokens.invalid-text-decoration-token-value" +msgstr "" +"Valore del token non valido: sono accettati solo none, underline e " +"strike-through" + #: src/app/main/data/workspace/tokens/errors.cljs:61, src/app/main/data/workspace/tokens/errors.cljs:73, src/app/main/data/workspace/tokens/errors.cljs:77 msgid "workspace.tokens.invalid-value" msgstr "Valore token non valido: %s" @@ -7217,15 +7523,15 @@ msgstr "Tema" msgid "workspace.tokens.label.theme-placeholder" msgstr "Aggiungi un tema (es. Chiaro)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "Margini" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "Dimensione max" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "Dimensione min" @@ -7233,6 +7539,10 @@ msgstr "Dimensione min" msgid "workspace.tokens.missing-references" msgstr "Riferimenti al token mancanti: " +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:123 +msgid "workspace.tokens.more-options" +msgstr "Fai clic con il tasto destro per vedere le opzioni" + #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:149 msgid "workspace.tokens.no-active-sets" msgstr "Nessun set attivo" @@ -7241,7 +7551,7 @@ msgstr "Nessun set attivo" msgid "workspace.tokens.no-active-theme" msgstr "Nessun tema attivo" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Devi essere un editor per attivare / disattivare i set" @@ -7249,11 +7559,11 @@ msgstr "Devi essere un editor per attivare / disattivare i set" msgid "workspace.tokens.no-permission-themes" msgstr "Devi essere un editor per usare i temi" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Non sono ancora stati definiti dei set. Creane prima uno." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Non ci sono ancora dei set." @@ -7265,6 +7575,10 @@ msgstr "Non ci sono temi." msgid "workspace.tokens.no-themes-currently" msgstr "Al momento non hai temi." +#: src/app/main/data/workspace/tokens/errors.cljs:19 +msgid "workspace.tokens.no-token-files-found" +msgstr "Nessun token, set o tema trovato in questo file." + #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:148 msgid "workspace.tokens.num-active-sets" msgstr "% set attivi" @@ -7279,12 +7593,12 @@ msgstr "" "L'opacità deve essere compresa tra 0 e 100% o tra 0 e 1 (ad esempio 50% o " "0.5)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Valore originale: %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "Padding" @@ -7292,7 +7606,7 @@ msgstr "Padding" msgid "workspace.tokens.radius" msgstr "Raggio" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Il riferimento non è valido o non è presente in nessun set attivo" @@ -7301,7 +7615,7 @@ msgstr "Il riferimento non è valido o non è presente in nessun set attivo" msgid "workspace.tokens.reference-error" msgstr "Errori di riferimento: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Valore risolto: %" @@ -7310,7 +7624,7 @@ msgstr "Valore risolto: %" msgid "workspace.tokens.save-theme" msgstr "Salva tema" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Seleziona set." @@ -7318,11 +7632,11 @@ msgstr "Seleziona set." msgid "workspace.tokens.self-reference" msgstr "Il token ha un riferimento a se stesso" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "Inserisci nome (usa '/' per i gruppi)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "Definisci quali set token dovrebbe essere usati come parte di questo tema:" @@ -7345,7 +7659,7 @@ msgstr "" msgid "workspace.tokens.settings" msgstr "Impostazioni token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "Dimensione" @@ -7353,6 +7667,14 @@ msgstr "Dimensione" msgid "workspace.tokens.stroke-width-range" msgstr "La larghezza della traccia deve essere maggiore o uguale a 0." +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1012, src/app/main/ui/workspace/tokens/management/create/form.cljs:1051 +msgid "workspace.tokens.text-case-value-enter" +msgstr "none | uppercase | lowercase | capitalize o {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1018, src/app/main/ui/workspace/tokens/management/create/form.cljs:1055 +msgid "workspace.tokens.text-decoration-value-enter" +msgstr "none | underline | strike-through o {alias}" + #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:130 msgid "workspace.tokens.theme-name" msgstr "Tema %s" @@ -7367,16 +7689,28 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "Elenco temi" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Descrizione" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:973 +msgid "workspace.tokens.token-font-family-select" +msgstr "Seleziona famiglia di caratteri" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1029 +msgid "workspace.tokens.token-font-family-value" +msgstr "Famiglia di caratteri" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:979, src/app/main/ui/workspace/tokens/management/create/form.cljs:1031 +msgid "workspace.tokens.token-font-family-value-enter" +msgstr "Famiglia di caratteri o elenco di caratteri separati da virgola (,)" + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Nome" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " non è un nome di token valido.\n" @@ -7388,11 +7722,11 @@ msgstr "" msgid "workspace.tokens.token-not-resolved" msgstr "Impossibile risolvere il token di riferimento con il nome: %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Valore" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "Inserisci un valore o un alias con {alias}" @@ -7400,29 +7734,39 @@ msgstr "Inserisci un valore o un alias con {alias}" msgid "workspace.tokens.tokens-section-title" msgstr "TOKEN - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Strumenti" +#: src/app/main/data/workspace/tokens/import_export.cljs:47 +msgid "workspace.tokens.unknown-token-type-message" +msgstr "" +"L’importazione è stata completata con successo. Alcuni token non sono stati " +"inclusi." + #: src/app/main/data/workspace/tokens/import_export.cljs:49 msgid "workspace.tokens.unknown-token-type-section" msgstr "Il tipo '%s' non è supportato (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "Il valore non è valido" +#: src/app/main/data/workspace/tokens/errors.cljs:69 +msgid "workspace.tokens.value-with-percent" +msgstr "Valore non valido: % non è consentito." + #: src/app/main/data/workspace/tokens/errors.cljs:65 msgid "workspace.tokens.value-with-units" msgstr "Valore non valido: le unità non sono consentite." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "" "Rinominare questo token interromperà qualsiasi riferimento al suo vecchio " "nome." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Risorse" @@ -7430,7 +7774,7 @@ msgstr "Risorse" msgid "workspace.toolbar.color-palette" msgstr "Palette colori (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Commenti (%s)" @@ -7643,19 +7987,19 @@ msgstr "Operazione su %s" msgid "workspace.undo.title" msgstr "Cronologia" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Ignora" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Maggiori informazioni" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Sono presenti degli aggiornamenti nelle librerie condivise" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Aggiorna" @@ -7707,6 +8051,14 @@ msgstr "Versioni di %s" msgid "workspace.versions.loading" msgstr "Caricamento…" +#, unused +msgid "workspace.versions.locked-by-other" +msgstr "Questa versione è bloccata da %s e non può essere modificata" + +#, unused +msgid "workspace.versions.locked-by-you" +msgstr "Questa versione è bloccata da te" + #: src/app/main/ui/workspace/sidebar/versions.cljs:82 msgid "workspace.versions.restore-warning" msgstr "Vuoi ripristinare questa versione?" @@ -7715,14 +8067,18 @@ msgstr "Vuoi ripristinare questa versione?" msgid "workspace.versions.snapshot-menu" msgstr "Apri menu delle istantanee" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Azioni" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Cronologia" +#, unused +msgid "workspace.versions.tooltip.locked-version" +msgstr "Versione bloccata - può essere modificata solo dal creatore" + #: src/app/main/ui/ds/product/milestone.cljs:84, src/app/main/ui/ds/product/milestone_group.cljs:86 msgid "workspace.versions.version-menu" msgstr "Apri menu delle versioni" @@ -7768,3 +8124,214 @@ msgstr "Clicca per chiudere il tracciato" #~ msgid "onboarding.slide.1.desc1" #~ msgstr "Crea interazioni complete per imitare al meglio il prodotto finale." + +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:98, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:105 +msgid "color-row.token-color-row.deleted-token" +msgstr "Questo token non esiste o è stato eliminato." + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:35 +msgid "color-token.empty-state" +msgstr "" +"Nessun token colore disponibile. Controlla i set o i temi attivi oppure " +"aggiungi nuovi token." + +#: src/app/main/ui/dashboard/team.cljs:765 +msgid "dashboard.invitation-modal.delete" +msgstr "Stai per eliminare gli inviti a:" + +#: src/app/main/ui/dashboard/team.cljs:766 +msgid "dashboard.invitation-modal.resend" +msgstr "Stai per reinviare gli inviti a:" + +#: src/app/main/ui/dashboard/team.cljs:756 +msgid "dashboard.invitation-modal.title.delete-invitations" +msgstr "Elimina inviti" + +#: src/app/main/ui/dashboard/team.cljs:757 +msgid "dashboard.invitation-modal.title.resend-invitations" +msgstr "Reinvia inviti" + +#: src/app/main/ui/dashboard/team.cljs:949 +msgid "dashboard.order-invitations-by-role" +msgstr "Ordina per ruolo" + +#: src/app/main/ui/dashboard/team.cljs:958 +msgid "dashboard.order-invitations-by-status" +msgstr "Ordina per stato" + +#: src/app/main/ui/inspect/styles/property_detail_copiable.cljs:52 +msgid "inspect.tabs.styles.panel.copy-to-clipboard" +msgstr "Copia negli appunti" + +#: src/app/main/ui/inspect/styles/style_box.cljs:22 +msgid "inspect.tabs.styles.panel.geometry" +msgstr "Dimensione e posizione" + +#: src/app/main/ui/inspect/styles/style_box.cljs:59, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:179 +msgid "inspect.tabs.styles.panel.toggle-style" +msgstr "Attiva/disattiva pannello %s" + +#: src/app/main/ui/inspect/styles/style_box.cljs:21 +msgid "inspect.tabs.styles.panel.token" +msgstr "Set di token e temi" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:26 +msgid "inspect.tabs.styles.panel.tokens.active-sets" +msgstr "Set attivi" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:21 +msgid "inspect.tabs.styles.panel.tokens.active-themes" +msgstr "Temi attivi" + +#: src/app/main/ui/inspect/styles/style_box.cljs:20 +msgid "inspect.tabs.styles.panel.variant" +msgstr "Proprietà delle varianti" + +#: src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:102, src/app/main/ui/inspect/styles/rows/properties_row.cljs:53 +msgid "inspect.tabs.styles.token.resolved-value" +msgstr "Valore risolto:" + +#: src/app/main/ui/dashboard/sidebar.cljs:1043 +msgid "labels.about-penpot" +msgstr "Informazioni su Penpot" + +#: src/app/main/ui/inspect/styles/style_box.cljs:26 +msgid "labels.blur" +msgstr "Sfocatura" + +#: src/app/main/ui/workspace/colorpicker.cljs:427 +msgid "labels.color" +msgstr "Colore" + +#: src/app/main/ui/dashboard/sidebar.cljs:1030 +msgid "labels.community-contributions" +msgstr "Comunità e contributi" + +#: src/app/main/ui/inspect/styles/style_box.cljs:23 +msgid "labels.fill" +msgstr "Riempimento" + +#: src/app/main/ui/dashboard/sidebar.cljs:1019 +msgid "labels.help-learning" +msgstr "Aiuto e apprendimento" + +#: src/app/main/ui/inspect/styles/style_box.cljs:28 +msgid "labels.layout" +msgstr "Layout" + +#: src/app/main/ui/dashboard/sidebar.cljs:798 +msgid "labels.learning-center" +msgstr "Centro di apprendimento" + +#: src/app/main/ui/dashboard/sidebar.cljs:878 +msgid "labels.penpot-changelog" +msgstr "Registro delle modifiche di Penpot" + +#: src/app/main/ui/dashboard/sidebar.cljs:804 +msgid "labels.penpot-hub" +msgstr "Hub di Penpot" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:644 +msgid "labels.reference" +msgstr "Riferimento" + +#: src/app/main/ui/dashboard/team.cljs:788 +msgid "labels.resend" +msgstr "Reinvia" + +#: src/app/main/ui/inspect/styles/style_box.cljs:27 +msgid "labels.shadow" +msgstr "Ombra" + +#: src/app/main/ui/inspect/styles/style_box.cljs:24, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:46 +msgid "labels.stroke" +msgstr "Traccia" + +#: src/app/main/ui/inspect/right_sidebar.cljs:107, src/app/main/ui/inspect/styles.cljs:107 +msgid "labels.styles" +msgstr "Stili" + +#: src/app/main/ui/inspect/styles/style_box.cljs:33 +msgid "labels.svg" +msgstr "SVG" + +#: src/app/main/ui/inspect/styles/style_box.cljs:25 +msgid "labels.text" +msgstr "Testo" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1148 +msgid "labels.typography" +msgstr "Tipografia" + +#: src/app/main/ui/inspect/right_sidebar.cljs:65, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:949, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:518 +msgid "labels.variant" +msgstr "Variante" + +#: src/app/main/ui/dashboard/sidebar.cljs:872 +msgid "labels.version-notes" +msgstr "Note della versione %s" + +#: src/app/main/ui/inspect/styles/style_box.cljs:32 +msgid "labels.visibility" +msgstr "Visibilità" + +#: src/app/main/ui/dashboard/team.cljs:825 +msgid "notifications.invitation-deleted" +msgstr "Invito eliminato con successo" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +msgid "shortcuts.create-component-variant" +msgstr "Crea componente / variante" + +#: src/app/main/ui/workspace/colorpicker.cljs:431, src/app/main/ui/workspace/colorpicker.cljs:443 +msgid "workspace.colorpicker.color-tokens" +msgstr "Token colore" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:464 +msgid "workspace.component.swap.loop-error" +msgstr "I componenti non possono essere annidati dentro sé stessi." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:463 +msgid "workspace.component.switch.loop-error-multi" +msgstr "" +"Alcune copie non possono essere sostituite. I componenti non possono essere " +"annidati dentro sé stessi." + +#: src/app/main/ui/workspace/libraries.cljs:349 +msgid "workspace.libraries.connected-to" +msgstr "Connesso a" + +#: src/app/main/data/workspace/tokens/errors.cljs:97 +msgid "workspace.tokens.composite-line-height-needs-font-size" +msgstr "" +"L'interlinea dipende dalla dimensione del carattere. Aggiungi una dimensione " +"carattere per ottenere il valore risolto." + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:551 +msgid "workspace.tokens.edit-token" +msgstr "Modifica token %s" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:711 +msgid "workspace.tokens.individual-tokens" +msgstr "Utilizza token individuali" + +#: src/app/main/data/workspace/tokens/errors.cljs:93 +msgid "workspace.tokens.invalid-token-value-typography" +msgstr "" +"Valore non valido: deve fare riferimento a un token tipografico composito." + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1047 +msgid "workspace.tokens.letter-spacing-value-enter-composite" +msgstr "Letter spacing o {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1043 +msgid "workspace.tokens.line-height-value-enter" +msgstr "Line height (moltiplicatore, px, %) o {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:744 +msgid "workspace.tokens.reference-composite" +msgstr "Inserisci un alias tipografico del token" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:715 +msgid "workspace.tokens.use-reference" +msgstr "Utilizza un riferimento" diff --git a/frontend/translations/jpn_JP.po b/frontend/translations/jpn_JP.po index c6993b889c..4a35118841 100644 --- a/frontend/translations/jpn_JP.po +++ b/frontend/translations/jpn_JP.po @@ -151,7 +151,7 @@ msgstr "デザインとプロトタイピングのためのオープンソース msgid "auth.terms-and-privacy-agreement" msgstr "[利用規約](%s) と [プライバシーポリシー](%s) に同意します。" -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "利用規約" @@ -159,7 +159,7 @@ msgstr "利用規約" msgid "auth.verification-email-sent" msgstr "認証メールを送信しました" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "公開" @@ -228,7 +228,7 @@ msgstr "プロトタイプを共有" msgid "common.share-link.view-all" msgstr "すべて選択" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "非公開" @@ -245,7 +245,7 @@ msgstr "チュートリアルを始める" msgid "dashboard.access-tokens.expiration-180-days" msgstr "180日" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "共有ライブラリとして追加" @@ -253,27 +253,27 @@ msgstr "共有ライブラリとして追加" msgid "dashboard.change-email" msgstr "メールアドレスを変更" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(コピー)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "チームを新規作成" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "あなたのPenpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "チームを削除" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Penpotファイル(.penpot)をダウンロード" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "標準形式(.svg+.json)でダウンロード" @@ -285,7 +285,7 @@ msgstr "複製" msgid "dashboard.duplicate-multi" msgstr "%s ファイルを複製" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "PDFでエクスポート" @@ -342,11 +342,11 @@ msgstr "アップロード中 (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "アップロード中: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "チームに招待" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "チームから脱退" @@ -366,7 +366,7 @@ msgstr "フォントを読みこんでいます…" msgid "dashboard.new-file" msgstr "+ 新しいファイル" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "新しいファイル" @@ -374,7 +374,7 @@ msgstr "新しいファイル" msgid "dashboard.new-project" msgstr "+ 新規プロジェクト" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "新規プロジェクト" @@ -382,7 +382,7 @@ msgstr "新規プロジェクト" msgid "dashboard.no-matches-for" msgstr "\"%s\"が見つかりませんでした" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "ピン留めされたプロジェクトはここに表示されます" @@ -398,7 +398,7 @@ msgstr "メールアドレスが認証されました" msgid "dashboard.notifications.password-saved" msgstr "パスワードを保存しました!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s メンバー" @@ -431,7 +431,7 @@ msgstr "共有ライブラリから削除" msgid "dashboard.save-settings" msgstr "設定を保存" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "検索…" @@ -467,7 +467,7 @@ msgstr "ファイルを複製しました" msgid "dashboard.success-duplicate-project" msgstr "プロジェクトを複製しました" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "ファイルを移動しました" @@ -479,15 +479,15 @@ msgstr "ファイルを移動しました" msgid "dashboard.success-move-project" msgstr "ファイルを削除しました" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "チーム情報" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "チームのメンバー" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "チームのプロジェクト" @@ -519,15 +519,15 @@ msgstr "Eメール" msgid "dashboard.your-name" msgstr "名前" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "あなたのPenpot" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "キャンセル" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "OK" @@ -559,15 +559,15 @@ msgstr "メールアドレスはすでに有効です。" msgid "errors.email-as-password" msgstr "メールアドレスはパスワードとして設定できません" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "メールアドレス «%s» には多くの受信失敗レポートがあります。" -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "«%s» はスパムとして報告されたか、または恒久的に受信失敗しています" -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "エラーが発生しました。" @@ -616,7 +616,7 @@ msgstr "パスワードは8文字以上である必要があります" msgid "errors.registration-disabled" msgstr "新規登録は無効化されています。" -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "オーナーはチームを脱退できません。オーナーロールを外してください。" @@ -672,7 +672,7 @@ msgstr "ぼかし" msgid "inspect.attributes.fill" msgstr "塗りつぶし" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "画像をダウンロード" @@ -729,27 +729,28 @@ msgstr "シャドウ" msgid "inspect.attributes.stroke.alignment.center" msgstr "中央" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "フォントファミリー" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "フォントサイズ" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "フォントスタイル" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "行の高さ" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "文字装飾" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "下線" @@ -777,7 +778,7 @@ msgstr "画像" msgid "inspect.tabs.code.selected.mask" msgstr "マスク" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "ショートカット" @@ -785,15 +786,15 @@ msgstr "ショートカット" msgid "labels.add-custom-font" msgstr "カスタムフォントを追加" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "キャンセル" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "コメント" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "コミュニティ" @@ -801,11 +802,11 @@ msgstr "コミュニティ" msgid "labels.confirm-password" msgstr "パスワードを確認" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "続ける" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "作成" @@ -825,7 +826,7 @@ msgstr "カスタムフォント" msgid "labels.dashboard" msgstr "ダッシュボード" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "削除" @@ -837,15 +838,15 @@ msgstr "コメントを削除" msgid "labels.delete-comment-thread" msgstr "スレッドを削除" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "招待を削除" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "下書き" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "編集" @@ -853,15 +854,15 @@ msgstr "編集" msgid "labels.edit-file" msgstr "ファイルを編集" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "エディタ" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "失効済み" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "エクスポート" @@ -877,15 +878,15 @@ msgstr "フォントファミリー" msgid "labels.font-variants" msgstr "スタイル" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "フォント" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "GitHubレポジトリ" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "フィードバックする" @@ -893,11 +894,11 @@ msgstr "フィードバックする" msgid "labels.go-back" msgstr "戻る" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "ヘルプセンター" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "解決済みのコメントを非表示" @@ -905,7 +906,7 @@ msgstr "解決済みのコメントを非表示" msgid "labels.internal-error.main-message" msgstr "内部エラー" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "招待" @@ -913,19 +914,19 @@ msgstr "招待" msgid "labels.language" msgstr "言語" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "ライブラリ&テンプレート" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "ログアウト" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "メンバー" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "メンバー" @@ -933,7 +934,7 @@ msgstr "メンバー" msgid "labels.new-password" msgstr "新しいパスワード" -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "招待がありません。" @@ -958,11 +959,11 @@ msgstr "または" msgid "labels.profile" msgstr "プロフィール" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "プロジェクト" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "リリースノート" @@ -971,11 +972,11 @@ msgstr "リリースノート" msgid "labels.remove" msgstr "削除" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "メンバーを削除" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "名前を変更" @@ -983,7 +984,7 @@ msgstr "名前を変更" msgid "labels.rename-team" msgstr "チーム名を変更" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "招待を再送" diff --git a/frontend/translations/ko.po b/frontend/translations/ko.po index 9531dddd64..5eb98971ae 100644 --- a/frontend/translations/ko.po +++ b/frontend/translations/ko.po @@ -159,7 +159,7 @@ msgstr "계정을 생성하세요" msgid "auth.sidebar-tagline" msgstr "디자인과 프로토타이핑을 위한 오픈소스 솔루션." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "서비스 정책" @@ -180,7 +180,7 @@ msgstr "작업용 이메일" msgid "branding-illustrations-marketing-pieces" msgstr "...브랜딩, 일러스트레이션, 마케팅 자료 등." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "발행하기" @@ -249,7 +249,7 @@ msgstr "프로토타입을 공유해요" msgid "common.share-link.view-all" msgstr "모두 선택해요" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "발행취소하기" @@ -365,7 +365,7 @@ msgstr "토큰은 %s에 만료 예정입니다" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "토큰의 만료 기한이 없습니다" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "공유 라이브러리로 추가하기" @@ -373,27 +373,27 @@ msgstr "공유 라이브러리로 추가하기" msgid "dashboard.change-email" msgstr "이메일을 변경해요" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(복사)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "새 팀을 생성해요" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "당신의 펜팟" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "팀을 해체해요" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "펜팟 파일(.penpot)을 다운로드해요" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "표준 파일(.svg + .json)을 다운로드해요" @@ -409,7 +409,7 @@ msgstr "%파일을 복제해요" msgid "dashboard.export-binary-multi" msgstr "%s 펜팟 파일 (.penpot) 다운로드 하기" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "대지를 PDF로 내보내요" @@ -417,7 +417,7 @@ msgstr "대지를 PDF로 내보내요" msgid "dashboard.export-frames.title" msgstr "PDF로 내보내요" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "내보내요" @@ -429,19 +429,19 @@ msgstr "복구 토큰이 유효하지 않습니다." msgid "inspect.attributes.blur" msgstr "흐림" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "값" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -449,7 +449,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "채우기" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "소스 이미지 다운로드" @@ -539,35 +539,36 @@ msgstr "단색" msgid "inspect.attributes.stroke.width" msgstr "폭" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "타이포그래피" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "폰트 패밀리" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "폰트 사이즈" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "폰트 스타일" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "밑줄" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "텍스트 변형" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "소문자" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "대문자" @@ -623,7 +624,7 @@ msgstr "텍스트" msgid "inspect.tabs.info" msgstr "정보" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "단축키" @@ -631,7 +632,7 @@ msgstr "단축키" msgid "labels.accept" msgstr "허가" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "활성화" @@ -639,11 +640,11 @@ msgstr "활성화" msgid "labels.add-custom-font" msgstr "커스텀 폰트 추가" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "관리자" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "전체" @@ -660,19 +661,19 @@ msgstr "뒤로" msgid "labels.bad-gateway.main-message" msgstr "잘못된 경로" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "취소" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "닫기" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "코멘트" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "커뮤니티" @@ -680,15 +681,15 @@ msgstr "커뮤니티" msgid "labels.confirm-password" msgstr "비밀번호 확인하기" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "계속하기" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "링크 복사하기" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "생성하기" @@ -708,7 +709,7 @@ msgstr "커스텀 폰트" msgid "labels.dashboard" msgstr "대시보드" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "삭제하기" @@ -720,15 +721,15 @@ msgstr "코멘트 삭제하기" msgid "labels.delete-comment-thread" msgstr "스레드 제거하기" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "초대장 제거하기" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "초안" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "편집" @@ -736,15 +737,15 @@ msgstr "편집" msgid "labels.edit-file" msgstr "파일 편집" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "작성자" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "기한이 만료된" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "내보내기" @@ -760,7 +761,7 @@ msgstr "폰트 공급자" msgid "labels.font-variants" msgstr "스타일" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "폰트" @@ -768,23 +769,23 @@ msgstr "폰트" msgid "labels.go-back" msgstr "뒤로 가기" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "고객센터" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "비활성화" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "보기 전용" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "뷰어" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "웹훅" @@ -820,11 +821,11 @@ msgstr "이메일 변경하기" msgid "modals.change-email.title" msgstr "이메일을 변경하세요" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "웹훅 만들기" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "웹훅 생성하기" @@ -860,11 +861,11 @@ msgstr "폰트 스타일 지우는 중" msgid "modals.delete-font.title" msgstr "폰트 지우는 중" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "정말로 해당 페이지를 지우시겠습니까?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "페이지 삭제" @@ -884,30 +885,30 @@ msgstr "프로젝트 제거" msgid "notifications.profile-saved" msgstr "프로필이 성공적으로 저장되었습니다!" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "가로로 뒤집기" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "세로로 뒤집기" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "초안으로 가기" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "공유된 라이브러리로 가기" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "찾기" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "그룹" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "가로로 분배하기" diff --git a/frontend/translations/lt.po b/frontend/translations/lt.po index 28ba3b2fad..aedcf8d708 100644 --- a/frontend/translations/lt.po +++ b/frontend/translations/lt.po @@ -143,7 +143,7 @@ msgstr "Sukurti paskyrą" msgid "auth.sidebar-tagline" msgstr "Atviro kodo dizaino ir prototipų kūrimo sprendimas." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Paslaugų teikimo sąlygos" @@ -151,7 +151,7 @@ msgstr "Paslaugų teikimo sąlygos" msgid "auth.verification-email-sent" msgstr "Išsiuntėme patvirtinimo el. laišką adresu" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Paskelbti" @@ -224,7 +224,7 @@ msgstr "Dalinkitės prototipais" msgid "common.share-link.view-all" msgstr "Rinktis viską" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Atšaukti paskelbimą" @@ -262,7 +262,7 @@ msgstr "Panagrinėkite Penpot ir susipažinkite su pagrindinėmis jo savybėmis. msgid "dasboard.walkthrough-hero.start" msgstr "Pradėkite apžvalgą" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Pridėti kaip bendrinamą biblioteką" @@ -270,19 +270,19 @@ msgstr "Pridėti kaip bendrinamą biblioteką" msgid "dashboard.change-email" msgstr "Keisti el. paštą" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopija)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Sukurti naują komandą" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Jūsų Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Naikinti komandą" @@ -294,7 +294,7 @@ msgstr "Dublikatas" msgid "dashboard.duplicate-multi" msgstr "Dubliuoti %s failus" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Eksportuokite darbalaukius į PDF" @@ -310,7 +310,7 @@ msgstr "Eksportuoti Penpot %s failus" msgid "dashboard.export-multiple.selected" msgstr "Pasirinkta %s iš %s elementų" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Eksportuoti" @@ -466,7 +466,7 @@ msgstr "Įkeliami duomenys į serverį (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Įkeliamas failas: %s" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Naujas failas" @@ -474,7 +474,7 @@ msgstr "Naujas failas" msgid "dashboard.new-project" msgstr "+ Naujas projektas" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Naujas projektas" @@ -482,7 +482,7 @@ msgstr "Naujas projektas" msgid "dashboard.no-matches-for" msgstr "Nerasta jokių atitikmenų pagal \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Prisegti projektai bus rodomi čia" @@ -498,7 +498,7 @@ msgstr "Jūsų el. pašto adresas buvo sėkmingai patvirtintas" msgid "dashboard.notifications.password-saved" msgstr "Slaptažodis sėkmingai išsaugotas!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s nariai" @@ -514,7 +514,7 @@ msgstr "Nustatymai" msgid "dashboard.password-change" msgstr "Keisti slaptažodį" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Prisegti/Atsegti" diff --git a/frontend/translations/lv.po b/frontend/translations/lv.po index 8e6119be10..0ee99ad56f 100644 --- a/frontend/translations/lv.po +++ b/frontend/translations/lv.po @@ -1,16 +1,17 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Edgars Andersons \n" -"Language-Team: Latvian " -"\n" +"Language-Team: Latvian \n" "Language: lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 " -"<= 19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n" -"X-Generator: Weblate 5.13\n" +"Plural-Forms: nplurals=3; plural=" +"(n % 10 == 0 || n % 100 >= 11 && n % 100 <= 19) ? 0 : " +"((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -180,7 +181,7 @@ msgstr "Atvērtā pirmkoda risinājums dizaina izstrādei un modelēšanai." msgid "auth.terms-and-privacy-agreement" msgstr "Piekrītu [pakalpojuma noteiktumiem](%s) un [privātuma nosacījumiem](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Pakalpojumu sniegšanas noteikumi" @@ -207,7 +208,7 @@ msgstr "... zīmolrades, ilustrācijām, mārketinga materiāliem utt." msgid "comments.mentions.not-found" msgstr "Netika atrasts neviens cilvēks @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publicēt" @@ -278,7 +279,7 @@ msgstr "Kopīgot prototipus" msgid "common.share-link.view-all" msgstr "Atlasīt visu" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Atcelt publikāciju" @@ -401,7 +402,7 @@ msgstr "Pilnvarai nav derīguma beigu datuma" msgid "dashboard.add-file" msgstr "Pievienot datni" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Pievienot kā koplietojamu bibliotēku" @@ -409,31 +410,31 @@ msgstr "Pievienot kā koplietojamu bibliotēku" msgid "dashboard.change-email" msgstr "Mainīt e-pasta adresi" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopija)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Izveidot jaunu komandu" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Piespraust šo versiju" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Mans Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Dzēst komandu" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Lejupielādēt Penpot datni (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Lejupielādēt standarta datni (.svg + .json)" @@ -517,7 +518,7 @@ msgstr "Sākt veidot apbrīnojamas lietas" msgid "dashboard.export-binary-multi" msgstr "Lejupielādēt %s Penpot datnes (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Izgūt plātnes kā PDF" @@ -533,7 +534,7 @@ msgstr "Izgūt Penpot %s datnes" msgid "dashboard.export-multiple.selected" msgstr "Atlasīti elementi - %s no %s" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Izgūt" @@ -746,11 +747,11 @@ msgstr "Augšupielādē datus serverī (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Augšupielādē datni: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Uzaicināt personas" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Atstāt komandu" @@ -758,7 +759,7 @@ msgstr "Atstāt komandu" msgid "dashboard.libraries-and-templates" msgstr "Bibliotēkas un veidnes" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "Šeit ir dažas bibliotēkas un sagataves, kuras var pievienot savam projektam" @@ -766,7 +767,7 @@ msgstr "Šeit ir dažas bibliotēkas un sagataves, kuras var pievienot savam pro msgid "dashboard.libraries-and-templates.explore" msgstr "Izpētīt vairāk un uzzinātt, kā sniegt ieguldījumu" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Veidnes ievietošanas laikā radās sarežģījumi. Veidne netika ievietota." @@ -802,7 +803,7 @@ msgstr "Pārvietot uz citu komandu" msgid "dashboard.new-file" msgstr "+ Jauna datne" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Jauna datne" @@ -810,7 +811,7 @@ msgstr "Jauna datne" msgid "dashboard.new-project" msgstr "+ Jauns projekts" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Jauns projekts" @@ -818,11 +819,11 @@ msgstr "Jauns projekts" msgid "dashboard.no-matches-for" msgstr "“%s” nav atrasta neviena atbilstība" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Šeit būs redzami piespraustie projekti" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Paziņojumi" @@ -834,7 +835,7 @@ msgstr "E-pasta adrese tika veiksmīgi atjaunināta" msgid "dashboard.notifications.email-verified-successfully" msgstr "E-pasta adrese tika veiksmīgi apliecināta" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Paziņojumu iestatījumi atjaunināti" @@ -842,11 +843,11 @@ msgstr "Paziņojumu iestatījumi atjaunināti" msgid "dashboard.notifications.password-saved" msgstr "Parole ir veiksmīgi saglabāta." -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Apskatīt paziņojumus" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "Dalībieki: %s" @@ -878,7 +879,7 @@ msgstr "Tu tagad esi šīs komandas īpašnieks." msgid "dashboard.permissions-change.viewer" msgstr "Tev tagad šajā komandā ir skatīšanās tiesības." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Piespraust/Atspraust" @@ -915,7 +916,7 @@ msgstr "Tu vairs neesi daļa no komandas \"%s\"." msgid "dashboard.save-settings" msgstr "Saglabāt iestatījumus" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Meklēt…" @@ -1007,7 +1008,7 @@ msgstr "Paziņojumi" msgid "dashboard.show-all-files" msgstr "Rādīt visas datnes" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Versiju vēsture" @@ -1033,7 +1034,7 @@ msgstr[2] "Datnes tika sekmīgi divkāršotas" msgid "dashboard.success-duplicate-project" msgstr "Projekts tika veiksmīgi divkāršots" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Datne tika sekmīgi pārvietota" @@ -1045,15 +1046,15 @@ msgstr "Datnes tika veiksmīgi pārvietotas" msgid "dashboard.success-move-project" msgstr "Projekts tika veiksmīgi pārvietots" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Par komandu" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Komandas dalībnieki" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Komandas projekti" @@ -1073,7 +1074,7 @@ msgstr "Meklēšanas rezultāti" msgid "dashboard.type-something" msgstr "Jāievada, lai meklētu" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Atcelt bibliotēkas publicēšanu" @@ -1081,50 +1082,50 @@ msgstr "Atcelt bibliotēkas publicēšanu" msgid "dashboard.update-settings" msgstr "Atjaunināt iestatījumus" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Nav ierobežojumu radošumam" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Bezmaksas Penpot" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Ir aktīvs" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Kad tiks aktivizēts āķis, notikuma detaļas tiks piegādātās" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Var izdzēst vai mainīt tikai paša izveidotās tīmekļa aizķeres." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Satura tips" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Izveidot tīmekļa aizķeri" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Tīmekļa aizķere ir veiksmīgi izveidota." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Tīmekļa aizķeres ir vienkāršs veids, kā ļaut citām tīmekļa vietnēm un " "lietotnēm saņemt paziņojumus, kad Penpot notiek noteikti notikumi. Mēs " "nosūtīsim POST pieprasījumu katram norādītajam URL." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Jānospiež poga \"Pievienot tīmekļa aizķeri\", lai pievienotu kādu." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Līdz šim nav izveidota neviena tīmekļa aizķere." @@ -1144,7 +1145,7 @@ msgstr "E-pasta adrese" msgid "dashboard.your-name" msgstr "Vārds" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Mans Penpot" @@ -1160,15 +1161,15 @@ msgstr "Uzmanību" msgid "ds.component-subtitle" msgstr "Atjaunināmās sastāvdaļas:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Ļaut" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Atcelt" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Labi" @@ -1176,17 +1177,37 @@ msgstr "Labi" msgid "ds.confirm-title" msgstr "Vai esat pārliecināti?" +#: src/app/main/ui/ds/controls/numeric_input.cljs:98 +msgid "ds.inputs.numeric-input.no-applicable-tokens" +msgstr "Aktīvajās kopās vai izskatos nav pielietojamu tekstvienību." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:99 +msgid "ds.inputs.numeric-input.no-matches" +msgstr "Netika atrasts nekas atbilstošs." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 +msgid "ds.inputs.numeric-input.open-token-list-dropdown" +msgstr "Atvērt tekstvienību sarakstu" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 +msgid "ds.inputs.token-field.detach-token" +msgstr "Atdalīt tekstvienību" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 +msgid "ds.inputs.token-field.no-active-token-option" +msgstr "Šī tekstvienība nav nevienā aktīvajā kopā vai tai ir nederīga vērtība." + #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" -msgstr "Autentifikācijas nodrošinātājs nav atļauts šim profilam" +msgstr "Autentificēšanās nodrošinātājs nav atļauts šim profilam" #: src/app/main/ui/auth/login.cljs:78 msgid "errors.auth-provider-not-configured" -msgstr "Autentifikācijas nodrošinātājs nav konfigurēts." +msgstr "Autentificēšanāš nodrošinātājs nav konfigurēts." #: src/app/main/errors.cljs:112 msgid "errors.auth.unable-to-login" -msgstr "Šķiet, ka neesi autentificēts vai ir beidzies sesijas derīgums." +msgstr "Šķiet, ka neesi autentificējies vai ir beidzies sesijas derīgums." #: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:120 msgid "errors.bad-font" @@ -1230,7 +1251,7 @@ msgstr "Lai arī Penpot vairs neatbalsta šo līdzekļu veidu, Tu vari" msgid "errors.deprecated.contact.text" msgstr "sazināties ar mums," -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "Nevar nomest vecāka kopu paša bērna ceļā." @@ -1254,11 +1275,11 @@ msgstr "E-pasta adrese neatbilst uzaicinājumā esošajai." msgid "errors.email-domain-not-allowed" msgstr "Domēns nav atļauts" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "E-pastam “%s” ir daudz pastāvīgu atlēcienu atskaišu." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "E-pasta adrese “%s” ir atzīmēta surogātpasts vai pastāvīgi saņem atlēcienu." @@ -1272,11 +1293,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Līdzeklis '%s' netiek atbalstīts." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "Jāsatur ne vairāk par vienu rakstzīmi." - #, unused msgid "errors.field-min-length" msgstr "Jāsatur vismaz vienu rakstzīmi." @@ -1297,7 +1313,7 @@ msgstr "" "kuru tiek mēģināts atvērt. Jāpiemēro '%s' migrācijas, pirms datne var tikt " "atvērta." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Noticis kaut kas nelāgs." @@ -1347,11 +1363,11 @@ msgstr "Iespējams, ka šis uzaicinājums ir atcelts vai ir beidzies tā derīgu msgid "errors.ldap-disabled" msgstr "LDAP autentifikācija ir atspējota." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Ir sasniegts '%s' ierobežojums. Jāsazinās ar atbalstu." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Sasniegts lielākais pieļaujamais e-pasta adrešu skaits (%s), ko var " @@ -1369,7 +1385,7 @@ msgstr "Šķiet, ka attēla saturs neatbilst datnes paplašinājumam." msgid "errors.media-type-not-allowed" msgstr "Šķiet, ka šis nav derīgs attēls." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Uzaicinātajam profilam ir apklusināta e-pasta saņemšana (ziņojumi par " @@ -1405,7 +1421,7 @@ msgstr "Starpliktuvē ir nederīgi dati" msgid "errors.profile-blocked" msgstr "Profils ir bloķēts" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Profila epasta saņemšana ir apklusināta (ziņojumi par surogātpastu vai " @@ -1423,21 +1439,21 @@ msgstr "SVG ir nederīgs vai bojāts" msgid "errors.team-feature-mismatch" msgstr "Noteikta nesaderīga iespēja '%s'" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Komandā ir nepietiekams dalībnieku skaits, lai to pamestu. Iespējams, ka to " "ir vēlams izdzēst." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Dalībnieks, kuru mēģināt piešķirt, nepastāv." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Īpašnieks nevar pamest komandu, ir jāpiešķir īpašnieka loma citam." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Jau pastāv kopa ar tādu pašu nosaukumu" @@ -1446,11 +1462,11 @@ msgstr "Jau pastāv kopa ar tādu pašu nosaukumu" msgid "errors.token-set-doesnt-exists" msgstr "Nevar pavairot nezināmu kopu" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "Nevar pabeigt nomešanu, ceļā jau pastāv kopa ar tādu pašu nosaukumu." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Pastāv izskata iespēja ar tādu pašu nosaukumu" @@ -1478,31 +1494,31 @@ msgstr "Šī versija ir aizslēgta, un citi to nevar izdzēst" msgid "errors.version-not-supported" msgstr "Datnei ir nesaderīgs versijas numurs" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Savienojuma kļūda, URL nav sasniedzams" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL neiztur pārbaudi." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Pēdējā piegāde nebija veiksmīga." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Kļūda SSL pārbaudē." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Noilgums" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Pārbaudes laikā atgadījās neparedzēta kļūda" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Neparedzēts statuss %s" @@ -1567,7 +1583,7 @@ msgstr "Radās kļūda" msgid "inspect.attributes.blur" msgstr "Aizmiglošana" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Vērtība" @@ -1575,15 +1591,15 @@ msgstr "Vērtība" msgid "inspect.attributes.color" msgstr "Krāsa" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1591,7 +1607,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Aizpildījums" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Lejupielādēt avota attēlu" @@ -1685,35 +1701,37 @@ msgstr "Nepārtrauktā" msgid "inspect.attributes.stroke.width" msgstr "Platums" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Burtu stils un veids" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Fontu saime" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Fonta izmērs" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Fonta stils" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Fonta Treknums" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Burtu atstarpes" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Līnijas augstums" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Teksta noformējums" @@ -1721,35 +1739,36 @@ msgstr "Teksta noformējums" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "Pārsvītrojums" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Nav" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Pasvītrojums" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Teksta transformācija" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Virsraksta stils" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Mazie burti" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Nav" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Atiestatīt" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Lielie burti" @@ -1761,17 +1780,17 @@ msgstr "Varianta īpašības" msgid "inspect.attributes.variants" msgstr "Paveida īpašības" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Ja ir vēlme uzzināt vairāk par dizaina apskati, jāapmeklē Penpot palīdzības " "centrs" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Vairāk informācijas par apskatīšanu" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Jāatlasa apveids, plātne vai kopa, lai apskatītu to īpašības un kodu" @@ -1835,15 +1854,23 @@ msgstr "SVG" msgid "inspect.tabs.code.selected.text" msgstr "Teksts" +#: src/app/main/ui/inspect/right_sidebar.cljs:109 +msgid "inspect.tabs.computed" +msgstr "Aprēķinātās" + #: src/app/main/ui/inspect/right_sidebar.cljs:114 msgid "inspect.tabs.info" msgstr "Infomācija" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/inspect/right_sidebar.cljs:165 +msgid "inspect.tabs.switcher.label" +msgstr "Informācija par slāni" + +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Atzīmēt visu kā izlasītu" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Saīsnes" @@ -1855,11 +1882,11 @@ msgstr "Pieņemt" msgid "labels.access-tokens" msgstr "Piekļuves pilnvaras" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktīvs" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Pievienot" @@ -1867,11 +1894,11 @@ msgstr "Pievienot" msgid "labels.add-custom-font" msgstr "Pievienot pielāgotu fontu" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Pievieno..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Pārvaldnieks" @@ -1879,7 +1906,7 @@ msgstr "Pārvaldnieks" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Visi" @@ -1902,7 +1929,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Nepareiza vārteja" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Atcelt" @@ -1910,11 +1937,11 @@ msgstr "Atcelt" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Aizvērt" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Sakļaut" @@ -1926,11 +1953,11 @@ msgstr "Piebilde" msgid "labels.comment.mark-as-solved" msgstr "Atzīmēt kā atrisinātu" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Komentāri" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Kopiena" @@ -1938,7 +1965,7 @@ msgstr "Kopiena" msgid "labels.confirm-password" msgstr "Apstiprināt paroli" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Turpināt" @@ -1954,11 +1981,11 @@ msgstr "Varat turpināt ar Penpot kontu" msgid "labels.copy" msgstr "Ievietot starpliktuvē" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Ievietot krāsu starpliktuvē" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Kopēt saiti" @@ -1966,7 +1993,7 @@ msgstr "Kopēt saiti" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Izveidot" @@ -1986,7 +2013,7 @@ msgstr "Pielāgotie fonti" msgid "labels.dashboard" msgstr "Pārskata panelis" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Dzēst" @@ -1998,7 +2025,7 @@ msgstr "Dzēst komentāru" msgid "labels.delete-comment-thread" msgstr "Dzēst pavedienu" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Dzēst uzaicinājumu" @@ -2015,19 +2042,19 @@ msgstr "Izstrādātājs" msgid "labels.director" msgstr "Direktors" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Atmest" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Melnraksti" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "Pavairot" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Labot" @@ -2035,11 +2062,11 @@ msgstr "Labot" msgid "labels.edit-file" msgstr "Labot datni" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Redaktors" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "Tukšs" @@ -2052,11 +2079,11 @@ msgstr "Kļūda" msgid "labels.event" msgstr "Notikums" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Beidzies derīgums" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Izgūt" @@ -2084,7 +2111,7 @@ msgstr "Fontu nodrošinātāji" msgid "labels.font-variants" msgstr "Stili" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fonti" @@ -2098,11 +2125,11 @@ msgstr "Dibinātājs/viceprezidents" msgid "labels.freelancer" msgstr "Esmu ārštātnieks(-ce)/Pašnodarbināts(-ā)" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "GitHub repozitorijs" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Sniegt atsauksmi" @@ -2114,7 +2141,7 @@ msgstr "Atpakaļ" msgid "labels.graphic-design" msgstr "Grafiskais dizains" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Palīdzības centrs" @@ -2122,15 +2149,15 @@ msgstr "Palīdzības centrs" msgid "labels.hide" msgstr "Paslēpt" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Paslēpt atrisinātos komentārus" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Ievietot" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Neaktīvs" @@ -2152,7 +2179,7 @@ msgstr "Iekšēja kļūda" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Uzaicinājumi" @@ -2160,7 +2187,7 @@ msgstr "Uzaicinājumi" msgid "labels.language" msgstr "Valoda" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Bibliotēkas un veidnes" @@ -2180,7 +2207,7 @@ msgstr "Pieteikties vai reģistrēties" msgid "labels.login" msgstr "Pieteikties" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Atteikties" @@ -2188,11 +2215,11 @@ msgstr "Atteikties" msgid "labels.marketing" msgstr "Tirgvedība" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Dalībnieks" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Dalībnieki" @@ -2200,23 +2227,27 @@ msgstr "Dalībnieki" msgid "labels.mention" msgstr "Pieminēt" +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 +msgid "labels.mixed-values" +msgstr "Jauktās" + #: src/app/main/ui/settings/password.cljs:84 msgid "labels.new-password" msgstr "Jaunā parole" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Nākamais" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Jūs esat pieķerti! Šeit tiks parādīti jaunu komentāru paziņojumi." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Nav gaidošu uzaicinājumu." -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "Sapulcē savus cilvēkus, un kopā radiet lieliskas lietas!" @@ -2233,7 +2264,7 @@ msgstr "Ups!" msgid "labels.notifications" msgstr "Paziņojumi" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "0 datņu" @@ -2247,7 +2278,7 @@ msgstr[0] "%s plātņu" msgstr[1] "%s plātne" msgstr[2] "%s plātnes" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "0 projektu" @@ -2267,7 +2298,7 @@ msgstr "Vecā parole" msgid "labels.only-yours" msgstr "Tikai mans" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Iespējas" @@ -2283,7 +2314,7 @@ msgstr "Cits (jānorāda)" msgid "labels.other-short" msgstr "Cits" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Īpašnieks" @@ -2291,10 +2322,14 @@ msgstr "Īpašnieks" msgid "labels.password" msgstr "Parole" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Gaidīšana" +#: src/app/main/ui/dashboard/sidebar.cljs:751 +msgid "labels.pinned-projects" +msgstr "Piepsraustie projekti" + #: src/app/main/ui/comments.cljs:679 msgid "labels.post" msgstr "Ieraksts" @@ -2309,13 +2344,13 @@ msgstr "Produktu vai lietotāju pieredzes dizains" #: src/app/main/ui/onboarding/questions.cljs:90 msgid "labels.product-management" -msgstr "Produktu vai projektu vadītājs" +msgstr "Produktu vadība" #: src/app/main/ui/settings/profile.cljs:128, src/app/main/ui/settings/sidebar.cljs:93 msgid "labels.profile" msgstr "Profils" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projekti" @@ -2323,7 +2358,7 @@ msgstr "Projekti" msgid "labels.refresh" msgstr "Atsvaidzināt" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Laidiena apraksts" @@ -2337,11 +2372,11 @@ msgstr "Pārlādēt datni" msgid "labels.remove" msgstr "Noņemt" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Noņemt dalībnieku" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Pārdēvēt" @@ -2369,7 +2404,7 @@ msgstr "jauna atbilde" msgid "labels.reply.thread" msgstr "Atbildēt" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Nosūtīt uzaicinājumu vēlreiz" @@ -2381,15 +2416,15 @@ msgstr "Atjaunot" msgid "labels.retry" msgstr "Pamēģināt vēlreiz" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Loma" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Saglabāt" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Meklēt" @@ -2417,11 +2452,11 @@ msgstr "Mēs esam ieplānotos sistēmu uzturēšanas darbos." msgid "labels.service-unavailable.main-message" msgstr "Pakalpojums nav pieejams" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Kopas" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Iestatījumi" @@ -2433,7 +2468,7 @@ msgstr "Kopīgot" msgid "labels.share-prototype" msgstr "Kopīgot prototipu" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibliotēkas" @@ -2441,7 +2476,7 @@ msgstr "Bibliotēkas" msgid "labels.show" msgstr "Parādīt" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Rādīt visus komentārus" @@ -2449,11 +2484,11 @@ msgstr "Rādīt visus komentārus" msgid "labels.show-comments-list" msgstr "Rādīt komentāru sarakstu" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Rādīt tikai manas pieminēšanas" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Rādīt tikai manas piebildes" @@ -2461,11 +2496,15 @@ msgstr "Rādīt tikai manas piebildes" msgid "labels.sketch" msgstr "Sketch" +#: src/app/main/ui/dashboard/sidebar.cljs:730 +msgid "labels.sources" +msgstr "Avoti" + #: src/app/main/ui/onboarding/questions.cljs:55 msgid "labels.start" msgstr "Sākt" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Statuss" @@ -2487,11 +2526,11 @@ msgstr "Komandas dalībnieks" msgid "labels.themes" msgstr "Izskati" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Pamācības" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Nezināma kļūda" @@ -2523,15 +2562,15 @@ msgstr "Augšupielādēt pielāgotos fontus" msgid "labels.uploading" msgstr "Augšupielādē…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "TIKAI SKATĪT" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Pārlūks" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Tīmekļa aizķeres" @@ -2539,11 +2578,11 @@ msgstr "Tīmekļa aizķeres" msgid "labels.write-new-comment" msgstr "Rakstīt jaunu komentāru" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(Jūs)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Mans konts" @@ -2574,7 +2613,7 @@ msgstr "Dizaina pielāgojamība ar pazīstamām CSS līdzīgām izkārtojuma vad #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Automātisks izkārtojums kā CSS" +msgstr "Izkārtojums kā CSS" #: src/app/main/ui/ds/product/loader.cljs:27 msgid "loader.tips.04.message" @@ -2636,23 +2675,23 @@ msgstr "" msgid "loader.tips.10.title" msgstr "Spraudņu atbalsts" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Izvēlēties attēlu" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Pāreja" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Attēls" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "att." -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Paturēt samēru" @@ -2670,7 +2709,7 @@ msgstr "Ielādē attēlu…" msgid "media.radial" msgstr "Radiāls" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Viengabalains" @@ -2745,19 +2784,19 @@ msgstr "Izveidot pilnvaru" msgid "modals.create-access-token.title" msgstr "Izveidot jaunu piekļuves pilnvaru" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Izveidot tīmekļa aizķeri" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Izveidot tīmekļa aizķeri" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Vērtuma URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2801,11 +2840,11 @@ msgstr "Vai tiešām izdzēst šo sarunu? Visas šī pavediena piebildes tiks iz msgid "modals.delete-comment-thread.title" msgstr "Dzēst sarunu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Vai tiešām izdzēst šo piezīmi?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Izdzēst piezīmi" @@ -2851,11 +2890,11 @@ msgstr "Vai tiešām izdzēst šo fontu? Tas netiks ielādēts, ja tiek izmantot msgid "modals.delete-font.title" msgstr "Fonta dzēšana" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Vai tiešām izdzēst šo lapu?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Dzēst lapu" @@ -2906,29 +2945,29 @@ msgstr[0] "Nav izdzēšamu datņu" msgstr[1] "Izdzēš datni" msgstr[2] "Izdzēš datnes" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Dzēst komandu" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Vai tiešām izdzēst šo komandu? Visi ar komandu saistītie projekti un datnes " "tiks neatgriezeniski izdzēstas." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Notiek komandas dzēšana" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Dzēst dalībnieku" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Vai tiešām izdzēst šo dalībnieku no komandas?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Dzēst komandas dalībnieku" @@ -2945,55 +2984,55 @@ msgstr[2] "" "Līdzekļi, kas jau tiek izmantoti šajā datnē, paliks tajā (dizains netiks " "salauzts)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Izdzēst tīmekļa aizķeri" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Vai tiešām izdzēst šo tīmekļa aizķeri?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Notiek tīmekļa aizķeres izdzēšana" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Labot tīmekļa aizķeri" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Labot tīmekļa aizķeri" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Nosūtīt uzaicinājumu" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-pasta ziņojumi, atdalīti ar komatiem" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "Daži dalībnieki jau ir komandā. Mēs uzaicināsim pārējos." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Komandā var uzaicināt dalībniekus, lai viņi varētu piekļūt šai un citām " "komandas datnēm." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Uzaicināt dalībniekus uz komandu" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Tā kā esi šīs komandas vienīgais dalībnieks, tā tiks izdzēsta līdz ar tās " "projektiem un datnēm." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Vai tiešām pamest komandu %s?" @@ -3021,15 +3060,15 @@ msgstr "Atlasīt dalībnieku, ko nozīmēt" msgid "modals.leave-and-reassign.title" msgstr "Pirms pamešanas" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Pamest komandu" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Vai tiešām pamest šo komandu?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Komandas pamešana" @@ -3054,39 +3093,39 @@ msgstr[0] "Pārvietot bibliotēkas" msgstr[1] "Pārvietot bibliotēkas" msgstr[2] "Pārvietot bibliotēkas" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Nobīdes apjoms" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Nodot īpašumtiesības" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Ja tiks nodotas īpašumtiesības, ieņemamā loma tiks nomainīta uz " "\"Pārvaldnieks\", zaudējot dažas atļaujas šajā komandā. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Tu esi šīs komandas pašreizējais īpašnieks. Vai tiešām iecelt %s par jauno " "komandas īpašnieku?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Jauns komandas īpašnieks" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publicēt" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Bibliotēka ir tukša. Vai tiešām publicēt to?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Publicēt tukšu bibliotēku" @@ -3144,21 +3183,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Atjaunināt sastāvdaļas koplietojamā bibliotēkā" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Atjaunināt" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Atcelt" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Tiks atjaunināta koplietojamas bibliotēkas sastāvdaļa. Tas var ietekmēt " "citas datnes, kurās tā ir izmantota." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Atjaunināt sastāvdaļu koplietojamā bibliotēkā" @@ -3272,11 +3311,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Ir pieejama jauna versija, lūgums atsvaidzināt lapu" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Uzaicinājums veiksmīgi nosūtīts" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Uzaicinājuma saite nokopēta" @@ -3429,7 +3468,7 @@ msgstr "" "Jāatceras iekļaut visi. Izstrādātāji, dizaineri, vadītāji... Viedokļu " "dažādībā ir spēks :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Uzaicināt ar lomu:" @@ -3649,193 +3688,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Doties uz pieteikšanos" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Atdalīt" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Jaukts" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Noņemt krāsu" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Atlasīt vienumus, kas izmanto šo stilu" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Pamati" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Pārskata panelis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Pārlūks" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Darbvieta" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Līdzināšana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Labot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Vispārējs" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Vispārējs" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Galvenā izvēlne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Mainīt slāņus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigācija" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigācija" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigācija" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Paneļi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Ceļi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Teksti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Rīki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Tālummaiņa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Tālummaiņa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Komentāri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Pievienot mezglu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Līdzināt pie apakšas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Līdzināt vidū" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Līdzināt vidū līmeniski" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Līdzināt pie abām malām" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Līdzināt pie kreisās malas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Līdzināt pa labi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Līdzināt pie augšas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Līdzināt vidū stateniski" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Izveidot plātni no atlases" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Pārslēgt treknrakstu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Būla starpība" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Būla izslēgšana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Būla krustošanās" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Būla apvienošana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Sūtīt uz aizmuguri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Sūtīt atpakaļ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Virzīt uz priekšu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Izvirzīt priekšā" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Iztīrīt atsaukšanu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopēt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Ievietot saiti starpliktuvē" @@ -3844,287 +3883,271 @@ msgstr "Ievietot saiti starpliktuvē" msgid "shortcuts.copy-props" msgstr "Ievietot īpašības starpliktuvē" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Izveidot jaunu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Izgriezt" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Tālināt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Dzēst" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Dzēst mezglu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Atdalīt sastāvdaļu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Līkne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Plātne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Zīmēt ceļu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Ceļš" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Taisnstūris" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Teksts" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Divkāršot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Atcelt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Izgūt apveidus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Tālummainīt, lai ietilpinātu visu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Apvērst līmeniski" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Apvērst stateniski" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Samazināt fonta izmēru" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Palielināt fonta izmēru" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Doties uz melnrakstiem" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Doties uz koplietojamām bibliotēkām" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Meklēt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Apkopot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Izkliedēt līmeniski" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Rādīt / paslēpt lietotāja saskarni" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Tuvināt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Ievietot attēlu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Pārslēgt slīprakstu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Savienot mezglus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Samazināt burtstarpu" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Palielināt burtstarpu" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Samazināt līnijas augstumu" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Palielināt līnijas augstumu" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Pārslēgt svītrojumu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Izveidot stūri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Izveidot līkni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maska" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Sapludināt mezglus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Pārvietot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Strauji pārvietot uz leju" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Strauji pārvietot pa kreisi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Strauji pārvietot pa labi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Strauji pārvietot uz augšu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Pārvietot mezglu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Pārvietot uz leju" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Pārvietot pa kreisi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Pārvietot pa labi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Pārvietot uz augšu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Nākamā plātne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Saīsnes nav atrastas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Iestatīt necaurspīdīgumu uz 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Iestatīt necaurspīdīgumu uz 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Iestatīt necaurspīdīgumu uz 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Iestatīt necaurspīdīgumu uz 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Iestatīt necaurspīdīgumu uz 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Iestatīt necaurspīdīgumu uz 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Iestatīt necaurspīdīgumu uz 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Iestatīt necaurspīdīgumu uz 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Iestatīt necaurspīdīgumu uz 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Iestatīt necaurspīdīgumu uz 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Krāsu atlasītājs" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Atvērt pārlūka komentāru sadaļu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Doties uz pārskata paneli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Doties uz skatītāja apskatīšanas sadaļu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Doties uz skatītāja mijiedarbības sadaļu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Doties uz skatītāja mijiedarbības sadaļu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Doties uz darbvietu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " vai " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Ielīmēt" @@ -4138,191 +4161,191 @@ msgstr "Ielīmēt īpašības" msgid "shortcuts.plugins" msgstr "Spraudņu pārvaldnieks" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Iepriekšējā plātne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Atatsaukt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Pārdēvēt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Atiestatīt tālummaiņu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Mērogot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Meklēt saīsnes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Atlasīt visu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Atlasīt nākamo slāni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Atlasīt vecākslāni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Atlasīt iepriekšējo slāni" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Atdalīt mezglus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Rādīt/paslēpt pikseļu režģi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Rādīt/paslēpt saīsnes" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Pieķerties mezgliem" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Pieķerties pikseļu režģim" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Sākt labošanu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Sākt mērīšanu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Beigt mērīšanu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Iestatīt sīktēlus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Īsinājumtaustiņi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Pārslēgt dinamisko līdzināšanu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Pārslēgt līdzekļus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Pārslēgt krāsu paleti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Pārslēgt fokusa režīmu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Pārslēgt pilnekrāna režīmu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Rādīt/paslēpt vadlīnijas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Pārslēgt vēsturi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Pārslēgt slāņus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Pievienot / Noņemt elastīgo izkārtojumu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Pievienot/noņemt režģa izkārtojumu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Slēgt / Atslēgt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Slēgt proporcijas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Rādīt/paslēpt mērjoslas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Pievilkt pie vadlīnijām" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Pievilkt pie mērjoslu vadlīnijām" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Pārslēgt teksta paleti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Mainīt izskatu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Pārslēgt redzamību" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Pārslēgt tālummaiņas stilu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Pārslēgt pasvītrojumu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Atsaukt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Atapkopot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Noņemt masku" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Izkliedēt stateniski" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Tālummaiņas samazinājums" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Tālummaiņas palielinājums" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Tālummainīt uz atlasi" @@ -4334,6 +4357,13 @@ msgstr "Plāns uzņēmējdarbībai" msgid "subscription.dashboard.power-up.enterprise-trial.top-title" msgstr "Uzņēmējdarbības plāns (izmēģinājuma)" +#: src/app/main/ui/dashboard/subscription.cljs:64 +#, markdown +msgid "subscription.dashboard.power-up.professional.bottom-text" +msgstr "" +"Iegūsti savām komandām papildu krātuvi, datņu atkopi un vēl ar neierobežoto " +"plānu. [Iegūsti vairāk!|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:63 msgid "subscription.dashboard.power-up.professional.top-title" msgstr "Profesionālais plāns" @@ -4362,8 +4392,9 @@ msgstr "Neierobežots plāns" #, markdown msgid "subscription.dashboard.power-up.unlimited.bottom-text" msgstr "" -"Iegūsti papildu redaktorus, vairāk rezerves kopēšanas, neierobežotu krātuvi " -"un vēl. [Ieskaties uzņēmējdarbības plānā!|target:self](%s)" +"Iegūsti papildu krātuvi, paplašinātu datņu atkopi un neierobežotu redaktoru " +"skaitu visām savām komandām par noteiktu cenu! [Ieskaties uzņēmējdarbības " +"plānā!|target:self](%s)" #: src/app/main/ui/dashboard/subscription.cljs:70 #, unused @@ -4381,11 +4412,17 @@ msgstr "" msgid "subscription.dashboard.power-up.your-subscription" msgstr "Tavs abonements:" +#: src/app/main/ui/dashboard/subscription.cljs:168 +msgid "subscription.dashboard.professional-dashboard-cta-title" +msgstr "" +"Tev piederošajās komandās ir %s redaktoru, bet profesionālais plāns " +"nodrošina līdz 8." + #: src/app/main/ui/dashboard/subscription.cljs:111 msgid "subscription.dashboard.team-plan" msgstr "Komandas plāns" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "Iedarbināt" @@ -4423,12 +4460,19 @@ msgstr "90 dienu automātiski saglabātas versijas un datņu atkope" #: src/app/main/ui/settings/subscription.cljs:394, src/app/main/ui/settings/subscription.cljs:404, src/app/main/ui/settings/subscription.cljs:456 msgid "subscription.settings.enterprise.capped-bill" -msgstr "Ierobežots ikmēneša rēķins" +msgstr "Noteikts ikmēneša rēķins" #: src/app/main/ui/dashboard/subscription.cljs:124, src/app/main/ui/settings/subscription.cljs:371, src/app/main/ui/settings/subscription.cljs:383, src/app/main/ui/settings/subscription.cljs:395, src/app/main/ui/settings/subscription.cljs:405 msgid "subscription.settings.manage-your-subscription" msgstr "Pārvaldīt savu abonementu" +#: src/app/main/ui/settings/subscription.cljs:131 +msgid "subscription.settings.management.dialog.currently-editors-title" +msgid_plural "subscription.settings.management.dialog.currently-editors-title" +msgstr[0] "Pašreiz ir %s cilvēku Tavās komandās, kuri var labot." +msgstr[1] "Pašreiz ir %s cilvēks Tavās komandās, kas var labot." +msgstr[2] "Pašreiz ir %s cilvēki Tavās komandās, kuri var labot." + #: src/app/main/ui/settings/subscription.cljs:149 msgid "subscription.settings.management.dialog.downgrade" msgstr "" @@ -4437,12 +4481,14 @@ msgstr "" #: src/app/main/ui/settings/subscription.cljs:177 msgid "subscription.settings.management.dialog.payment-explanation" -msgstr "(Tagad netiks veikts maksājums)" +msgstr "" +"Pēc izmēģinājuma tiks ieturēta maksa. Šobrīd nav nepieciešama maksājumu " +"karte." #: src/app/main/ui/settings/subscription.cljs:170, src/app/main/ui/settings/subscription.cljs:174 #, markdown msgid "subscription.settings.management.dialog.price-month" -msgstr "**$%s** mēnesī" +msgstr "**$%s**/mēnesī" #: src/app/main/ui/settings/subscription.cljs:126 msgid "subscription.settings.management.dialog.title" @@ -4517,9 +4563,9 @@ msgstr "Neierobežots (izmēģinājuma)" #: src/app/main/ui/settings/subscription.cljs:370, src/app/main/ui/settings/subscription.cljs:382, src/app/main/ui/settings/subscription.cljs:442 msgid "subscription.settings.unlimited.bill" -msgstr "Ierobežots ikmēneša rēķins" +msgstr "Ikmēneša rēķins ierobežots līdz $175" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "Iedarbini savu plānu" @@ -4575,19 +4621,19 @@ msgstr "Parole - Penpot" msgid "title.settings.profile" msgstr "Profils - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Uzaicinājumi - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Dalībnieki - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Iestatījumi - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Tīmekļa aizķeres - %s - Penpot" @@ -4657,43 +4703,43 @@ msgstr "Rādīt mijiedarbības pēc klikšķa" msgid "viewer.header.sitemap" msgstr "Vietnes karte" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Pēdējā piegāde bija veiksmīga." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Līdzināt līmeniskajā vidū (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Izlīdzināt līmeniskās atstarpes (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Līdzināt pa kreisi (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Līdzināt pa labi (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Līdzināt pie apakšas (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Līdzināt stateniskajā vidū (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Izlīdzināt stateniskās atstarpes (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Līdzināt pie augšas (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Pievienot bibliotēku" @@ -4702,19 +4748,19 @@ msgstr "Pievienot bibliotēku" msgid "workspace.assets.assets" msgstr "Līdzekļi" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Visi līdzekļi" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Krāsas" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Pievienot krāsu" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Sastāvdaļas" @@ -4722,23 +4768,23 @@ msgstr "Sastāvdaļas" msgid "workspace.assets.components.add-component" msgstr "Pievienot sastāvdaļu" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s varianti" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Izveidot kopu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Vienumi tiks automātiski nosaukti kā “kopas nosaukums/vienuma nosaukums”" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Dzēst" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Divkāršot" @@ -4746,11 +4792,11 @@ msgstr "Divkāršot" msgid "workspace.assets.duplicate-main" msgstr "Divkāršot galveno" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Labot" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Atlasīt" @@ -4759,27 +4805,27 @@ msgstr "Atlasīt" msgid "workspace.assets.graphics" msgstr "Attēli" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Režģa skats" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Kopa" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Kopas nosaukums" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Saraksta skats" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "vietējā bibliotēka" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Pārvaldīt bibliotēku" @@ -4791,15 +4837,15 @@ msgstr "Līdzekļi nav atrasti" msgid "workspace.assets.open-library" msgstr "Atvērt bibliotēkas datni" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Pārdēvēt" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Pārdēvēt kopu" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Meklēt līdzekļus" @@ -4816,22 +4862,22 @@ msgstr[2] "atlasīti %s vienumi" msgid "workspace.assets.shared-library" msgstr "Koplietojama bibliotēka" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "%s sastāvdaļu" msgstr[1] "%s sastāvdaļa" msgstr[2] "%s sastāvdaļas" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Kārtot" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Burtu stili un veidi" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Pievienot tipogrāfiju" @@ -4856,7 +4902,7 @@ msgstr "Burtstarpa" msgid "workspace.assets.typography.line-height" msgstr "Rindas augstums" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4868,59 +4914,59 @@ msgstr "Teksta stili" msgid "workspace.assets.typography.text-transform" msgstr "Teksta pārveide" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Atapkopot" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Izveidot laukumu" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Izveidot plātni" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Apvienot šūnas" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Pievienot 1 sleju pa labi" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Pievienot 1 sleju pa kreisi" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Izdzēst sleju" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Izdzēst slejas un apveidus" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Divkāršota sleja" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Pievienot 1 rindu zem" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Pievienot 1 rindu virs" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Izdzēst rindu" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Izdzēst rindu un apveidus" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Divkāršot rindu" @@ -4928,7 +4974,7 @@ msgstr "Divkāršot rindu" msgid "workspace.focus.focus-mode" msgstr "Fokusa režīms" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Izslēgt fokusu" @@ -4948,11 +4994,11 @@ msgstr "Lineārais gradients" msgid "workspace.gradients.radial" msgstr "Radiālais gradients" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Atspējot dinamisko līdzināšanu" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Atspējot proporcionālo mērogu" @@ -4961,23 +5007,23 @@ msgstr "Atspējot proporcionālo mērogu" msgid "workspace.header.menu.disable-scale-text" msgstr "Deaktivizēt teksta mērogošanu" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Atspējot pieķeršanos vadotnēm" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Atspējot pieķeršanos pikselim" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Atspējot pievilkšanu mērjoslu vadlīnijām" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Iespējot dinamisko līdzināšanu" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Iespējot proporcionālo mērogu" @@ -4986,51 +5032,51 @@ msgstr "Iespējot proporcionālo mērogu" msgid "workspace.header.menu.enable-scale-text" msgstr "Aktivizēt teksta mērogošanu" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Pieķerties vadotnēm" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Iespējot pieķeršanos pikselim" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Pievilkt pie mērjoslu vadlīnijām" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Paslēpt plātņu nosaukumus" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Paslēpt vadlīnijas" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Paslēpt krāsu paleti" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Paslēpt pikseļu režģi" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Paslēpt mērjoslas" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Paslēpt fontu paleti" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Labot" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Datne" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Palīdzība un informācija" @@ -5039,63 +5085,63 @@ msgstr "Palīdzība un informācija" msgid "workspace.header.menu.option.power-up" msgstr "Padarīt savu plānu jaudīgāku" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Pielāgojumi" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Skatīt" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Atkārtot" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Atlasīt visu" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Rādīt plātņu nosaukumus" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Parādīt vadlīnijas" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Rādīt krāsu paleti" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Rādīt pikseļu režģi" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Rādīt mērjoslas" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Rādīt fontu paleti" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Pārslēgties uz tumšo izskatu" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Pārslēgties uz gaišo izskatu" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "Pārslēgties uz sistēmas izskatu" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Atsaukt" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Atiestatīt" @@ -5111,7 +5157,7 @@ msgstr "Saglabāts" msgid "workspace.header.saving" msgstr "Saglabāšana" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Kopīgot" @@ -5120,11 +5166,11 @@ msgstr "Kopīgot" msgid "workspace.header.unsaved" msgstr "Nesaglabātas izmaiņas" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Skatīšana (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Tālummaiņa" @@ -5136,7 +5182,7 @@ msgstr "Aizpildījums — mērogot, lai aizpildītu" msgid "workspace.header.zoom-fit" msgstr "Ietilpināt — samazināt, lai ietilpinātu" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Tālummainīt, lai ietilpinātu visu" @@ -5144,43 +5190,43 @@ msgstr "Tālummainīt, lai ietilpinātu visu" msgid "workspace.header.zoom-full-screen" msgstr "Pilnekrāns" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Tālummainīt uz atlasi" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Labot režģi" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Iziet" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Apakšējā atbīde" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Rādīt četrpusējas atbīdes iespējas" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Guleniskā atbīde" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Kreisā atbīde" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Labā atbīde" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Augšējā atbīde" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Stateniskā atbīde" @@ -5196,7 +5242,7 @@ msgstr "Darīts" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Noteikt atrašanās vietu" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Norādīt režģa izkārtojumu" @@ -5205,10 +5251,6 @@ msgstr "Norādīt režģa izkārtojumu" msgid "workspace.libraries.add" msgstr "Pievienot" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s krāsas" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Bibliotēkā vēl nav krāsu stilu" @@ -5235,43 +5277,35 @@ msgstr "Nesen izmantotās krāsas" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Papildu RGB" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Saglabāt krāsu stilu" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s sastāvdaļas" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Vai pievieno kādas no šīm, lai izmēģinātu:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "Tavā komandā nav kopīgotu bibliotēku, kuras var meklēt" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "dažas sagataves šeit" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Datņu bibliotēka" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s attēli" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTĒKAS ŠAJĀ DATNĒ" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTĒKAS" @@ -5280,11 +5314,11 @@ msgstr "BIBLIOTĒKAS" msgid "workspace.libraries.library" msgstr "BIBLIOTĒKA" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "BIBLIOTĒKAS JAUNINĀJUMI" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Ielādē…" @@ -5293,51 +5327,47 @@ msgstr "Ielādē…" msgid "workspace.libraries.more-templates" msgstr "Var meklēt " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Nav nevienas koplietojamās bibliotēkas, kas būtu jāatjaunina" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "“%s” nav atrasta neviena atbilstība" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Meklēt koplietojamās bibliotēkas" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "KOPLIETOJAMĀS BIBLIOTĒKAS" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Savienot bibliotēku" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Vairāki burtu stili un veidi" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Atsaistīt visus burtu stilus un veidus" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s burtu stili un veidi" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Atvienot bibliotēku" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Atjaunināt" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "apskatīt visas izmaiņas" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ATJAUNINĀJUMI" @@ -5345,31 +5375,31 @@ msgstr "ATJAUNINĀJUMI" msgid "workspace.notification-pill.detail" msgstr "Informācija" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Jāklikšķina uz pogas \"+\", lai pievienotu mijiedarbības." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Pievienot aizmiglojumu" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Noņemt aizmiglojumu" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Aizmiglojums" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Kopas aizmiglojums" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Atlases aizmiglojums" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Pārslēgt aizmiglojumu" @@ -5377,101 +5407,107 @@ msgstr "Pārslēgt aizmiglojumu" msgid "workspace.options.canvas-background" msgstr "Kanvas fons" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Apcirpt saturu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Sastāvdaļa" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Piezīme" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Ievietot starpliktuvē" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Izveidot piezīmi" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Labot piezīmi" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Galvenais" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Mijmainīt sastāvdaļu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Šajā bibliotēkā vēl nav līdzekļu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "Atsaistīta" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 msgid "workspace.options.component.variant.duplicated.copy.locate" -msgstr "Doties uz galveno sastāvdaļu" +msgstr "Noteikt nesaderīgus variantus" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:496 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:509 msgid "workspace.options.component.variant.duplicated.copy.title" msgstr "" "Šai sastāvdaļai ir nesaderīgi varianti. Jāpārliecinās, ka katram no tiem ir " "neatkārtojama īpašību vērtību kopa." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1246 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 msgid "workspace.options.component.variant.duplicated.group.locate" msgstr "Atrast atkārtojošos variantus" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1243 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1278 msgid "workspace.options.component.variant.duplicated.group.title" msgstr "Dažiem variantiem ir vienādas īpašības un vērtības" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:267 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:268 msgid "workspace.options.component.variant.duplicated.single.all" -msgstr "Šiem variantiem ir vienādas īpašības un vērtības." +msgstr "" +"Šiem variantiem ir vienādas īpašības un vērtības. Jāpielāgo vērtības, lai " +"tās varētu iegūt." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:264 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 msgid "workspace.options.component.variant.duplicated.single.one" -msgstr "Šim variantam ir tādas pašas īpašības un vērtības kā citam." +msgstr "" +"Šim variantam ir tādas pašas īpašības un vērtības kā citam. Jāpielāgo " +"vērtības, lai tās varētu iegūt." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:270 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 msgid "workspace.options.component.variant.duplicated.single.some" -msgstr "Dažiem no šiem variantiem ir vienādas īpašības un vērtības." +msgstr "" +"Dažiem no šiem variantiem ir vienādas īpašības un vērtības. Jāpielāgo " +"vērtības, lai tās varētu iegūt." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "Atrast nederīgus variantus" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "Dažiem variantiem ir nederīgi nosaukumi" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "Šiem variantiem ir nederīgi nosaukumi." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "Šim variantam ir nederīgs nosaukums." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "Dažiem no šiem variantiem ir nederīgi nosaukumi." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[īpašība]=[vērtība], [īpašība]=[vērtība]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "Jāmēģina izmantot šāda uzbūve:" @@ -5487,7 +5523,7 @@ msgstr "ir tāds pats nosaukums;" #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:76 msgid "workspace.options.component.variants-help-modal.rule2" -msgstr "ir vienāds veids;" +msgstr "Ir vienāds veids." #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:77 msgid "workspace.options.component.variants-help-modal.rule2.detail" @@ -5497,13 +5533,13 @@ msgstr "" #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:87 msgid "workspace.options.component.variants-help-modal.rule3" -msgstr "ir tāds pats hierarhijas līmenis." +msgstr "Ir tāds pats hierarhijas līmenis." #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:88 msgid "workspace.options.component.variants-help-modal.rule3.detail" msgstr "Kopas, dēļi un izkārtojumi tiek uztverti kā līdzvērtīgi." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:935, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1157, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 msgid "workspace.options.component.variants-help-modal.title" msgstr "Kā varianti paliek savienoti" @@ -5547,7 +5583,7 @@ msgstr "Augša" msgid "workspace.options.constraints.topbottom" msgstr "Augša un apakša" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Dizains" @@ -5560,22 +5596,22 @@ msgstr "Izguve" msgid "workspace.options.export-multiple" msgstr "Izgūt atlasi" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Izgūt %s elementus" msgstr[1] "Izgūt %s elementu" msgstr[2] "Izgūt %s elementus" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Pievienot izguvi" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Noņemt izguvi" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Piedēklis" @@ -5583,7 +5619,7 @@ msgstr "Piedēklis" msgid "workspace.options.exporting-complete" msgstr "Izguve pabeigta" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Notiek izgūšana…" @@ -5595,27 +5631,27 @@ msgstr "Izgūšana neizdevās" msgid "workspace.options.exporting-object-slow" msgstr "Izgūšana ir neparedzēti lēna" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Aizpildīšana" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Pievienot aizpildījumu" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Noņemt aizpildījumu" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Mainīt paneļa izmēru, lai ietilpinātu saturu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Pievienot plūsmas sākumu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Plūsma" @@ -5624,19 +5660,19 @@ msgstr "Plūsma" msgid "workspace.options.flows.flow-start" msgstr "Plūsmas sākums" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Plūsma sākas" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Noņemt plūsmu" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Auto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Slejas" @@ -5645,7 +5681,7 @@ msgstr "Slejas" msgid "workspace.options.grid.grid-title" msgstr "Režģis" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Krāsa" @@ -5654,15 +5690,15 @@ msgstr "Krāsa" msgid "workspace.options.grid.params.columns" msgstr "Slejas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Rene" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Augstums" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Mala" @@ -5671,7 +5707,7 @@ msgstr "Mala" msgid "workspace.options.grid.params.rows" msgstr "Rindas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Iestatīt kā noklusējumu" @@ -5685,159 +5721,159 @@ msgstr "Izmērs" msgid "workspace.options.grid.params.type" msgstr "Tips" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Apakša" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centrs" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Pa kreiss" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Pa labi" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Izstiept" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Augša" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Izmantot noklusējumu" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Platums" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Rindas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Kvadrāts" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Kopas aizpildījums" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Kopas vilkums" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Pievienot vadlīniju" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Noņemt vadlīniju" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Vadotnes" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Pārslēgt vadlīniju" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Augstums" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Apskatīt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Darbība" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Pēc kavēšanās" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animācija" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Izšķīst" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Nav" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Grūdiens" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Bīdīšana" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "auto" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Pievienot fona pārklājumu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Aizvērt, noklikšķinot ārpus" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Aizvērt pārklājumu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Aizvērt pārklājumu: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Nobīde" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Galamērķis" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Ilgums" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Mīkstināšana" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Mīkstināt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Viegli iekšā" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Viegli iekšā ārā" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Viegli ārā" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Lineāri" @@ -5846,47 +5882,47 @@ msgstr "Lineāri" msgid "workspace.options.interaction-in" msgstr "Iekšā" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Peles ievade" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Peles pamešana" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Doties uz" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Doties uz: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(nav noteikts)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Nobīdes efekts" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Uz klikšķa" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Atvērt pārklājumu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Atvērt pārklājumu: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Atvērt URL" @@ -5895,87 +5931,87 @@ msgstr "Atvērt URL" msgid "workspace.options.interaction-out" msgstr "Ārā" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Apakšējais centrs" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Apakšā pa kreisi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Apakšā pa labi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Centrs" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manuāli" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Augšējais centrs" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Augšā pa kreisi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Augšā pa labi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Novietojums" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Paturēt ritināšanas pozīciju" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Iepriekšējais ekrāns" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Attiecībā pret" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "sevi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Pārslēgt pārklājumu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Pārslēgt pārklājumu: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Izraisītājs" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Karāšanās laikā" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Nospiešanas laikā" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Mijiedarbības" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Pievienot mijiedarbību" @@ -5984,67 +6020,67 @@ msgstr "Pievienot mijiedarbību" msgid "workspace.options.interactions.remove-interaction" msgstr "Noņemt mijiedarbību" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Krāsa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Krāsas izbalēšana" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Krāsas izcēlums" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Aptumšot" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Starpība" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Izslēgšana" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Konturgaisma" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Nokrāsa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Izgaismot" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Spožums" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Vairot" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normāls" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Pārklājums" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Piesātinājums" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Ekrāns" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Izkliedgaisma" @@ -6063,7 +6099,7 @@ msgstr "Apkopot slāņus" msgid "workspace.options.layer-options.title.multiple" msgstr "Atlasītie slāņi" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Pārslēgt slāņa redzamību" @@ -6072,19 +6108,19 @@ msgstr "Pārslēgt slāņa redzamību" msgid "workspace.options.layout-item.advanced-ops" msgstr "Papildu opcijas" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Maks.augstums" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Maks.platums" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.augstums" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.platums" @@ -6198,15 +6234,15 @@ msgstr "telpa starp" msgid "workspace.options.layout.top" msgstr "Augša" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Vairāk krāsu" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Vairāk bibliotēkas krāsu" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Caurspīdīgums" @@ -6215,35 +6251,35 @@ msgstr "Caurspīdīgums" msgid "workspace.options.position" msgstr "Novietojums" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototips" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Rādiuss" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Apakšā pa kreisi" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Apakšā pa labi" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Augšā pa kreisi" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Augšā pa labi" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Sakļaut neatkarīgu rādiusu" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Rādīt neatkarīgu rādiusu" @@ -6255,7 +6291,7 @@ msgstr "Pēdējie" msgid "workspace.options.retry" msgstr "Atkārtot" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Pagriešana" @@ -6263,31 +6299,31 @@ msgstr "Pagriešana" msgid "workspace.options.search-font" msgstr "Meklēt fontu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Jāatlasa apveids, plātne vai kopa, lai vilktu savienojumu uz citu plātni." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Atlasītās krāsas" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Atlases aizpildījums" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Atlases vilkums" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Pievienot ēnu" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Aizmiglojums" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Ēnas krāsa" @@ -6299,63 +6335,64 @@ msgstr "Ēnot" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Iekšējā ēna" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Noņemt ēnu" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Izkliede" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Ēna" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Kopas ēna" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Atlases ēnas" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Pārslēgt ēnu" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Rādīt izguvēs" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Rādīt skatītājā" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Izmērs" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Izmēra standarti" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "Paturēt malu attiecību" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "Nepaturēt malu attiecību" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Vilkums" @@ -6364,7 +6401,7 @@ msgstr "Vilkums" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Apļa marķieris" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Aplis" @@ -6373,7 +6410,7 @@ msgstr "Aplis" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Rombveida marķieris" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Dimants" @@ -6382,19 +6419,19 @@ msgstr "Dimants" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Līnijas bulta" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Bulta" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Nav" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Apaļš" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Kvadrāts" @@ -6403,7 +6440,7 @@ msgstr "Kvadrāts" msgid "workspace.options.stroke-cap.square-marker" msgstr "Kvadrāta marķieris" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Taisnstūris" @@ -6412,83 +6449,83 @@ msgstr "Taisnstūris" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Trīsstūra bulta" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Trijstūris" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Vilkuma krāsa" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Vilkuma biezums" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Pievienot vilkuma krāsu" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centrs" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Pārtraukts" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Punktots" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Iekšā" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Jaukts" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Ārā" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Noņemt vilkumu" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Blīvs" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Līdzināt pie apakšas" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Līdzināt vidū (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Līdzināt pie augšas" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "No kreisās uz labo pusi" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "No labās uz kreiso pusi" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Automātiskais augstums" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Automātiskais platums" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fiksēts" @@ -6510,35 +6547,35 @@ msgstr "Mazie burti" msgid "workspace.options.text-options.none" msgstr "Nav" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Pārsvītrots (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Līdzināt vidū" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Izlīdzināt" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Līdzināt pa kreisi" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Līdzināt pa labi" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Teksts" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Kopas teksts" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Atlases teksts" @@ -6547,7 +6584,7 @@ msgstr "Atlases teksts" msgid "workspace.options.text-options.titlecase" msgstr "Virsraksta stils" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Pasvītrojums (%s)" @@ -6556,19 +6593,19 @@ msgstr "Pasvītrojums (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Lielie burti" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Jāizmanto atskaņosanas poga galvenē, lai palaistu prototipa skatu." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Platums" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X ass" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y ass" @@ -6612,78 +6649,78 @@ msgstr "Atdalīt mezglus (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Pieķert mezglus (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Atvērt" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Atklāt [vairāk spraudņu](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Vēl nav uzstādīts neviens spraudnis" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Spraudņa deklarācija ir nepareiza." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Jābūt redaktoram, lai izmantotu šo spraudni" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Spraudnis nepastāv vai URL ir nepareizs." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Uzstādīt" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Uzstādītie spraudņi" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Spraudņu pārvaldnieks" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Spraudņi" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "ATJAUNINĀT ŠO SPRAUDNI" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "Spraudnis kopš pēdējās atvēršanas reizes ir mainīts. Tam tagad ir vajadzīga " "piekļuve:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Uzsākt datņu lejupielādi." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Lasīt savas piebildes un atbildes." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Lasīt un mainīt savas piebildes un atbildēt savā vārdā." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Lasīt datņu, kurām lietotājiem ir piekļuve, saturu." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Lasīt un mainīt datņu, kurām lietotājiem ir piekļuve, saturu." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Lūgums ņemt vērā, ka šo spraudni izveidoja trešā puse, tāpēc pirms " @@ -6691,31 +6728,31 @@ msgstr "" "Tavu datu privātums un drošība. Ja ir kādas neskaidrības, lūgums sazināties " "ar atbalstu." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Lasīt bibliotēkas un līdzekļus." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Lasīt un mainīt bibliotēkas un līdzekļus." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "SPRAUDNIS \"%s\" PIEPRASA PIEKĻUVI:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Lasīt pašreizējā lietotāja profila informāciju." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Spraudņu saraksts" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Noņemt spraudni" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Ierakstīt spraudņa URL" @@ -6723,26 +6760,26 @@ msgstr "Ierakstīt spraudņa URL" msgid "workspace.plugins.success" msgstr "Spraudnis ir pareizi ielādēts." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Spraudņi" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "NE TAGAD" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Vēlies izmēģināt? Tas tiks atvērts jaunā melnrakstā Tavai pašreizējai " "komandai. (Ja nē, vienmēr to var atrast jebkuras datnes uzstādītajos " "spraudņos.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "SPRAUDNIS \"%s\" IR UZSTĀDĪTS." -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "IZMĒĢINĀT SPRAUDNI" @@ -6754,15 +6791,15 @@ msgstr "Pievienot elastīgo izkārtojumu" msgid "workspace.shape.menu.add-grid" msgstr "Pievienot režģa izkārtojumu" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Pievienot izkārtojumu" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Izveidot variantu" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "Pievienot jaunu īpašību" @@ -6806,7 +6843,7 @@ msgstr "Ievietot starpliktuvē kā SVG" msgid "workspace.shape.menu.copy-text" msgstr "Ievietot starpliktuvē kā tekstu" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Izveidot piezīmi" @@ -6814,11 +6851,11 @@ msgstr "Izveidot piezīmi" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Atlase uz plātni" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Izveidot sastāvdaļu" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Izveidot vairākas sastāvdaļas" @@ -6826,7 +6863,7 @@ msgstr "Izveidot vairākas sastāvdaļas" msgid "workspace.shape.menu.cut" msgstr "Izgriezt" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Dzēst" @@ -6834,15 +6871,15 @@ msgstr "Dzēst" msgid "workspace.shape.menu.delete-flow-start" msgstr "Izdzēst plūsmas sākumu" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Atvienot instanci" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Atvienot instances" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Starpība" @@ -6854,11 +6891,11 @@ msgstr "Divkāršot" msgid "workspace.shape.menu.edit" msgstr "Labot" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Izslēgt" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Izklāt" @@ -6891,19 +6928,19 @@ msgstr "Doties uz galvenās sastāvdaļas datni" msgid "workspace.shape.menu.group" msgstr "Kopa" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Slēpt" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Rādīt/paslēpt UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Šķēlums" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Slēgt" @@ -6911,7 +6948,7 @@ msgstr "Slēgt" msgid "workspace.shape.menu.mask" msgstr "Maska" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Ielīmēt" @@ -6931,11 +6968,11 @@ msgstr "Noņemt elastīgo izkārtojumu" msgid "workspace.shape.menu.remove-grid" msgstr "Noņemt režģa izkārtojumu" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Noņemt izkārtojumu" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "Noņemt īpašību" @@ -6943,15 +6980,15 @@ msgstr "Noņemt īpašību" msgid "workspace.shape.menu.rename" msgstr "Pārdēvēt" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Atiestatīt aizvietojumus" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Atjaunot galveno sastāvdaļu" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "Atjaunot variantu" @@ -6959,15 +6996,15 @@ msgstr "Atjaunot variantu" msgid "workspace.shape.menu.select-layer" msgstr "Atlasīt slāni" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Pāradīt" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Rādīt līdzekļu panelī" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Rādīt galveno sastāvdaļu" @@ -6980,6 +7017,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Iestatīt kā sīktēlu" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformēt par ceļu" @@ -6987,11 +7025,11 @@ msgstr "Transformēt par ceļu" msgid "workspace.shape.menu.ungroup" msgstr "Atapkopot" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Apvienot" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Atslēgt" @@ -7004,7 +7042,7 @@ msgstr "Noņemt masku" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Atjaunināt galvenās sastāvdaļas" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Atjaunināt galveno sastāvdaļu" @@ -7016,11 +7054,11 @@ msgstr "Sakļaut sānjoslu" msgid "workspace.sidebar.expand" msgstr "Izvērst sānjoslu" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Vēsture" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Slāņi" @@ -7060,11 +7098,11 @@ msgstr "Teksti" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Ievietotie SVG atribūti" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Lapas" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Pievienot lapu" @@ -7081,27 +7119,27 @@ msgstr "%s aktīvi izskati" msgid "workspace.tokens.add set" msgstr "Pievienot kopu" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Pievienot jaunu izskatu" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "Pievienot kopu šai grupai" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "Pievienot tekstvienību: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Pielietota" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "Ass" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Atpakaļ uz izskatu sarakstu" @@ -7131,15 +7169,15 @@ msgstr "Krāsa" msgid "workspace.tokens.create-new-theme" msgstr "Tagad izveido savu pirmo izskatu!" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Izveidot kādu." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Izveidot jaunu %s tekstvienību" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Izdzēst tekstvienību" @@ -7147,19 +7185,19 @@ msgstr "Izdzēst tekstvienību" msgid "workspace.tokens.delete-theme-title" msgstr "Izdzēst izskatu" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Pavairot tekstvienību" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "dublējums" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Labot tekstvienību" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Labot izskatu" @@ -7167,15 +7205,11 @@ msgstr "Labot izskatu" msgid "workspace.tokens.edit-themes" msgstr "Labot izskatus" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Labot tekstvienību" - #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "Tekstvienības vērtība nevar būt tukša" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Jāievada %s tekstvienības nosaukums" @@ -7207,7 +7241,7 @@ msgstr "Priekšskatījums:" msgid "workspace.tokens.export.single-file" msgstr "Viena datne" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "Spraugas" @@ -7229,17 +7263,17 @@ msgstr "Tekstvienību apkopošana vēl netiek nodrošināta." msgid "workspace.tokens.import-error" msgstr "Ievietošanas kļūda:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "Daudzās datnēs datnes nosaukums/ceļš ir kopas nosaukums." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "" "Vienā JSON datnē pirmā līmeņa atslēgām vajadzētu būt tekstvienību kopu " "nosaukumiem." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "Ievietot tekstvienības" @@ -7250,7 +7284,7 @@ msgstr "" "JSON datnes ievietošana pārrakstīs visas pašreizējās tekstvienības, kopas " "un izskatus" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "" "Tekstvienību ievietošana aizvietos visas pašreizējāš tekstvienības, kopas " @@ -7305,15 +7339,15 @@ msgstr "Izskats" msgid "workspace.tokens.label.theme-placeholder" msgstr "Pievienot izskatu (piem., \"Gaišs\")" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "Malas" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "Lielākais izmērs" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "Mazākais lielums" @@ -7329,7 +7363,7 @@ msgstr "Nav spēkā esošu kopu" msgid "workspace.tokens.no-active-theme" msgstr "Nav izvēlēts izskats" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Nepieciešams būt redaktoram, lai aktivētu kopas vai atceltu to aktivēšanu" @@ -7337,11 +7371,11 @@ msgstr "Nepieciešams būt redaktoram, lai aktivētu kopas vai atceltu to aktiv msgid "workspace.tokens.no-permission-themes" msgstr "Jābūt redaktoram, lai izmantotu izskatus" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Vēl nav nevienas kopas. Vispirms ir jāizveido kāda." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Šeit vēl nav nevienas kopas." @@ -7365,12 +7399,12 @@ msgstr "Nederīga tekstvienības vērtība. Aprēķinātā vērtība ir pārāk msgid "workspace.tokens.opacity-range" msgstr "Necaurspīdīgumam ir jābūt starp 0 un 100 % vai 0 un 1 (piem., 50% jeb 0.5)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Sākotnējā vērtība: %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "Atbīdes" @@ -7378,7 +7412,7 @@ msgstr "Atbīdes" msgid "workspace.tokens.radius" msgstr "Rādiuss" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Atsauce nav derīga vai tā nav nevienā aktīvā kopā" @@ -7387,7 +7421,7 @@ msgstr "Atsauce nav derīga vai tā nav nevienā aktīvā kopā" msgid "workspace.tokens.reference-error" msgstr "Atsauču kļūdas: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Atrisinātā vērtība: %s" @@ -7396,7 +7430,7 @@ msgstr "Atrisinātā vērtība: %s" msgid "workspace.tokens.save-theme" msgstr "Saglabāt izskatu" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Atlasīt kopu." @@ -7404,11 +7438,11 @@ msgstr "Atlasīt kopu." msgid "workspace.tokens.self-reference" msgstr "Tekstvienībai ir atsauce uz sevi" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "Ievadīt nosaukumu (jāizmanto \"/\" kopām)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "" "Noteikt, kuras tekstvienību kopas vajadzētu izmantot kā daļu no šīs izskata " @@ -7431,7 +7465,7 @@ msgstr "Šeit var konfigurēt pamata fonta izmēru, kas nosaka 1rem vērtību:" msgid "workspace.tokens.settings" msgstr "Tekstvienību iestatījumi" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "Izmērs" @@ -7453,16 +7487,16 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "Izskatu saraksts" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Apraksts" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Nosaukums" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " nav derīgs tekstvienības nosaukums.\n" @@ -7474,11 +7508,11 @@ msgstr "" msgid "workspace.tokens.token-not-resolved" msgstr "Nevarēja atrisināt atsauces tekstvienību ar šādu nosaukumu: %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Vērtība" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "Jāievada vērtība vai aizstājvārds ar {aizstājvārds}" @@ -7486,7 +7520,7 @@ msgstr "Jāievada vērtība vai aizstājvārds ar {aizstājvārds}" msgid "workspace.tokens.tokens-section-title" msgstr "TEKSTVIENĪBAS - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Rīki" @@ -7494,7 +7528,7 @@ msgstr "Rīki" msgid "workspace.tokens.unknown-token-type-section" msgstr "Veids \"%s\" nav atbalstīts (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "Vērtība nav derīga" @@ -7502,13 +7536,13 @@ msgstr "Vērtība nav derīga" msgid "workspace.tokens.value-with-units" msgstr "Nederīga vērtība: mērvienības nav atļautas." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "" "Šīs tekstvienības pārdēvēšana salauzīs visas atsauces uz tās iepriekšējo " "nosaukumu." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Līdzekļi" @@ -7516,7 +7550,7 @@ msgstr "Līdzekļi" msgid "workspace.toolbar.color-palette" msgstr "Krāsu palete (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Komentāri (%s)" @@ -7727,19 +7761,19 @@ msgstr "Darbība ar %s" msgid "workspace.undo.title" msgstr "Vēsture" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Izlaist" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Vairāk informācijas" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Koplietojamajās bibliotēkās ir atjauninājumi" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Atjaunināt" @@ -7799,11 +7833,11 @@ msgstr "Vai atjaunot šo versiju?" msgid "workspace.versions.snapshot-menu" msgstr "Atvērt momentuzņēmumu izvēlni" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Darbības" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Vēsture" @@ -7825,3 +7859,29 @@ msgstr "Automātiski saglabātas versijas tiks paturētas %s dienas." #, unused msgid "workspace.viewport.click-to-close-path" msgstr "Jānoklikšķina, lai aizvērtu ceļu" + +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:98, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:105 +msgid "color-row.token-color-row.deleted-token" +msgstr "Šī tekstvienība nepastāv vai ir izdzēsta." + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:35 +msgid "color-token.empty-state" +msgstr "" +"Nav pieejama neviena krāsu tekstvienība. Jāpārbauda izmantotās kopas/izskati " +"vai jāpievieno jaunas tekstvienības." + +#: src/app/main/ui/dashboard/team.cljs:765 +msgid "dashboard.invitation-modal.delete" +msgstr "Tu grasies izdzēst uzaicinājumus:" + +#: src/app/main/ui/dashboard/team.cljs:766 +msgid "dashboard.invitation-modal.resend" +msgstr "Tu grasies atkārtoti nosūtīt uzaicinājumus:" + +#: src/app/main/ui/dashboard/team.cljs:756 +msgid "dashboard.invitation-modal.title.delete-invitations" +msgstr "Izdzēst uzaicinājumus" + +#: src/app/main/ui/dashboard/team.cljs:757 +msgid "dashboard.invitation-modal.title.resend-invitations" +msgstr "Atkārtoti nosūtīt uzaicinājumus" diff --git a/frontend/translations/ml.po b/frontend/translations/ml.po index 8344b45eba..def247bc75 100644 --- a/frontend/translations/ml.po +++ b/frontend/translations/ml.po @@ -142,7 +142,7 @@ msgstr "അക്കൗണ്ട് സൃഷ്ടിക്കുക" msgid "auth.sidebar-tagline" msgstr "ഡിസൈനിങിനും പ്രോട്ടോടൈപ്പിങിനുമുള്ള ഓപ്പൺ സോഴ്സ് പ്രതിവിധി." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "ഉപയോഗനിബന്ധനകൾ" @@ -176,7 +176,7 @@ msgstr "പങ്കുവെക്കാവുന്ന കണ്ണി ഇവ msgid "common.share-link.title" msgstr "പ്രോട്ടോടൈപ്പുകൾ പങ്കുവെയ്ക്കുക" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "പങ്കിട്ട ലൈബ്രറിയായി ചേർക്കുക" @@ -184,19 +184,19 @@ msgstr "പങ്കിട്ട ലൈബ്രറിയായി ചേർക msgid "dashboard.change-email" msgstr "ഇമെയിൽ മാറ്റുക" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(പകർത്തുക)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "പുതിയ സംഘം രൂപീകരിക്കുക" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "നിങ്ങളുടെ പെൻപോട്ട്" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "സംഘത്തെ നീക്കുക" @@ -208,7 +208,7 @@ msgstr "പകർപ്പ്" msgid "dashboard.duplicate-multi" msgstr "%s ഫയലുകളുടെ പകർപ്പ്" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "ആർട്ട്ബോർഡുകൾ പിഡിഎഫായി എക്സ്പോർട്ട് ചെയ്യുക" @@ -220,7 +220,7 @@ msgstr "പിഡിഎഫായി എക്സ്പോർട്ട് ചെ msgid "dashboard.export-multi" msgstr "പെൻപോട്ട് %s ഫയലുകൾ എക്സ്പോർട്ട് ചെയ്യുക" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "എക്സ്പോർട്ട്" diff --git a/frontend/translations/ms.po b/frontend/translations/ms.po index b8a67812c9..0c62f58696 100644 --- a/frontend/translations/ms.po +++ b/frontend/translations/ms.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: Revenant \n" +"PO-Revision-Date: 2025-10-07 16:35+0000\n" +"Last-Translator: Anonymous \n" "Language-Team: Malay " "\n" "Language: ms\n" @@ -9,7 +9,7 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:227 msgid "auth.create-demo-account" @@ -127,7 +127,7 @@ msgstr "Cipta akaun" msgid "auth.sidebar-tagline" msgstr "Penyelesaian sumber terbuka untuk reka bentuk dan prototaip." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Syarat perkhidmatan" @@ -146,7 +146,7 @@ msgstr "Kami telah menghantar e-mel pengesahan kepada" msgid "branding-illustrations-marketing-pieces" msgstr "... penjenamaan, ilustrasi, bahagian pemasaran, dll." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Terbitkan" @@ -217,7 +217,7 @@ msgstr "Kongsi prototaip" msgid "common.share-link.view-all" msgstr "Pilih semua" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Nyahterbitkan" @@ -338,7 +338,7 @@ msgstr "Token akan luput pada %s" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "Token tidak mempunyai tarikh luput" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Tambahkan sebagai Perpustakaan kongsi" @@ -346,27 +346,27 @@ msgstr "Tambahkan sebagai Perpustakaan kongsi" msgid "dashboard.change-email" msgstr "tukar e-mel" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(salin)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Buat pasukan baharu" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Penpot anda" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Padam pasukan" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Muat turun fail Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Muat turun fail standard (.svg + .json)" @@ -382,7 +382,7 @@ msgstr "Pendua %s fail" msgid "dashboard.export-binary-multi" msgstr "Muat turun %s fail Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Eksport papan sebagai PDF" @@ -398,7 +398,7 @@ msgstr "Eksport fail Penpot %s" msgid "dashboard.export-multiple.selected" msgstr "%s daripada %s elemen dipilih" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Eksport" @@ -575,11 +575,11 @@ msgstr "Memuat naik data ke pelayan (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Memuat naik fail: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Jemput orang ramai" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Tinggalkan pasukan" @@ -591,7 +591,7 @@ msgstr "Perpustakaan & Templat" msgid "dashboard.libraries-and-templates.explore" msgstr "Terokai lebih banyak daripada mereka dan ketahui cara untuk menyumbang" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Terdapat masalah mengimport templat. Templat tidak diimport." @@ -623,7 +623,7 @@ msgstr "Pindah ke pasukan lain" msgid "dashboard.new-file" msgstr "+ Fail Baharu" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Fail Baharu" @@ -631,7 +631,7 @@ msgstr "Fail Baharu" msgid "dashboard.new-project" msgstr "+ Projek baharu" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Projek Baharu" @@ -639,7 +639,7 @@ msgstr "Projek Baharu" msgid "dashboard.no-matches-for" msgstr "Tiada padanan ditemui untuk \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Projek yang disemat akan muncul di sini" @@ -655,7 +655,7 @@ msgstr "Alamat e-mel anda telah berjaya disahkan" msgid "dashboard.notifications.password-saved" msgstr "Kata laluan berjaya disimpan!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s ahli" @@ -671,7 +671,7 @@ msgstr "Pilihan" msgid "dashboard.password-change" msgstr "Tukar kata laluan" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Semat/Nyahsemat" @@ -692,7 +692,7 @@ msgstr "Alih keluar sebagai Pustaka Dikongsi" msgid "dashboard.save-settings" msgstr "Simpan tetapan" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Cari…" @@ -730,7 +730,7 @@ msgstr[0] "Fail anda telah berjaya dibuat pendua" msgid "dashboard.success-duplicate-project" msgstr "Projek anda telah berjaya dibuat pendua" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Fail anda berjaya dialihkan" @@ -742,15 +742,15 @@ msgstr "Fail anda telah berjaya dialihkan" msgid "dashboard.success-move-project" msgstr "Projek anda berjaya dialihkan" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Maklumat pasukan" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Anggota kumpulan" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Projek pasukan" @@ -766,7 +766,7 @@ msgstr "Hasil carian" msgid "dashboard.type-something" msgstr "Taip untuk hasil carian" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Nyahterbit Perpustakaan" @@ -774,38 +774,38 @@ msgstr "Nyahterbit Perpustakaan" msgid "dashboard.update-settings" msgstr "Kemas kini tetapan" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Adalah aktif" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Apabila cangkuk ini dicetuskan, butiran peristiwa akan dihantar" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Jenis kandungan" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Cipta webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook berjaya dihasilkan." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhooks adalah cara mudah untuk membolehkan tapak web dan apl lain " "dimaklumkan apabila acara tertentu berlaku di Penpot. Kami akan menghantar " "permintaan POST ke setiap URL yang anda berikan." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Tekan butang \"Tambah webhook\" untuk menambahnya." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Tiada webhook dibuat setakat ini." @@ -825,7 +825,7 @@ msgstr "E-mel" msgid "dashboard.your-name" msgstr "Nama anda" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Penpot anda" @@ -841,11 +841,11 @@ msgstr "Perhatian" msgid "ds.component-subtitle" msgstr "Komponen untuk dikemas kini:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Batal" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -889,11 +889,11 @@ msgstr "E-mel sudah disahkan." msgid "errors.email-as-password" msgstr "Anda tidak boleh menggunakan e-mel sebagai kata laluan" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "E-mel «%s» mempunyai banyak laporan lantunan kekal." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "E-mel «%s» telah dilaporkan sebagai spam atau melantun secara kekal." @@ -914,7 +914,7 @@ msgstr "" "yang anda cuba buka. Migrasi untuk '%s' perlu digunakan sebelum fail boleh " "dibuka." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Sesuatu yang tidak kena telah berlaku." @@ -947,7 +947,7 @@ msgstr "Jemputan ini mungkin dibatalkan atau mungkin tamat tempoh." msgid "errors.ldap-disabled" msgstr "Pengesahan LDAP dilumpuhkan." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Anda telah mencapai petikan '%s'. Hubungi sokongan." @@ -963,7 +963,7 @@ msgstr "Nampaknya kandungan imej tidak sepadan dengan sambungan fail." msgid "errors.media-type-not-allowed" msgstr "Nampaknya ini bukan imej yang sah." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Profil yang anda jemput mempunyai e-mel yang diredamkan (laporan spam atau " @@ -987,7 +987,7 @@ msgstr "Data tidak sah dalam papan klip" msgid "errors.profile-blocked" msgstr "Profil disekat" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Profil anda mempunyai e-mel yang diredamkan (laporan spam atau lantunan " @@ -1001,17 +1001,17 @@ msgstr "Pendaftaran dilumpuhkan pada masa ini." msgid "errors.team-feature-mismatch" msgstr "Ciri tidak serasi '%s' dikesan" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Ahli tidak mencukupi untuk meninggalkan pasukan, anda mungkin mahu " "memadamkannya." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Ahli yang anda cuba tetapkan tidak wujud." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Pemilik tidak boleh meninggalkan pasukan, anda mesti menetapkan semula " @@ -1033,31 +1033,31 @@ msgstr "Ralat Pengesahan" msgid "errors.version-not-supported" msgstr "Fail mempunyai nombor versi yang tidak serasi" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Ralat sambungan, URL tidak dapat dicapai" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL tidak lulus pengesahan." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Penghantaran terakhir tidak berjaya." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Ralat pada pengesahan SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Masa tamat" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Ralat yang tidak dijangka semasa mengesahkan" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Status tidak dijangka %s" @@ -1121,19 +1121,19 @@ msgstr "Ralat telah berlaku" msgid "inspect.attributes.blur" msgstr "Kabur" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Nilai" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1141,7 +1141,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Isi" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Muat turun sumber gambar" @@ -1235,81 +1235,84 @@ msgstr "Padu" msgid "inspect.attributes.stroke.width" msgstr "Lebar" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografi" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Keluarga Fon" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Saiz huruf" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Gaya Huruf" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Berat Huruf" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Jarak Huruf" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Tinggi Garis" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Hiasan Teks" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Tiada" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Garis bawah" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformasian Teks" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Huruf Tajuk" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Huruf Kecil" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Tiada" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Nyahset" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Huruf Besar" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Jika anda ingin mengetahui lebih lanjut tentang pemeriksaan reka bentuk, " "lawati pusat bantuan Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Maklumat lanjut tentang inspect" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Pilih bentuk, papan atau kumpulan untuk memeriksa sifat dan kod mereka" @@ -1369,7 +1372,7 @@ msgstr "Teks" msgid "inspect.tabs.info" msgstr "Maklumat" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Pintasan" @@ -1381,7 +1384,7 @@ msgstr "Terima" msgid "labels.access-tokens" msgstr "Token capaian" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktif" @@ -1389,7 +1392,7 @@ msgstr "Aktif" msgid "labels.add-custom-font" msgstr "Tambah fon tersuai" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Pentadbir" @@ -1397,7 +1400,7 @@ msgstr "Pentadbir" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Semua" @@ -1420,7 +1423,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Ralat pelayan (Bad Gateway)" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Batal" @@ -1428,15 +1431,15 @@ msgstr "Batal" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Tutup" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Komen" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Komuniti" @@ -1444,7 +1447,7 @@ msgstr "Komuniti" msgid "labels.confirm-password" msgstr "Sahkan kata laluan" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Teruskan" @@ -1456,11 +1459,11 @@ msgstr "Teruskan dengan" msgid "labels.continue-with-penpot" msgstr "Anda boleh meneruskan dengan akaun Penpot" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Salin pautan" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Cipta" @@ -1480,7 +1483,7 @@ msgstr "Fon tersuai" msgid "labels.dashboard" msgstr "Papan pemuka" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Padam" @@ -1492,7 +1495,7 @@ msgstr "Padam komen" msgid "labels.delete-comment-thread" msgstr "Padam bebenang" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Padam jemputan" @@ -1504,15 +1507,15 @@ msgstr "Padam fail %s" msgid "labels.developer" msgstr "Pembangun" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Buang" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Draf" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Sunting" @@ -1520,15 +1523,15 @@ msgstr "Sunting" msgid "labels.edit-file" msgstr "Sunting fail" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Penyunting" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Tamat tempoh" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Eksport" @@ -1556,7 +1559,7 @@ msgstr "Pembekal fon" msgid "labels.font-variants" msgstr "Gaya" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fon" @@ -1570,11 +1573,11 @@ msgstr "Pengasas/VP" msgid "labels.freelancer" msgstr "Saya seorang pekerja bebas (freelancer)" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repositori Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Beri maklum balas" @@ -1582,15 +1585,15 @@ msgstr "Beri maklum balas" msgid "labels.go-back" msgstr "Pergi balik" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Pusat Bantuan" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Sembunyikan komen yang diselesaikan" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "tidak aktif" @@ -1612,7 +1615,7 @@ msgstr "Ralat Dalaman" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Jemputan" @@ -1620,7 +1623,7 @@ msgstr "Jemputan" msgid "labels.language" msgstr "Bahasa" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Perpustakaan & Templat" @@ -1628,7 +1631,7 @@ msgstr "Perpustakaan & Templat" msgid "labels.log-or-sign" msgstr "Log masuk atau daftar" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Log keluar" @@ -1636,11 +1639,11 @@ msgstr "Log keluar" msgid "labels.marketing" msgstr "Pemasaran" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Ahli" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Ahli" @@ -1648,17 +1651,17 @@ msgstr "Ahli" msgid "labels.new-password" msgstr "Kata laluan baharu" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Seterusnya" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "" "Anda telah melihat semua yang baru! Pemberitahuan ulasan baharu akan " "dipaparkan di sini." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Tiada jemputan tertunda." @@ -1673,7 +1676,7 @@ msgstr "" msgid "labels.not-found.main-message" msgstr "Alamak!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "%s fail" @@ -1683,7 +1686,7 @@ msgid "labels.num-of-frames" msgid_plural "labels.num-of-frames" msgstr[0] "%s papan" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "%s projek" @@ -1705,7 +1708,7 @@ msgstr "atau" msgid "labels.other" msgstr "Lain-lain (nyatakan)" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Pemilik" @@ -1713,7 +1716,7 @@ msgstr "Pemilik" msgid "labels.password" msgstr "Kata laluan" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Belum selesai" @@ -1729,11 +1732,11 @@ msgstr "Pengurus Produk atau Projek" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projek" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Nota keluaran" @@ -1747,11 +1750,11 @@ msgstr "Muat semula fail" msgid "labels.remove" msgstr "Alih keluar" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Buang ahli" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Namakan semula" @@ -1759,7 +1762,7 @@ msgstr "Namakan semula" msgid "labels.rename-team" msgstr "Namakan semula pasukan" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Hantar semula jemputan" @@ -1767,15 +1770,15 @@ msgstr "Hantar semula jemputan" msgid "labels.retry" msgstr "Cuba semula" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Peranan" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Simpan" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Cari" @@ -1803,7 +1806,7 @@ msgstr "Kami sedang menjalankan penyelenggaraan berjadual pada sistem kami." msgid "labels.service-unavailable.main-message" msgstr "Perkhidmatan Tidak Tersedia" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Tetapan" @@ -1815,11 +1818,11 @@ msgstr "Kongsi" msgid "labels.share-prototype" msgstr "Kongsi prototaip" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Perpustakaan" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Paparkan semua komen" @@ -1827,7 +1830,7 @@ msgstr "Paparkan semua komen" msgid "labels.show-comments-list" msgstr "Paparkan senarai komen" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Paparkan komen anda sahaja" @@ -1839,7 +1842,7 @@ msgstr "Sketch" msgid "labels.start" msgstr "Mula" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" @@ -1847,7 +1850,7 @@ msgstr "Status" msgid "labels.student-teacher" msgstr "Pelajar atau guru" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutorial" @@ -1875,15 +1878,15 @@ msgstr "Muat naik fon tersuai" msgid "labels.uploading" msgstr "Memuat naik…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "LIHAT SAHAJA" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Penonton" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Cangkuk Web (Webhook)" @@ -1891,11 +1894,11 @@ msgstr "Cangkuk Web (Webhook)" msgid "labels.write-new-comment" msgstr "Tulis komen baharu" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(anda)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Akaun anda" @@ -1974,19 +1977,19 @@ msgstr "Cipta token" msgid "modals.create-access-token.title" msgstr "Jana token capaian" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Cipta cangkuk web (webhook)" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Cipta cangkuk web (webhook)" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL muatan" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2034,11 +2037,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Padam perbualan" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Adakah anda pasti ingin memadamkan anotasi ini?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Padam anotasi" @@ -2086,11 +2089,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Memadam fon" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Adakah anda pasti mahu memadamkan halaman ini?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Padam halaman" @@ -2131,29 +2134,29 @@ msgid "modals.delete-shared-confirm.title" msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Memadam fail" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Padam pasukan" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Adakah anda pasti mahu memadamkan pasukan ini? Semua projek dan fail yang " "dikaitkan dengan pasukan akan dipadamkan secara kekal." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Memadam pasukan" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Padam ahli" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Adakah anda pasti mahu memadamkan ahli ini daripada pasukan?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Padam ahli pasukan" @@ -2164,51 +2167,51 @@ msgstr[0] "" "Aset yang telah digunakan dalam fail ini akan kekal di sana (tiada reka " "bentuk akan rosak)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Padam cangkuk web (webhook)" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Adakah anda pasti mahu memadamkan cangkuk web (webhook) ini?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Memadam cangkuk web (webhook)" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Sunting cangkuk web (webhook)" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Sunting cangkuk web (webhook)" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Hantar jemputan" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-mel, dipisahkan dengan koma" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Sesetengah e-mel adalah daripada ahli pasukan semasa. Jemputan mereka tidak " "akan dihantar." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Jemput ahli ke pasukan" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Memandangkan anda satu-satunya ahli pasukan, pasukan ini akan dipadamkan " "bersama-sama dengan projek dan failnya." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Adakah anda pasti mahu meninggalkan pasukan %s?" @@ -2236,51 +2239,51 @@ msgstr "Pilih ahli untuk dinaikkan pangkat" msgid "modals.leave-and-reassign.title" msgstr "Sebelum anda pergi" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Tinggalkan pasukan" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Adakah anda pasti mahu meninggalkan pasukan ini?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Meninggalkan pasukan" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Jumlah anjakan" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Pindah hak milik" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Jika anda memindahkan pemilikan, anda akan menukar peranan anda kepada " "Pentadbir, kehilangan beberapa kebenaran ke atas pasukan ini. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Anda adalah pemilik semasa pasukan ini. Adakah anda pasti mahu menjadikan " "%s pemilik baharu pasukan?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Pemilik pasukan baru" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Terbitkan" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Pustaka anda kosong. Adakah anda pasti mahu menerbitkannya?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Terbitkan perpustakaan kosong" @@ -2332,21 +2335,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Kemas kini komponen dalam pustaka kongsi" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Kemas kini" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Batal" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Anda akan mengemas kini komponen dalam pustaka kongsi. Ini mungkin " "menjejaskan fail lain yang menggunakannya." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Kemas kini komponen dalam pustaka kongsi" @@ -2354,11 +2357,11 @@ msgstr "Kemas kini komponen dalam pustaka kongsi" msgid "notifications.by-code.upgrade-version" msgstr "Versi baharu tersedia, sila muat semula halaman" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Jemputan berjaya dihantar" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Pautan jemputan disalin" @@ -2514,7 +2517,7 @@ msgstr "" "Ingat untuk memasukkan semua orang. Pemaju, pereka bentuk, pengurus... " "kepelbagaian bertambah :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Jemput dengan peranan:" @@ -2623,312 +2626,304 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Pergi ke log masuk" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Tanggalkan" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Bercampur" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Asas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Papan pemuka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Penonton" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Ruang kerja" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Penjajaran" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Sunting" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Generik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Generik" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu utama" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Ubah suai lapisan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigasi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigasi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigasi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "laluan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Bentuk" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Teks" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Alatan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Komen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Tambah nota" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Sejajarkan bahagian bawah" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Jajarkan tengah" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Jajarkan tengah secara mendatar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Mengimbangkan keselarasan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Jajar ke kiri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Sejajar ke kanan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Jajarkan atas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Jajarkan tengah secara menegak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Cipta papan daripada pemilihan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Togol tebal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Perbezaan Boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Pengecualian Boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Persimpangan Boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Kesatuan Boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Hantar ke paling belakang" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Hantar ke belakang" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Bawa ke hadapan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Bawa ke paling hadapan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Kosongkan buat asal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Salin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Buat baharu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Potong" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Zum keluar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Padam" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Padamkan nod" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Tanggalkan komponen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Lengkung" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "elips" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Papan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Lukis laluan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Laluan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Segi empat tepat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Teks" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Pendua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Batal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Eksport bentuk" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Zum untuk muat semua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Terbalikkan secara mendatar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Terbalikkan secara menegak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Kurangkan saiz fon" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Tambah saiz fon" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Pergi ke draf" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Pergi ke perpustakaan kongsi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Cari" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Kumpulan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Edarkan secara mendatar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Tunjukkan / Sembunyikan UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Zum kedalam" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Masukkan gambar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Togol condong" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Sambung nod" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Kurangkan jarak huruf" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Penambahan jarak huruf" diff --git a/frontend/translations/nb_NO.po b/frontend/translations/nb_NO.po index 2786f63764..972a70998c 100644 --- a/frontend/translations/nb_NO.po +++ b/frontend/translations/nb_NO.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Allan Nordhøy \n" -"Language-Team: Norwegian Bokmål " -"\n" +"Language-Team: Norwegian Bokmål \n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/recovery.cljs:67 msgid "auth.confirm-password" @@ -51,27 +51,27 @@ msgstr "Opprett konto" msgid "auth.register-title" msgstr "Opprett konto" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Legg til som delt bibliotek" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopi)" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Din Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Slett lag" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Inviter til team" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Forlat team" @@ -99,7 +99,7 @@ msgstr "+ Ny fil" msgid "dashboard.new-project" msgstr "+ Nytt prosjekt" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s medlemmer" @@ -111,7 +111,7 @@ msgstr "Åpne fil i ny fane" msgid "dashboard.password-change" msgstr "Endre passord" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Fest/løsne" @@ -128,7 +128,7 @@ msgstr "Ønsker du å fjerne kontoen din?" msgid "dashboard.remove-shared" msgstr "Fjern som delt bibliotek" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Søk …" @@ -148,15 +148,15 @@ msgstr "Velg drakt" msgid "dashboard.show-all-files" msgstr "Vis alle filer" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Teaminfo" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Teammedlemmer" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Lagprosjekter" @@ -172,15 +172,15 @@ msgstr "Din konto" msgid "dashboard.your-name" msgstr "Ditt navn" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Din Penpot" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Avbryt" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "OK" @@ -208,11 +208,11 @@ msgstr "Beskrivelse" msgid "feedback.subject" msgstr "Emne" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Verdi" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Last ned kildebilde" @@ -250,19 +250,19 @@ msgstr "Skygge" msgid "inspect.attributes.stroke.width" msgstr "Bredde" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Typografi" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Skriftfamilie" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Skriftstørrelse" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Skriftstil" @@ -302,7 +302,7 @@ msgstr "Info" msgid "labels.accept" msgstr "Godta" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Avbryt" @@ -310,7 +310,7 @@ msgstr "Avbryt" msgid "labels.confirm-password" msgstr "Bekreft passord" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Opprett" @@ -330,7 +330,7 @@ msgstr "Egendefinerte skrifter" msgid "labels.dashboard" msgstr "Oversikt" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Slett" @@ -346,11 +346,11 @@ msgstr "Slett tråd" msgid "labels.delete-multi-files" msgstr "Slett %s filer" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Kladder" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Rediger" @@ -362,7 +362,7 @@ msgstr "Skriftfamilie" msgid "labels.font-providers" msgstr "Skrifttilbydere" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Skrifter" @@ -374,11 +374,11 @@ msgstr "Installerte skrifter" msgid "labels.language" msgstr "Språk" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Logg ut" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Medlemmer" @@ -390,7 +390,7 @@ msgstr "Nytt passord" msgid "labels.old-password" msgstr "Gammelt passord" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Eier" @@ -402,7 +402,7 @@ msgstr "Passord" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Prosjekter" @@ -411,7 +411,7 @@ msgstr "Prosjekter" msgid "labels.remove" msgstr "Fjern" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Gi nytt navn" @@ -419,11 +419,11 @@ msgstr "Gi nytt navn" msgid "labels.retry" msgstr "Prøv igjen" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rolle" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Lagre" @@ -439,15 +439,15 @@ msgstr "Send" msgid "labels.sending" msgstr "Sender …" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Innstillinger" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Delte bibliotek" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Vis alle kommentarer" @@ -499,7 +499,7 @@ msgstr "Slett fil" msgid "modals.delete-file-multi-confirm.accept" msgstr "Slett filer" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Slett side" @@ -507,23 +507,23 @@ msgstr "Slett side" msgid "modals.delete-project-confirm.accept" msgstr "Slett prosjekt" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Slett medlem" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Slett teammedlem" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Forlat team" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Avbryt" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Invitasjon sendt" @@ -543,7 +543,7 @@ msgstr "Passord - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Innstillinger - %s - Penpot" @@ -551,23 +551,23 @@ msgstr "Innstillinger - %s - Penpot" msgid "title.workspace" msgstr "%s - Penpot" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Farger" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Komponenter" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Opprett en gruppe" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Slett" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Rediger" @@ -576,15 +576,15 @@ msgstr "Rediger" msgid "workspace.assets.graphics" msgstr "Grafikk" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Gruppe" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Gruppenavn" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Gi nytt navn" @@ -597,7 +597,7 @@ msgstr "Skrift" msgid "workspace.assets.typography.font-size" msgstr "Størrelse" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Vis regler" @@ -606,10 +606,6 @@ msgstr "Vis regler" msgid "workspace.libraries.add" msgstr "Legg til" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s farger" - #: src/app/main/ui/workspace/color_palette_ctx_menu.cljs:88, src/app/main/ui/workspace/colorpicker/libraries.cljs:48, src/app/main/ui/workspace/text_palette_ctx_menu.cljs:49 msgid "workspace.libraries.colors.file-library" msgstr "Filbibliotek" @@ -618,27 +614,23 @@ msgstr "Filbibliotek" msgid "workspace.libraries.colors.recent-colors" msgstr "Nylige farger" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Lagre fargestil" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s komponenter" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Filbibliotek" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Komponent" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Eksporterer …" @@ -647,7 +639,7 @@ msgstr "Eksporterer …" msgid "workspace.options.grid.params.columns" msgstr "Kolonner" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Høyde" @@ -656,7 +648,7 @@ msgstr "Høyde" msgid "workspace.options.grid.params.rows" msgstr "Rader" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Sett som forvalg" @@ -670,22 +662,22 @@ msgstr "Størrelse" msgid "workspace.options.grid.params.type" msgstr "Type" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Bruk forvalg" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Bredde" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Rader" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Lysne" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Skjerm" diff --git a/frontend/translations/nl.po b/frontend/translations/nl.po index c7e9dca3fc..b45c77a55f 100644 --- a/frontend/translations/nl.po +++ b/frontend/translations/nl.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Stephan Paternotte \n" -"Language-Team: Dutch " -"\n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -176,7 +176,7 @@ msgstr "De open-source oplossing voor ontwerp en prototyping." msgid "auth.terms-and-privacy-agreement" msgstr "Ik ga akkoord met de [servicevoorwaarden] (%s) en [privacybeleid] (%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Gebruiksvoorwaarden" @@ -203,7 +203,7 @@ msgstr "…branding, illustraties, marketingstukken, etc." msgid "comments.mentions.not-found" msgstr "Geen mensen gevonden voor @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publiceren" @@ -275,7 +275,7 @@ msgstr "Prototypes delen" msgid "common.share-link.view-all" msgstr "Alles selecteren" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Publicatie ongedaan maken" @@ -400,7 +400,7 @@ msgstr "Het toegangsbewijs heeft geen verloopdatum" msgid "dashboard.add-file" msgstr "Bestand toevoegen" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Toevoegen als gedeelde bibliotheek" @@ -408,31 +408,31 @@ msgstr "Toevoegen als gedeelde bibliotheek" msgid "dashboard.change-email" msgstr "E-mailadres wijzigen" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopie)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Nieuw team aanmaken" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Deze versie vastmaken" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Jouw Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Team verwijderen" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Penpot-bestand downloaden (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Standaardbestand downloaden (.svg + .json)" @@ -516,7 +516,7 @@ msgstr "Begin met het bouwen van geweldige dingen" msgid "dashboard.export-binary-multi" msgstr "%s Penpot-bestanden downloaden (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Borden exporteren als PDF" @@ -532,7 +532,7 @@ msgstr "%s Penpot-bestanden exporteren" msgid "dashboard.export-multiple.selected" msgstr "%s van %s elementen geselecteerd" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exporteren" @@ -747,11 +747,11 @@ msgstr "Gegevens uploaden naar server (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Bestand aan het uploaden: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Nodig mensen uit" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Team verlaten" @@ -759,7 +759,7 @@ msgstr "Team verlaten" msgid "dashboard.libraries-and-templates" msgstr "Bibliotheken & sjablonen" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "" "Hier heb je een aantal bibliotheken en sjablonen die je aan je project kunt " @@ -769,7 +769,7 @@ msgstr "" msgid "dashboard.libraries-and-templates.explore" msgstr "Ontdek er meer van en weet hoe je kunt bijdragen" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "" "Er is een probleem opgetreden bij het importeren van het sjabloon. Het " @@ -807,7 +807,7 @@ msgstr "Verplaats naar ander team" msgid "dashboard.new-file" msgstr "+ Nieuw bestand" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Nieuw bestand" @@ -815,7 +815,7 @@ msgstr "Nieuw bestand" msgid "dashboard.new-project" msgstr "+ Nieuw project" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nieuw project" @@ -823,11 +823,11 @@ msgstr "Nieuw project" msgid "dashboard.no-matches-for" msgstr "Geen overeenkomsten gevonden voor \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Vastgemaakte projecten worden hier weergegeven" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Meldingen" @@ -839,7 +839,7 @@ msgstr "Je e-mailadres is succesvol bijgewerkt" msgid "dashboard.notifications.email-verified-successfully" msgstr "Je e-mailadres is geverifieerd" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Meldingsinstellingen bijgewerkt" @@ -847,11 +847,11 @@ msgstr "Meldingsinstellingen bijgewerkt" msgid "dashboard.notifications.password-saved" msgstr "Wachtwoord succesvol opgeslagen!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Meldingen weergeven" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s leden" @@ -883,7 +883,7 @@ msgstr "Je bent nu eigenaar van dit team." msgid "dashboard.permissions-change.viewer" msgstr "Je bent nu een lezer in dit team." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Vastzetten/losmaken" @@ -920,7 +920,7 @@ msgstr "Je maakt geen deel meer uit van het team “%s“." msgid "dashboard.save-settings" msgstr "Instellingen opslaan" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Zoeken…" @@ -1012,7 +1012,7 @@ msgstr "Meldingen" msgid "dashboard.show-all-files" msgstr "Alle bestanden tonen" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Versie-geschiedenis" @@ -1036,7 +1036,7 @@ msgstr[1] "Je bestanden zijn succesvol gedupliceerd" msgid "dashboard.success-duplicate-project" msgstr "Je project is succesvol gedupliceerd" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Je bestand is succesvol verplaatst" @@ -1048,15 +1048,15 @@ msgstr "Je bestanden zijn succesvol verplaatst" msgid "dashboard.success-move-project" msgstr "Je project is succesvol verplaatst" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Team info" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Teamleden" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Teamprojecten" @@ -1076,7 +1076,7 @@ msgstr "Zoekresultaten" msgid "dashboard.type-something" msgstr "Typ om te zoeken" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Publicatie Bibliotheek ongedaan maken" @@ -1084,50 +1084,50 @@ msgstr "Publicatie Bibliotheek ongedaan maken" msgid "dashboard.update-settings" msgstr "Instellingen bijwerken" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Onbeperkte creativiteit" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Free" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Is actief" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Wanneer deze hook wordt getriggerd, worden gebeurtenisdetails afgeleverd" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Je kunt alleen door jou gemaakte webhooks verwijderen of wijzigen." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Contenttype" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Webhook aanmaken" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook is succesvol aangemaakt." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhooks zijn een eenvoudige manier om andere websites en apps op de hoogte " "te stellen wanneer bepaalde gebeurtenissen bij Penpot plaatsvinden. We " "sturen een POST-verzoek naar elke URL die je opgeeft." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Druk op de knop \"Webhook aanmaken\" om er een toe te voegen." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Er zijn nog geen webhooks aangemaakt." @@ -1147,7 +1147,7 @@ msgstr "E-mail" msgid "dashboard.your-name" msgstr "Naam" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Jouw Penpot" @@ -1163,15 +1163,15 @@ msgstr "Waarschuwing" msgid "ds.component-subtitle" msgstr "Componenten bijwerken:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Toestaan" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Annuleren" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Oké" @@ -1179,6 +1179,26 @@ msgstr "Oké" msgid "ds.confirm-title" msgstr "Weet je het zeker?" +#: src/app/main/ui/ds/controls/numeric_input.cljs:98 +msgid "ds.inputs.numeric-input.no-applicable-tokens" +msgstr "Geen tokens van toepassing in actieve verzamelingen of thema's." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:99 +msgid "ds.inputs.numeric-input.no-matches" +msgstr "Geen overeenkomsten gevonden." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 +msgid "ds.inputs.numeric-input.open-token-list-dropdown" +msgstr "Lijst met tokens openen" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 +msgid "ds.inputs.token-field.detach-token" +msgstr "Token loskoppelen" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 +msgid "ds.inputs.token-field.no-active-token-option" +msgstr "Dit token is niet beschikbaar in een actieve verzameling of thema." + #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" msgstr "Auth-provider is niet toegestaan voor dit profiel" @@ -1235,7 +1255,7 @@ msgstr "Hoewel Penpot dit soort componenten niet meer ondersteunt, kun je wel" msgid "errors.deprecated.contact.text" msgstr "contact met ons opnemen" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "" "Een bovenliggende verzameling kan niet worden verwijderd naar een " @@ -1261,11 +1281,11 @@ msgstr "E-mail komt niet overeen met de uitnodiging." msgid "errors.email-domain-not-allowed" msgstr "Domein niet toegestaan" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Het emailadres «%s» heeft veel permanente bounce-rapporten." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "Het e-mailadres «%s» is gemeld als spam of permanent teruggestuurd." @@ -1280,11 +1300,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Functie '%s' wordt niet ondersteund." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "Moet maximaal 1 tekens bevatten." - #, unused msgid "errors.field-min-length" msgstr "Moet minimaal 1 teken bevatten." @@ -1306,7 +1321,7 @@ msgstr "" "moeten migraties voor '%s' worden toegepast voordat het bestand kan worden " "geopend." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Er ging iets mis." @@ -1356,11 +1371,11 @@ msgstr "Deze uitnodiging is mogelijk geannuleerd of verlopen." msgid "errors.ldap-disabled" msgstr "LDAP-authenticatie is uitgeschakeld." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Je hebt de limiet van '%s' bereikt. Neem contact op met support." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Het maximale (%s) aantal e-mails dat in één verzoek kan worden uitgenodigd, " @@ -1380,7 +1395,7 @@ msgstr "" msgid "errors.media-type-not-allowed" msgstr "Het lijkt erop dat dit geen geldige afbeelding is." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Het profiel dat je uitnodigt, heeft e-mails gedempt (spammeldingen of hoge " @@ -1416,7 +1431,7 @@ msgstr "Ongeldige gegevens op klembord" msgid "errors.profile-blocked" msgstr "Het profiel is geblokkeerd" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "Je profiel heeft e-mails gedempt (spammeldingen of hoge bounces)." @@ -1432,23 +1447,23 @@ msgstr "SVG is ongeldig of misvormd" msgid "errors.team-feature-mismatch" msgstr "Incompatibele functie '%s' gedetecteerd" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Onvoldoende leden om het team te verlaten, je kunt dit team maar beter " "verwijderen." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Het lid dat je probeert toe te wijzen, bestaat niet." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Eigenaar kan het team niet verlaten, je moet de rol van eigenaar eerst " "overdragen." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Er bestaat al een verzameling met dezelfde naam" @@ -1457,13 +1472,13 @@ msgstr "Er bestaat al een verzameling met dezelfde naam" msgid "errors.token-set-doesnt-exists" msgstr "Kan een onbekende verzameling niet dupliceren" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "" "Kan sleepactie niet voltooien, een verzameling met dezelfde naam bestaat " "daar al." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Thema-optie met dezelfde naam bestaat" @@ -1491,31 +1506,31 @@ msgstr "Deze versie is vergrendeld en kan niet door anderen worden verwijderd" msgid "errors.version-not-supported" msgstr "Bestand heeft een incompatibel versienummer" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Verbindingsfout, URL niet bereikbaar" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL komt niet door de validatie." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Laatste levering was niet succesvol." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Fout bij SSL-validatie." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Time-out" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Onverwachte fout bij het valideren" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Onverwachte status %s" @@ -1579,7 +1594,7 @@ msgstr "er is een fout opgetreden" msgid "inspect.attributes.blur" msgstr "Vervagen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Waarde" @@ -1587,15 +1602,15 @@ msgstr "Waarde" msgid "inspect.attributes.color" msgstr "Kleur" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1603,7 +1618,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Vullen" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Bronafbeelding downloaden" @@ -1697,35 +1712,37 @@ msgstr "Solide" msgid "inspect.attributes.stroke.width" msgstr "Breedte" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Typografie" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Lettertype-familie" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Lettergrootte" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Lettertype-stijl" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Lettertype dikte" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Letterafstand" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Regelafstand" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Tekst decoratie" @@ -1733,35 +1750,41 @@ msgstr "Tekst decoratie" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "Doorstrepen" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Geen" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:137 +#, fuzzy +msgid "inspect.attributes.typography.text-decoration.strikethrough" +msgstr "" + +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Onderstrepen" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Teksttransformatie" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Beginhoofdletters" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Kleine letters" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Geen" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Uitschakelen" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "HOOFDLETTERS" @@ -1773,17 +1796,17 @@ msgstr "Eigenschappen van de variant" msgid "inspect.attributes.variants" msgstr "Varianten eigenschappen" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Als je meer wilt weten over ontwerpinspectie, ga dan naar het helpcentrum " "van Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Meer info over inspecteren" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Selecteer een vorm, bord of groep om hun eigenschappen en code te " @@ -1849,15 +1872,23 @@ msgstr "SVG" msgid "inspect.tabs.code.selected.text" msgstr "Tekst" +#: src/app/main/ui/inspect/right_sidebar.cljs:109 +msgid "inspect.tabs.computed" +msgstr "Berekend" + #: src/app/main/ui/inspect/right_sidebar.cljs:114 msgid "inspect.tabs.info" msgstr "Informatie" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/inspect/right_sidebar.cljs:165 +msgid "inspect.tabs.switcher.label" +msgstr "Laaginfo" + +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Alles als gelezen markeren" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Sneltoetsen" @@ -1869,11 +1900,11 @@ msgstr "Accepteren" msgid "labels.access-tokens" msgstr "Toegangsbewijzen" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Actief" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Toevoegen" @@ -1881,11 +1912,11 @@ msgstr "Toevoegen" msgid "labels.add-custom-font" msgstr "Eigen lettertype toevoegen" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Toevoegen…" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Admin" @@ -1893,7 +1924,7 @@ msgstr "Admin" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Alles" @@ -1916,7 +1947,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Bad Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Annuleren" @@ -1924,11 +1955,11 @@ msgstr "Annuleren" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Sluiten" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Samenvouwen" @@ -1940,11 +1971,11 @@ msgstr "Commentaar" msgid "labels.comment.mark-as-solved" msgstr "Markeren als opgelost" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Commentaar" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Gemeenschap" @@ -1952,7 +1983,7 @@ msgstr "Gemeenschap" msgid "labels.confirm-password" msgstr "Wachtwoord bevestigen" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Doorgaan" @@ -1968,11 +1999,11 @@ msgstr "Je kunt doorgaan met een Penpot-account" msgid "labels.copy" msgstr "Kopie" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Kleur kopiëren" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Link kopiëren" @@ -1980,7 +2011,7 @@ msgstr "Link kopiëren" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Aanmaken" @@ -2000,7 +2031,7 @@ msgstr "Eigen lettertypen" msgid "labels.dashboard" msgstr "Dashboard" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Verwijderen" @@ -2012,7 +2043,7 @@ msgstr "Commentaar verwijderen" msgid "labels.delete-comment-thread" msgstr "Thread verwijderen" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Uitnodiging verwijderen" @@ -2029,19 +2060,19 @@ msgstr "Ontwikkeling" msgid "labels.director" msgstr "Directeur" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Weggooien" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Concepten" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "Dupliceren" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Bewerken" @@ -2049,11 +2080,11 @@ msgstr "Bewerken" msgid "labels.edit-file" msgstr "Bestand bewerken" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Redacteur" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "Leeg" @@ -2066,11 +2097,11 @@ msgstr "Fout" msgid "labels.event" msgstr "Evenement" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Verlopen" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exporteren" @@ -2098,7 +2129,7 @@ msgstr "Lettertypeaanbieders" msgid "labels.font-variants" msgstr "Stijlen" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Lettertypen" @@ -2112,11 +2143,11 @@ msgstr "CEO of oprichter" msgid "labels.freelancer" msgstr "Ik ben een freelancer" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "GitHub-repository" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Geef feedback" @@ -2128,7 +2159,7 @@ msgstr "Ga terug" msgid "labels.graphic-design" msgstr "Grafisch ontwerp" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Helpcentrum" @@ -2136,15 +2167,15 @@ msgstr "Helpcentrum" msgid "labels.hide" msgstr "Verbergen" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Verwerkt commentaar verbergen" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Importeren" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inactief" @@ -2166,7 +2197,7 @@ msgstr "Interne fout" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Uitnodigingen" @@ -2174,7 +2205,7 @@ msgstr "Uitnodigingen" msgid "labels.language" msgstr "Taal" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Bibliotheken en sjablonen" @@ -2194,7 +2225,7 @@ msgstr "Log in of meld je aan" msgid "labels.login" msgstr "Inloggen" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Uitloggen" @@ -2202,11 +2233,11 @@ msgstr "Uitloggen" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Lid" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Leden" @@ -2214,23 +2245,27 @@ msgstr "Leden" msgid "labels.mention" msgstr "Vermelden" +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 +msgid "labels.mixed-values" +msgstr "Gemengd" + #: src/app/main/ui/settings/password.cljs:84 msgid "labels.new-password" msgstr "Nieuw wachtwoord" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Volgende" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Je bent helemaal bij! Nieuwe commentaarmeldingen verschijnen hier." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Geen openstaande uitnodigingen." -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "Verzamel je mensen en bouw samen geweldige dingen." @@ -2247,7 +2282,7 @@ msgstr "Oeps!" msgid "labels.notifications" msgstr "Meldingen" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 bestand" @@ -2259,7 +2294,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 bord" msgstr[1] "%s borden" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 project" @@ -2278,7 +2313,7 @@ msgstr "Huidig wachtwoord" msgid "labels.only-yours" msgstr "Alleen van jou" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Opties" @@ -2294,7 +2329,7 @@ msgstr "Anders (namelijk…)" msgid "labels.other-short" msgstr "Anders" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Eigenaar" @@ -2302,11 +2337,11 @@ msgstr "Eigenaar" msgid "labels.password" msgstr "Wachtwoord" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "In behandeling" -#: src/app/main/ui/dashboard/sidebar.cljs:750 +#: src/app/main/ui/dashboard/sidebar.cljs:751 msgid "labels.pinned-projects" msgstr "Vastgemaakte projecten" @@ -2330,7 +2365,7 @@ msgstr "Product management" msgid "labels.profile" msgstr "Profiel" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projecten" @@ -2338,7 +2373,7 @@ msgstr "Projecten" msgid "labels.refresh" msgstr "Vernieuwen" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Release-opmerkingen" @@ -2352,11 +2387,11 @@ msgstr "Bestand opnieuw laden" msgid "labels.remove" msgstr "Verwijderen" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Lid verwijderen" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Hernoemen" @@ -2384,7 +2419,7 @@ msgstr "nieuwe reactie" msgid "labels.reply.thread" msgstr "Reageren" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Uitnodiging opnieuw versturen" @@ -2396,15 +2431,15 @@ msgstr "Herstellen" msgid "labels.retry" msgstr "Opnieuw proberen" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rol" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Opslaan" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Zoeken" @@ -2432,11 +2467,11 @@ msgstr "We zijn bezig met onderhoud van onze systemen." msgid "labels.service-unavailable.main-message" msgstr "Service niet beschikbaar" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Verzamelingen" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Instellingen" @@ -2448,7 +2483,7 @@ msgstr "Delen" msgid "labels.share-prototype" msgstr "Prototype delen" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibliotheek" @@ -2456,7 +2491,7 @@ msgstr "Bibliotheek" msgid "labels.show" msgstr "Weergeven" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Alle commentaar tonen" @@ -2464,11 +2499,11 @@ msgstr "Alle commentaar tonen" msgid "labels.show-comments-list" msgstr "Commentaarlijst tonen" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Alleen jouw vermeldingen weergeven" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Alleen eigen commentaar tonen" @@ -2476,7 +2511,7 @@ msgstr "Alleen eigen commentaar tonen" msgid "labels.sketch" msgstr "Sketch" -#: src/app/main/ui/dashboard/sidebar.cljs:729 +#: src/app/main/ui/dashboard/sidebar.cljs:730 msgid "labels.sources" msgstr "Bronnen" @@ -2484,7 +2519,7 @@ msgstr "Bronnen" msgid "labels.start" msgstr "Starten" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" @@ -2506,11 +2541,11 @@ msgstr "Teamlid" msgid "labels.themes" msgstr "Thema's" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Introductie" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Onbekende fout" @@ -2542,15 +2577,15 @@ msgstr "Eigen lettertypen uploaden" msgid "labels.uploading" msgstr "Uploaden…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "ALLEEN BEKIJKEN" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Kijker" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2558,11 +2593,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Nieuw commentaar toevoegen" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(jij)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Jouw account" @@ -2595,7 +2630,7 @@ msgstr "Flexibel ontwerpen met vertrouwde CSS-achtige lay-outbesturingselementen #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Automatische lay-out zoals CSS" +msgstr "Lay-out zoals CSS" #: src/app/main/ui/ds/product/loader.cljs:27 msgid "loader.tips.04.message" @@ -2657,23 +2692,23 @@ msgstr "" msgid "loader.tips.10.title" msgstr "Ondersteuning voor plug-ins" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Afbeelding kiezen" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Verloop" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Afbeelding" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Verhoudingen behouden" @@ -2691,7 +2726,7 @@ msgstr "Afbeelding laden…" msgid "media.radial" msgstr "Radiaal" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Solide" @@ -2767,19 +2802,19 @@ msgstr "Toegangsbewijs aanmaken" msgid "modals.create-access-token.title" msgstr "Toegangsbewijs genereren" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Webhook aanmaken" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Webhook aanmaken" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Payload-URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://voorbeeld.nl/postreceive" @@ -2827,11 +2862,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Gesprek verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Weet je zeker dat je deze aantekening wilt verwijderen?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Aantekening verwijderen" @@ -2879,11 +2914,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Lettertype verwijderen" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Weet je zeker dat je deze pagina wilt verwijderen?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Pagina verwijderen" @@ -2929,29 +2964,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Bestand verwijderen" msgstr[1] "Bestanden verwijderen" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Team verwijderen" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Weet je zeker dat je dit team wilt verwijderen? Alle projecten en bestanden " "die aan het team zijn gekoppeld, worden permanent verwijderd." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Team verwijderen" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Lid verwijderen" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Weet je zeker dat je dit lid van het team wilt verwijderen?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Teamlid verwijderen" @@ -2965,55 +3000,55 @@ msgstr[1] "" "Assets die al in die bestanden zijn gebruikt, blijven daar staan (er wordt " "geen ontwerp verbroken)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Webhook verwijderen" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Weet je zeker dat je deze webhook wilt verwijderen?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Webhook verwijderen" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Webhook bewerken" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Webhook bewerken" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Uitnodiging versturen" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-mailadressen, kommagescheiden" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "Sommige leden zijn al lid van het team. We nodigen de rest wel uit." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Je kunt leden uitnodigen voor het team zodat ze toegang hebben tot dit " "bestand en alle teambestanden." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Leden voor het team uitnodigen" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Aangezien je het enige lid van dit team bent, wordt het team samen met de " "projecten en bestanden verwijderd." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Weet je zeker dat je het %s team wilt verlaten?" @@ -3041,15 +3076,15 @@ msgstr "Selecteer een lid om te promoveren" msgid "modals.leave-and-reassign.title" msgstr "Voordat je gaat" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Team verlaten" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Weet je zeker dat je dit team wilt verlaten?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Team verlaten" @@ -3071,39 +3106,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Bibliotheek verplaatsen" msgstr[1] "Bibliotheken verplaatsen" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Verschuiving" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Eigendom overdragen" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Als je het eigendom overdraagt, verander je je rol in beheerder en verlies " "je enkele machtigingen voor dit team. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Je bent de huidige eigenaar van dit team. Weet je zeker dat je %s de nieuwe " "eigenaar van het team wilt maken?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Nieuwe teameigenaar" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publiceren" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Je bibliotheek is leeg. Weet je zeker dat je het wilt publiceren?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Lege bibliotheek publiceren" @@ -3162,22 +3197,22 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Componenten in een gedeelde bibliotheek bijwerken" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Bijwerken" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Annuleren" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Je staat op het punt een component in een gedeelde bibliotheek bij te " "werken. Dit kan van invloed zijn op andere bestanden die er gebruik van " "maken." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Component in een gedeelde bibliotheek bijwerken" @@ -3295,11 +3330,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Er is een nieuwe versie beschikbaar, vernieuw de pagina" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Uitnodiging succesvol verstuurd" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Uitnodigingslink gekopieerd" @@ -3448,7 +3483,7 @@ msgstr "" "Vergeet niet om iedereen mee te nemen. Ontwikkelaars, ontwerpers, " "managers... diversiteit is alleen maar beter :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Uitnodigen met rol:" @@ -3630,7 +3665,7 @@ msgstr "" #: src/app/main/ui/onboarding/team_choice.cljs:36 msgid "onboarding.team-modal.create-team-feature-1" -msgstr "Oneindig veel bestanden en projecten" +msgstr "Onbeperkt veel bestanden en projecten" #: src/app/main/ui/onboarding/team_choice.cljs:40 msgid "onboarding.team-modal.create-team-feature-2" @@ -3642,7 +3677,7 @@ msgstr "Rollenbeheer" #: src/app/main/ui/onboarding/team_choice.cljs:48 msgid "onboarding.team-modal.create-team-feature-4" -msgstr "Oneindig veel leden" +msgstr "Onbeperkt aantal leden" #: src/app/main/ui/onboarding/team_choice.cljs:52 msgid "onboarding.team-modal.create-team-feature-5" @@ -3668,193 +3703,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Ga naar inlogscherm" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Ontkoppelen" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" -msgstr "Gemixt" +msgstr "Gemengd" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Kleur verwijderen" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Selecteer items in deze stijl" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Basis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Dashboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Bekijker" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Werkruimte" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Uitlijning" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Bewerken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Algemeen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Algemeen" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Hoofdmenu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Lagen wijzigen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigatie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigatie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigatie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Paden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Vormen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Teksten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Hulpmiddelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Commentaar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Knooppunt toevoegen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Onderaan uitlijnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Centreren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Horizontaal centreren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Uitlijnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Links uitlijnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Rechts uitlijnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Bovenaan uitlijnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Verticaal centreren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Maak bord van selectie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Vet in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Aftrekken (Booleaans verschil)" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Uitsluiten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Booleaanse kruising" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Booleaanse vereniging" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Naar de achtergrond" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Naar achteren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Naar voren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Naar de voorgrond" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Ongedaan maken wissen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopiëren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Link naar klembord kopiëren" @@ -3863,287 +3898,271 @@ msgstr "Link naar klembord kopiëren" msgid "shortcuts.copy-props" msgstr "Eigenschappen kopiëren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Nieuw project aanmaken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Knippen" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Uitzoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Verwijderen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Knooppunt verwijderen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Component losmaken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Kromme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Ellips" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Bord" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Pad tekenen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Pad" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rechthoek" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Tekst" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Dupliceren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Annuleren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Vormen exporteren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Passend zoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Horizontaal spiegelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Verticaal spiegelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Lettergrootte verkleinen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Lettergrootte vergroten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Ga naar concepten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Ga naar gedeelde bibliotheek" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Zoeken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Groeperen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Horizontaal verdelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "UI tonen/verbergen" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Inzoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Afbeelding invoegen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Cursief in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Knooppunten verbinden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Letterafstand verkleinen" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Letterafstand vergroten" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Regelafstand verkleinen" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Regelafstand vergroten" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Doorstrepen in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Hoek maken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Kromme maken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maskeren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Knooppunten samenvoegen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Snel naar beneden verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Snel naar links verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Snel naar rechts verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Snel naar boven verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Knooppunt verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Naar beneden verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Naar links verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Naar rechts verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Naar boven verplaatsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Volgend bord" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Geen sneltoets gevonden" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Dekking 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Dekking 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Dekking 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Dekking 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Dekking 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Dekking 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Dekking 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Dekking 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Dekking 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Dekking 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Kleurkiezer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Ga naar het commentaargedeelte van de kijker" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Ga naar dashboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Ga naar de sectie voor het inspecteren van kijkers" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Ga naar de kijkersinteracties-sectie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Ga naar de kijkersinteracties-sectie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Ga naar werkruimte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " of " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Plakken" @@ -4157,191 +4176,191 @@ msgstr "Eigenschappen plakken" msgid "shortcuts.plugins" msgstr "Beheer van plug-ins" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Vorig bord" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Opnieuw doen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Hernoemen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Zoom herstellen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Schaal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Sneltoetsen zoeken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Alles selecteren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Volgende laag selecteren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Bovenliggende laag selecteren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Vorige laag selecteren" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Knooppunten loskoppelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Pixelraster tonen/verbergen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Sneltoetsen tonen/verbergen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Uitlijnen op knooppunten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Uitlijnen op pixelraster" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Start met bewerken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Meting starten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Meting beëindigen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Miniaturen instellen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Sneltoetsen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Dynamisch uitlijnen in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Assets in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Kleurenpalet in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Focusmodus in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Volledig scherm in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Hulplijnen tonen/verbergen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Geschiedenis in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Lagen in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Flex-layout toevoegen/verwijderen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Raster-layout toevoegen/verwijderen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Vergrendelen/ontgrendelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Proporties vergrendelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Linialen tonen/verbergen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Uitlijnen op hulpijnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Uitlijnen op liniaal-hulplijnen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Tekstpalet in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Thema veranderen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Tonen/verbergen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Zoomstijl wisselen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Onderstrepen in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Ongedaan maken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Groep opheffen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Masker verwijderen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Verticaal verdelen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Zoomlens verkleinen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Zoomlens vergroten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zoomen naar selectie" @@ -4353,6 +4372,13 @@ msgstr "Enterprise-abonnement" msgid "subscription.dashboard.power-up.enterprise-trial.top-title" msgstr "Enterprise-abonnement (proef)" +#: src/app/main/ui/dashboard/subscription.cljs:64 +#, markdown +msgid "subscription.dashboard.power-up.professional.bottom-text" +msgstr "" +"Krijg extra opslag, bestandsherstel en meer voor je teams met het " +"Unlimited-abonnement. [Tandje erbij!|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:63 msgid "subscription.dashboard.power-up.professional.top-title" msgstr "Professional-abonnement" @@ -4381,8 +4407,9 @@ msgstr "Unlimited-abonnement" #, markdown msgid "subscription.dashboard.power-up.unlimited.bottom-text" msgstr "" -"Krijg extra editors, meer back-up, onbeperkte opslag en meer. [Kijk eens " -"naar het Enterprise-abonnement.|target:self](%s)" +"Krijg onbeperkte opslag, uitgebreid bestandsherstel en onbeperkte editors " +"voor al je teams tegen een vaste prijs. [Kijk eens naar het " +"Enterprise-abonnement.|target:self](%s)" #: src/app/main/ui/dashboard/subscription.cljs:70 #, unused @@ -4400,11 +4427,47 @@ msgstr "" msgid "subscription.dashboard.power-up.your-subscription" msgstr "Jouw abonnement:" +#: src/app/main/ui/dashboard/subscription.cljs:168 +msgid "subscription.dashboard.professional-dashboard-cta-title" +msgstr "" +"Je hebt %s-editors voor de teams in jouw beheer, terwijl jouw professionele " +"abonnement maximaal 8 toestaat." + +#: src/app/main/ui/dashboard/subscription.cljs:176 +#, markdown +msgid "subscription.dashboard.professional-dashboard-cta-upgrade-owner" +msgstr "" +"Upgrade nu naar Unlimited of Enterprise om meer editors, opslag en " +"bestandsherstel te ontgrendelen. [Abonneer nu.|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:111 msgid "subscription.dashboard.team-plan" msgstr "Team-abonnement" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/subscription.cljs:171 +msgid "subscription.dashboard.unlimited-dashboard-cta-title" +msgstr "" +"Je team blijft groeien! Je Unlimited-abonnement dekt maximaal %s editors, " +"maar je hebt er nu %s." + +#: src/app/main/ui/dashboard/subscription.cljs:179 +#, markdown +msgid "subscription.dashboard.unlimited-dashboard-cta-upgrade-owner" +msgstr "" +"Upgrade nu om overeen te komen met je huidige aantal editors. [Neem nu een " +"abonnement.|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:156 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-text" +msgstr "" +"Alleen nieuwe editors in jouw eigen teams tellen mee voor toekomstige " +"facturering. Voor 25+ editors geldt nog steeds een bedrag van $175/maand." + +#: src/app/main/ui/dashboard/subscription.cljs:152 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-title" +msgstr "Mensen uitnodigen bij het Unlimited-abonnement" + +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "Tandje erbij" @@ -4444,19 +4507,44 @@ msgstr "90-dagen automatische opslag van versies en bestandsherstel" msgid "subscription.settings.enterprise.capped-bill" msgstr "Gemaximeerde maandelijkse rekening" +#: src/app/main/ui/settings/subscription.cljs:392, src/app/main/ui/settings/subscription.cljs:402, src/app/main/ui/settings/subscription.cljs:454 +msgid "subscription.settings.enterprise.unlimited-storage-benefit" +msgstr "Onbeperkte opslag" + #: src/app/main/ui/dashboard/subscription.cljs:124, src/app/main/ui/settings/subscription.cljs:371, src/app/main/ui/settings/subscription.cljs:383, src/app/main/ui/settings/subscription.cljs:395, src/app/main/ui/settings/subscription.cljs:405 msgid "subscription.settings.manage-your-subscription" msgstr "Beheer uw abonnement" +#: src/app/main/ui/settings/subscription.cljs:131 +msgid "subscription.settings.management.dialog.currently-editors-title" +msgid_plural "subscription.settings.management.dialog.currently-editors-title" +msgstr[0] "Momenteel heb je % s persoon in je teams die kan bewerken." +msgstr[1] "Momenteel heb je % s persoen in je teams die kunnen bewerken." + #: src/app/main/ui/settings/subscription.cljs:149 msgid "subscription.settings.management.dialog.downgrade" msgstr "" "Let op: overstappen naar een lager abonnement betekent minder opslagruimte " "en kortere back-ups en versiegeschiedenis." +#: src/app/main/ui/settings/subscription.cljs:133 +msgid "subscription.settings.management.dialog.editors" +msgstr "Editors" + +#: src/app/main/ui/settings/subscription.cljs:138 +msgid "subscription.settings.management.dialog.editors-explanation" +msgstr "(Eigenaren, beheerder en redacteuren. Kijkers tellen niet als Editors)" + +#: src/app/main/ui/settings/subscription.cljs:181 +msgid "subscription.settings.management.dialog.input-error" +msgstr "" +"Je kunt niet minder editors instellen dan nu. Wijzig de rol (editor/admin " +"naar viewer) voor mensen die bestanden niet daadwerkelijk bewerken in de " +"teaminstellingen." + #: src/app/main/ui/settings/subscription.cljs:177 msgid "subscription.settings.management.dialog.payment-explanation" -msgstr "(Er wordt nu geen betaling gedaan)" +msgstr "Berekend na proefperiode. Nu geen creditcard nodig." #: src/app/main/ui/settings/subscription.cljs:170, src/app/main/ui/settings/subscription.cljs:174 #, markdown @@ -4467,6 +4555,13 @@ msgstr "**$%s** per maand" msgid "subscription.settings.management.dialog.title" msgstr "%s toepassen op je teams" +#: src/app/main/ui/settings/subscription.cljs:184 +msgid "subscription.settings.management.dialog.unlimited-capped-warning" +msgstr "" +"Tip: Je kunt het aantal gebruikers nu verhogen om uitnodigingen te blijven " +"doen. Bij 25+ editors van verschillende teams geniet je van een vaste prijs " +"van $175/maand." + #: src/app/main/ui/settings/subscription.cljs:418 msgid "subscription.settings.member-since" msgstr "Lid van Penpot sinds: %s" @@ -4491,6 +4586,18 @@ msgstr "organisatie per maand" msgid "subscription.settings.professional" msgstr "Professioneel" +#: src/app/main/ui/settings/subscription.cljs:360, src/app/main/ui/settings/subscription.cljs:427 +msgid "subscription.settings.professional.autosave-benefit" +msgstr "7-dagen automatische versies en bestandsherstel" + +#: src/app/main/ui/settings/subscription.cljs:359, src/app/main/ui/settings/subscription.cljs:426 +msgid "subscription.settings.professional.storage-benefit" +msgstr "10GB opslag" + +#: src/app/main/ui/settings/subscription.cljs:361, src/app/main/ui/settings/subscription.cljs:428 +msgid "subscription.settings.professional.teams-editors-benefit" +msgstr "Onbeperkte teams. Maximaal 8 editors in je eigen teams." + #: src/app/main/ui/settings/subscription.cljs:355 msgid "subscription.settings.section-plan" msgstr "Uw abonnement" @@ -4509,6 +4616,10 @@ msgstr "" "Je kunt je abonnement op elk gewenst moment aanpassen via de pagina " "'Abonnement' in je accountgegevens." +#: src/app/main/ui/settings/subscription.cljs:238 +msgid "subscription.settings.success.dialog.thanks" +msgstr "Bedankt voor het kiezen van het Penpot %s-abonnement!" + #: src/app/main/ui/settings/subscription.cljs:240 msgid "subscription.settings.sucess.dialog.footer" msgstr "Veel plezier met je abonnement!" @@ -4518,7 +4629,6 @@ msgid "subscription.settings.sucess.dialog.title" msgstr "Je bent %s!" #: src/app/main/ui/settings/subscription.cljs:413 -#, fuzzy msgid "subscription.settings.support-us-since" msgstr "Je hebt ons gesteund met dit abonnement sinds: %s" @@ -4534,11 +4644,19 @@ msgstr "Unlimited" msgid "subscription.settings.unlimited-trial" msgstr "Unlimited (proef)" +#: src/app/main/ui/settings/subscription.cljs:369, src/app/main/ui/settings/subscription.cljs:381, src/app/main/ui/settings/subscription.cljs:441 +msgid "subscription.settings.unlimited.autosave-benefit" +msgstr "30-dagen automatisch opgeslagen versies en bestandsherstel" + #: src/app/main/ui/settings/subscription.cljs:370, src/app/main/ui/settings/subscription.cljs:382, src/app/main/ui/settings/subscription.cljs:442 msgid "subscription.settings.unlimited.bill" -msgstr "Gemaximeerde maandelijkse rekening" +msgstr "Maandelijkse rekening van max. $175" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/settings/subscription.cljs:368, src/app/main/ui/settings/subscription.cljs:380, src/app/main/ui/settings/subscription.cljs:440 +msgid "subscription.settings.unlimited.storage-benefit" +msgstr "25GB opslag" + +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "Tandje erbij voor je abonnement" @@ -4613,19 +4731,19 @@ msgstr "Wachtwoord - Penpot" msgid "title.settings.profile" msgstr "Profiel - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Uitnodigingen - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Leden - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Instellingen - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -4697,43 +4815,43 @@ msgstr "Interacties tonen bij aanklikken" msgid "viewer.header.sitemap" msgstr "Sitemap" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "De laatste levering was succesvol." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Horizontaal centreren (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Horizontaal verdelen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Links uitlijnen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Rechts uitlijnen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Onderkant uitlijnen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Verticaal centreren (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Verticaal verdelen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Bovenkant uitlijnen (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Bibliotheek toevoegen" @@ -4742,19 +4860,23 @@ msgstr "Bibliotheek toevoegen" msgid "workspace.assets.assets" msgstr "Assets" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Alle assets" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Kleuren" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Kleur toevoegen" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:81 +msgid "workspace.assets.component-group-options" +msgstr "Componentgroep opties" + +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Componenten" @@ -4762,23 +4884,23 @@ msgstr "Componenten" msgid "workspace.assets.components.add-component" msgstr "Component toevoegen" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s varianten" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Groep aanmaken" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Je items krijgen automatisch de naam \"groepsnaam / itemnaam\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Verwijderen" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Dupliceren" @@ -4786,11 +4908,11 @@ msgstr "Dupliceren" msgid "workspace.assets.duplicate-main" msgstr "Hoofdcomponent dupliceren" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Bewerken" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filteren" @@ -4799,27 +4921,27 @@ msgstr "Filteren" msgid "workspace.assets.graphics" msgstr "Graphics" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Rasterweergave" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Groeperen" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Groepsnaam" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Lijstweergave" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "Lokale bibliotheek" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Bibliotheek beheren" @@ -4831,15 +4953,15 @@ msgstr "Geen assets gevonden" msgid "workspace.assets.open-library" msgstr "Open Bibliotheek-bestand" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Hernoemen" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Groep hernoemen" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Assets zoeken" @@ -4855,21 +4977,21 @@ msgstr[1] "%s items geselecteerd" msgid "workspace.assets.shared-library" msgstr "Gedeelde bibliotheek" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 component" msgstr[1] "%s componenten" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Sorteren" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Typografie" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Typografie toevoegen" @@ -4894,7 +5016,7 @@ msgstr "Letterafstand" msgid "workspace.assets.typography.line-height" msgstr "Regelafstand" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4906,59 +5028,59 @@ msgstr "Tekststijlen" msgid "workspace.assets.typography.text-transform" msgstr "Tekst transformeren" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Groep opheffen" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Gebied aanmaken" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Bord aanmaken" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Cellen samenvoegen" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Rechts 1 kolom toevoegen" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Links 1 kolom toevoegen" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Kolom verwijderen" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Kolom en vormen verwijderen" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Kolom dupliceren" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Onder 1 rij toevoegen" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Boven 1 rij toevoegen" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Rij verwijderen" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Rij en vormen verwijderen" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Rij dupliceren" @@ -4966,7 +5088,7 @@ msgstr "Rij dupliceren" msgid "workspace.focus.focus-mode" msgstr "Focusmodus" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Focus uit" @@ -4986,11 +5108,11 @@ msgstr "Lineair verloop" msgid "workspace.gradients.radial" msgstr "Radiaal verloop" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Dynamische uitlijning uitschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Proportionele schaal uitschakelen" @@ -4999,23 +5121,23 @@ msgstr "Proportionele schaal uitschakelen" msgid "workspace.header.menu.disable-scale-text" msgstr "Tekstschaal uitschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Uitlijnen op hulplijnen uitschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Uitlijnen op pixel uitschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Uitlijnen op liniaal-hulplijnen deactiveren" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Dynamische uitlijning inschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Proportionele schaal inschakelen" @@ -5024,116 +5146,116 @@ msgstr "Proportionele schaal inschakelen" msgid "workspace.header.menu.enable-scale-text" msgstr "Tekstschaal inschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Uitlijnen op hulplijnen" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Uitlijnen op pixel" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Uitlijnen op liniaal-hulplijnen" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Bordnamen verbergen" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Hulplijnen verbergen" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Kleurenpalet verbergen" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Pixelraster verbergen" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Linialen verbergen" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Lettertype-palet verbergen" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Bewerken" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Bestand" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Hulp & informatie" #: src/app/main/ui/workspace/main_menu.cljs:916 #, unused msgid "workspace.header.menu.option.power-up" -msgstr "Geef je plan een boost" +msgstr "Geef je abonnement een tandje erbij" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Voorkeuren" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Beeld" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Opnieuw doen" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Alles selecteren" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Bordnamen tonen" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Hulplijnen weergeven" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Kleurenpalet tonen" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Pixelraster tonen" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Linialen tonen" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Lettertype-palet tonen" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Donker thema inschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Licht thema inschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "Systeemthema inschakelen" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Ongedaan maken" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Herstellen" @@ -5149,7 +5271,7 @@ msgstr "Opgeslagen" msgid "workspace.header.saving" msgstr "Opslaan" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Delen" @@ -5158,11 +5280,11 @@ msgstr "Delen" msgid "workspace.header.unsaved" msgstr "Niet-opgeslagen wijzigingen" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Weergavemodus (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zoomen" @@ -5174,7 +5296,7 @@ msgstr "Vullen - Schalen om te vullen" msgid "workspace.header.zoom-fit" msgstr "Passend maken - Verkleinen om te passen" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Passend zoomen" @@ -5182,43 +5304,43 @@ msgstr "Passend zoomen" msgid "workspace.header.zoom-full-screen" msgstr "Volledig scherm" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Naar selectie zoomen" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Raster bewerken" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Sluiten" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Vulling aan de onderkant" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "4-zijdige opvulopties weergeven" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Horizontale vulling" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Linker vulling" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Rechter vulling" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Vulling aan de bovenkant" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Verticale vulling" @@ -5234,7 +5356,7 @@ msgstr "Klaar" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Lokaliseren" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Raster-layout tonen" @@ -5243,10 +5365,6 @@ msgstr "Raster-layout tonen" msgid "workspace.libraries.add" msgstr "Toevoegen" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s kleuren" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Er zijn nog geen kleurstijlen in je bibliotheek" @@ -5273,43 +5391,35 @@ msgstr "Recente kleuren" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Complementair" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Kleurstijl opslaan" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s componenten" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Of voeg er enkele toe om te proberen:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "Er zijn geen Gedeelde Bibliotheken bij jouw team, je kunt zoeken naar" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "enkele sjablonen hier" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Bestandsbibliotheek" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s afbeeldingen" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTHEKEN IN DIT BESTAND" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTHEKEN" @@ -5318,11 +5428,11 @@ msgstr "BIBLIOTHEKEN" msgid "workspace.libraries.library" msgstr "BIBLIOTHEEK" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "BIBLIOTHEEK-UPDATES" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Laden…" @@ -5331,51 +5441,47 @@ msgstr "Laden…" msgid "workspace.libraries.more-templates" msgstr "Je kun hier " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Er zijn geen gedeelde bibliotheken die moeten worden bijgewerkt" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Geen resultaten gevonden voor “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Gedeelde bibliotheken zoeken" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "GEDEELDE BIBLIOTHEKEN" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Bibliotheek verbinden" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Meervoudige typografie" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Alle typografie ontkoppelen" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s typografie" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Bibliotheekverbinding verbreken" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Bijwerken" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "alle wijzigingen bekijken" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "UPDATES" @@ -5383,31 +5489,31 @@ msgstr "UPDATES" msgid "workspace.notification-pill.detail" msgstr "Details" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Klik op de knop + om interacties toe te voegen." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Vervaging toevoegen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Vervaging verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Vervagen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Groep vervagen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Selectie vervagen" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Vervaging wisselen" @@ -5415,103 +5521,113 @@ msgstr "Vervaging wisselen" msgid "workspace.options.canvas-background" msgstr "Canvasachtergrond" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Content bijsnijden" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Component" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Aantekening" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Kopiëren" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Aantekening maken" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Aantekening bewerken" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Hoofd" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Component uitwisselen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Er zijn nog geen assets in deze bibliotheek" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "Niet gekoppeld" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 msgid "workspace.options.component.variant.duplicated.copy.locate" msgstr "Ga naar het hoofdonderdeel" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:496 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:509 msgid "workspace.options.component.variant.duplicated.copy.title" msgstr "" "Dit onderdeel kent conflicterende varianten. Zorg ervoor dat elke variatie " "een unieke set eigenschapswaarden heeft." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1246 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 msgid "workspace.options.component.variant.duplicated.group.locate" msgstr "Gedupliceerde varianten lokaliseren" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1243 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1278 msgid "workspace.options.component.variant.duplicated.group.title" msgstr "Sommige varianten hebben identieke eigenschappen en waarden" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:267 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:268 msgid "workspace.options.component.variant.duplicated.single.all" msgstr "Deze varianten hebben identieke eigenschappen en waarden." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:264 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 msgid "workspace.options.component.variant.duplicated.single.one" msgstr "" "Deze variant heeft identieke eigenschappen en waarden als een andere " "variant." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:270 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 msgid "workspace.options.component.variant.duplicated.single.some" msgstr "Sommige van deze varianten hebben identieke eigenschappen en waarden." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +msgid "workspace.options.component.variant.malformed.copy" +msgstr "" +"Dit onderdeel heeft varianten met ongeldige namen. Zorg ervoor dat elke " +"variant de juiste structuur volgt." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "Ongeldige varianten localiseren" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "Sommigen varianten hebben een ongeldige naam" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:502 +msgid "workspace.options.component.variant.malformed.locate" +msgstr "Ongeldige varianten zoeken" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "Deze varianten hebben een ongeldige naam." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "Deze variant heeft een ongeldige naam." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "Sommige van deze varianten hebben een ongeldige naam." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[eigenschap]=[waarde], [eigenschap]=[waarde]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "Gebruik de volgende structuur:" @@ -5534,7 +5650,7 @@ msgstr "Dezelfde naam delen." #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:76 msgid "workspace.options.component.variants-help-modal.rule2" -msgstr "Van hetzelfde type zijn" +msgstr "Zijn hetzelfde type." #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:77 msgid "workspace.options.component.variants-help-modal.rule2.detail" @@ -5544,13 +5660,13 @@ msgstr "" #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:87 msgid "workspace.options.component.variants-help-modal.rule3" -msgstr "Hetzelfde hiërarchische niveau hebben" +msgstr "Heben hetzelfde hiërarchieniveau." #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:88 msgid "workspace.options.component.variants-help-modal.rule3.detail" msgstr "Groepen, borden en lay-outs worden als gelijkwaardig beschouwd." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:935, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1157, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 msgid "workspace.options.component.variants-help-modal.title" msgstr "Hoe varianten verbonden blijven" @@ -5594,7 +5710,7 @@ msgstr "Bovenkant" msgid "workspace.options.constraints.topbottom" msgstr "Boven- en onderkant" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Ontwerp" @@ -5607,21 +5723,21 @@ msgstr "Exporteren" msgid "workspace.options.export-multiple" msgstr "Selectie exporteren" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "1 Element exporteren" msgstr[1] "%s Elementen exporteren" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Export toevoegen" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Export verwijderen" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Achtervoegsel" @@ -5629,7 +5745,7 @@ msgstr "Achtervoegsel" msgid "workspace.options.exporting-complete" msgstr "Export klaar" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exporteren…" @@ -5641,27 +5757,27 @@ msgstr "Export mislukt" msgid "workspace.options.exporting-object-slow" msgstr "Export onverwacht traag" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Vullen" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Vulling toevoegen" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Vulling verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Grootte van bord aanpassen aan inhoud" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Stroomdiagram-startpunt toevoegen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Stroomdiagram" @@ -5670,19 +5786,19 @@ msgstr "Stroomdiagram" msgid "workspace.options.flows.flow-start" msgstr "Stroomdiagram-startpunt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Stroomdiagram-startpunten" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Stroomdiagram verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automatisch" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Kolommen" @@ -5691,7 +5807,7 @@ msgstr "Kolommen" msgid "workspace.options.grid.grid-title" msgstr "Raster" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Kleur" @@ -5700,15 +5816,15 @@ msgstr "Kleur" msgid "workspace.options.grid.params.columns" msgstr "Kolommen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Tussenruimte" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Hoogte" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Marge" @@ -5717,7 +5833,7 @@ msgstr "Marge" msgid "workspace.options.grid.params.rows" msgstr "Rijen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Als standaard instellen" @@ -5731,159 +5847,159 @@ msgstr "Grootte" msgid "workspace.options.grid.params.type" msgstr "Type" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Onderkant" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Midden" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Links" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Uitrekken" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Bovenkant" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Standaard gebruiken" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Breedte" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Rijen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Vierkant" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Groep vullen" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Groep-streek" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Hulplijn toevoegen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Hulplijn verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Hulplijnen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Hulplijn wisselen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Hoogte" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspecteren" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Actie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Na vertraging" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animatie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Ontbinden" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Geen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Duwen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Schuiven" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "automatisch" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Achtergrond toevoegen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Sluiten als er buiten wordt geklikt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Overlay sluiten" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Overlay sluiten: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Vertraging" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Bestemming" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Duur" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Lineair" @@ -5892,47 +6008,47 @@ msgstr "Lineair" msgid "workspace.options.interaction-in" msgstr "In" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Muis komt binnen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Muis verlaat" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navigeer naar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navigeer naar: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(niet ingesteld)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Offset-effect" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Bij klikken" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Overlay openen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Overlay openen: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "URL openen" @@ -5941,87 +6057,87 @@ msgstr "URL openen" msgid "workspace.options.interaction-out" msgstr "Out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Midden onder" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Linksonder" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Rechtsonder" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Gecentreerd" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Handmatig" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Midden boven" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Linksboven" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Rechtsboven" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Positie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Scrollpositie behouden" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Vorig scherm" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relatief tot" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "zelf" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Overlay in/uitschakelen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Overlay in/uitschakelen: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Trigger" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Tijdens hover" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Tijdens klikken" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interacties" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Interactie toevoegen" @@ -6030,67 +6146,67 @@ msgstr "Interactie toevoegen" msgid "workspace.options.interactions.remove-interaction" msgstr "Interactie verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Kleur" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Kleur versterken" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Kleur verminderen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Donkerder maken" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Verschil" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Uitsluiting" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Hard licht" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Tint" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Lichter maken" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Helderheid" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Vermenigvuldigen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normaal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Overlay" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Verzadiging" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Scherm" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Zacht licht" @@ -6109,7 +6225,7 @@ msgstr "Lagen groeperen" msgid "workspace.options.layer-options.title.multiple" msgstr "Geselecteerde lagen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Laagzichtbaarheid wisselen" @@ -6118,19 +6234,19 @@ msgstr "Laagzichtbaarheid wisselen" msgid "workspace.options.layout-item.advanced-ops" msgstr "Geavanceerde opties" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Max.Hoogte" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Max.Breedte" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.Hoogte" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.Breedte" @@ -6244,15 +6360,15 @@ msgstr "ruimte tussen" msgid "workspace.options.layout.top" msgstr "Bovenkant" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Meer kleuren" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Meer bibliotheekkleuren" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Dekking" @@ -6261,35 +6377,35 @@ msgstr "Dekking" msgid "workspace.options.position" msgstr "Positie" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototype" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Radius" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Onder links" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Onder rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Boven links" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Boven rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Onafhankelijke radius inklappen" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Onafhankelijke radius weergeven" @@ -6301,7 +6417,7 @@ msgstr "Recent" msgid "workspace.options.retry" msgstr "Opnieuw proberen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotatie" @@ -6309,33 +6425,33 @@ msgstr "Rotatie" msgid "workspace.options.search-font" msgstr "Lettertype zoeken" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Selecteer een vorm, bord of groep om d.m.v. slepen een verbinding met een " "ander bord te maken." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Geselecteerde kleuren" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Selectie vullen" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Selectie-streek" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Schaduw toevoegen" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Vervagen" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Schaduwkleur" @@ -6347,63 +6463,64 @@ msgstr "Slagschaduw" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Schaduw naar binnen" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Schaduw verwijderen" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Spreiding" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Schaduw" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Groep voorzien van schaduw" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Selectie voorzien van schaduw" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Schaduw wisselen" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "In exports tonen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "In weergavemodus tonen" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Grootte" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Groottevoorinstellingen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "Vaste verhoudingen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "Vrije verhoudingen" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Streek" @@ -6412,7 +6529,7 @@ msgstr "Streek" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Cirkelmarkering" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Cirkel" @@ -6421,7 +6538,7 @@ msgstr "Cirkel" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Ruitmarkering" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Ruit" @@ -6430,19 +6547,19 @@ msgstr "Ruit" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Lijn-pijl" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Pijl" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Geen" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Rond" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Vierkant" @@ -6451,7 +6568,7 @@ msgstr "Vierkant" msgid "workspace.options.stroke-cap.square-marker" msgstr "Vierkantmarkering" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Rechthoek" @@ -6460,83 +6577,83 @@ msgstr "Rechthoek" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Driehoek-pijl" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Driehoek" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Streekkleur" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Streekdikte" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Streekkleur toevoegen" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Gecentreerd" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Gestreept" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Gestippeld" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Binnen" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Gemengd" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Buiten" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Streek verwijderen" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Solide" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Onderaan uitlijnen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Midden uitlijnen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Boven uitlijnen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "Links naar rechts" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "Rechts naar links" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Automatische hoogte" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Automatische breedte" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Vast" @@ -6558,35 +6675,35 @@ msgstr "Kleine letters" msgid "workspace.options.text-options.none" msgstr "Geen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Doorhalen (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Centreren" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Uitvullen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Links uitlijnen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Rechts uitlijnen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Tekst" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Groeptekst" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Selectietekst" @@ -6595,7 +6712,7 @@ msgstr "Selectietekst" msgid "workspace.options.text-options.titlecase" msgstr "Beginhoofdletters" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Onderstrepen (%s)" @@ -6604,19 +6721,19 @@ msgstr "Onderstrepen (%s)" msgid "workspace.options.text-options.uppercase" msgstr "HOOFDLETTERS" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Gebruik de afspeelknop in de koptekst om de prototypeweergave uit te voeren." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Breedte" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X-as" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y-as" @@ -6660,82 +6777,82 @@ msgstr "Knooppunten loskoppelen (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Uitlijnen op knooppunten (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Openen" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Ontdekken [meer plug-ins](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Nog geen plug-ins geïnstalleerd" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Het plug-in-manifest is onjuist." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Je moet een redacteur zijn om deze plug-in te gebruiken" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "De plug-in bestaat niet of de URL is niet correct." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Installeren" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Geïnstalleerde plug-ins" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Plug-in-beheer" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Plug-ins" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "DEZE PLUGIN UPDATEN" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "De plug-in is gewijzigd sinds je hem voor het laatst hebt geopend. Het wil " "nu ook toegang krijgen tot:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Bestandsdownloads starten." -#: src/app/main/ui/workspace/plugins.cljs:285 +#: src/app/main/ui/workspace/plugins.cljs:286 msgid "workspace.plugins.permissions.allow-localstorage" msgstr "Gegevens opslaan in de browser." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Jouw opmerkingen en antwoorden lezen." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Lees en wijzig jouw opmerkingen en antwoord in jouw naam." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Lees de inhoud van bestanden waartoe gebruikers toegang hebben." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Lees en wijzig de inhoud van bestanden waartoe gebruikers toegang hebben." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Houd er rekening mee dat deze plug-in is gemaakt door een externe partij, " @@ -6743,31 +6860,31 @@ msgstr "" "van jouw gegevens en beveiliging zijn belangrijk voor ons. Als je je zorgen " "maakt, neem dan contact op met ondersteuning." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Jouw bibliotheken en middelen bekijken." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Jouw bibliotheken en middelen lezen en aanpassen." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "PLUG-IN '%s' WIL TOEGANG TOT:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Lees de profielinformatie van de huidige gebruiker." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Plug-in-lijst" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Plug-in verwijderen" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "De URL van een plug-in invoeren" @@ -6775,26 +6892,26 @@ msgstr "De URL van een plug-in invoeren" msgid "workspace.plugins.success" msgstr "Plug-in met succes geladen." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Plug-ins" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "NIET NU" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Wil je even kijken? Het wordt geopend in een nieuw concept voor je huidige " "team. (Zo niet, dan vindt je het altijd in de geïnstalleerde plug-ins van " "elk bestand.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "PLUG-IN '%s' IS GEÏNSTALLEERD VOOR JE GEBRUIKER!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "PLUG-IN UITPROBEREN" @@ -6806,15 +6923,15 @@ msgstr "Flex-indeling toevoegen" msgid "workspace.shape.menu.add-grid" msgstr "Rasterindeling toevoegen" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Lay-out toevoegen" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Variant aanmaken" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "Nieuwe eigenschap toevoegen" @@ -6826,11 +6943,11 @@ msgstr "Naar achtergrond verplaatsen" msgid "workspace.shape.menu.backward" msgstr "Naar achteren verplaatsen" -#: src/app/main/ui/workspace/context_menu.cljs:615, src/app/main/ui/workspace/sidebar/assets/components.cljs:638, src/app/main/ui/workspace/sidebar/assets/groups.cljs:74, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1021 +#: src/app/main/ui/workspace/context_menu.cljs:617, src/app/main/ui/workspace/sidebar/assets/components.cljs:634, src/app/main/ui/workspace/sidebar/assets/groups.cljs:75, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1041 msgid "workspace.shape.menu.combine-as-variants" msgstr "Combineren als varianten" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:640 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:636 msgid "workspace.shape.menu.combine-as-variants-error" msgstr "Componenten moeten op dezelfde pagina staan" @@ -6866,7 +6983,7 @@ msgstr "Kopiëren als SVG" msgid "workspace.shape.menu.copy-text" msgstr "Kopiëren als tekst" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Aantekening maken" @@ -6874,11 +6991,11 @@ msgstr "Aantekening maken" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Selectie naar bord" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Component aanmaken" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Meerdere componenten aanmaken" @@ -6886,7 +7003,7 @@ msgstr "Meerdere componenten aanmaken" msgid "workspace.shape.menu.cut" msgstr "Knippen" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Verwijderen" @@ -6894,15 +7011,15 @@ msgstr "Verwijderen" msgid "workspace.shape.menu.delete-flow-start" msgstr "Stroomdiagram-start verwijderen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Instantie losmaken" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Instanties losmaken" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Verschil" @@ -6914,11 +7031,11 @@ msgstr "Dupliceren" msgid "workspace.shape.menu.edit" msgstr "Bewerken" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Uitsluiten" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Afvlakken" @@ -6951,19 +7068,19 @@ msgstr "Ga naar hoofdcomponent" msgid "workspace.shape.menu.group" msgstr "Groep" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Verbergen" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Gebruikersinterface tonen/verbergen" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Kruispunt" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Vergrendelen" @@ -6971,7 +7088,7 @@ msgstr "Vergrendelen" msgid "workspace.shape.menu.mask" msgstr "Masker" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Plakken" @@ -6991,15 +7108,15 @@ msgstr "Flex-indeling verwijderen" msgid "workspace.shape.menu.remove-grid" msgstr "Raster-layout verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Lay-out verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "Eigenschap verwijderen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1221 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1256 msgid "workspace.shape.menu.remove-variant-property.last-property" msgstr "Variant moet ten minste één eigenschap hebben" @@ -7007,15 +7124,15 @@ msgstr "Variant moet ten minste één eigenschap hebben" msgid "workspace.shape.menu.rename" msgstr "Naam wijzigen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Overschrijvingen opnieuw instellen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Hoofdcomponent herstellen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "Variant herstellen" @@ -7023,15 +7140,15 @@ msgstr "Variant herstellen" msgid "workspace.shape.menu.select-layer" msgstr "Laag selecteren" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Tonen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "In paneel Assets tonen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Hoofdcomponent tonen" @@ -7044,6 +7161,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Instellen als miniatuur" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformeren naar pad" @@ -7051,11 +7169,11 @@ msgstr "Transformeren naar pad" msgid "workspace.shape.menu.ungroup" msgstr "Groep opheffen" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Vereniging" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Ontgrendelen" @@ -7068,7 +7186,7 @@ msgstr "Masker wegnemen" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Hoofdcomponenten bijwerken" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Hoofdcomponent bijwerken" @@ -7080,11 +7198,11 @@ msgstr "Zijbalk inklappen" msgid "workspace.sidebar.expand" msgstr "Zijbalk uitklappen" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Geschiedenis" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Lagen" @@ -7124,11 +7242,11 @@ msgstr "Teksten" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Geïmporteerde SVG-kenmerken" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Pagina's" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Pagina toevoegen" @@ -7145,27 +7263,27 @@ msgstr "%s actieve thema's" msgid "workspace.tokens.add set" msgstr "Verzameling toevoegen" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Nieuw thema toevoegen" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "Verzameling aan deze groep toevoegen" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "Token toevoegen: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Toegepast op" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "As" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Terug naar themalijst" @@ -7195,15 +7313,15 @@ msgstr "Kleur" msgid "workspace.tokens.create-new-theme" msgstr "Maak nu je eerste thema aan." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Maak er een aan." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Nieuw %s token aanmaken" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Token verwijderen" @@ -7211,19 +7329,19 @@ msgstr "Token verwijderen" msgid "workspace.tokens.delete-theme-title" msgstr "Thema verwijderen" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Token dupliceren" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "kopie" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Token bewerken" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Thema bewerken" @@ -7231,15 +7349,11 @@ msgstr "Thema bewerken" msgid "workspace.tokens.edit-themes" msgstr "Thema's bewerken" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Token bewerken" - #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "De tokenwaarde mag niet leeg zijn" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Voer de tokennaam %s in" @@ -7271,7 +7385,13 @@ msgstr "Voorbeeld:" msgid "workspace.tokens.export.single-file" msgstr "Enkel bestand" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/data/workspace/tokens/application.cljs:292 +msgid "workspace.tokens.font-variant-not-found" +msgstr "" +"Fout bij instellen van lettertype gewicht/stijl. Deze lettertypestijl " +"bestaat niet in het huidige lettertype" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "Tussenruimtes" @@ -7289,7 +7409,7 @@ msgstr "Groepnaam" msgid "workspace.tokens.grouping-set-alert" msgstr "Groepering van tokenverzamelingen is nog niet ondersteund." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:232 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:233 msgid "workspace.tokens.import-button-prefix" msgstr "Importeren: %s" @@ -7297,29 +7417,29 @@ msgstr "Importeren: %s" msgid "workspace.tokens.import-error" msgstr "Fout bij importeren:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:273 msgid "workspace.tokens.import-menu-folder-option" msgstr "Map" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 msgid "workspace.tokens.import-menu-json-option" msgstr "Enkel JSON-bestand" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:270 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 msgid "workspace.tokens.import-menu-zip-option" msgstr "ZIP-bestand" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "In meerdere bestanden zijn de bestandsnaam / het pad de ingestelde namen." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "" "In één JSON-bestand moeten de sleutels op het eerste niveau de namen van de " "tokenset zijn." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "Tokens importeren" @@ -7330,7 +7450,7 @@ msgstr "" "Bij het importeren van een JSON-bestand worden alle huidige tokens, " "verzamelingen en thema's overschreven" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "" "Als je tokens importeert, worden al je huidige tokens, sets en thema's " @@ -7404,15 +7524,15 @@ msgstr "Thema" msgid "workspace.tokens.label.theme-placeholder" msgstr "Een thema toevoegen (bijv. Licht)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "Marges" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "Max. grootte" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "Min. grootte" @@ -7420,7 +7540,7 @@ msgstr "Min. grootte" msgid "workspace.tokens.missing-references" msgstr "Ontbrekende tokenverwijzingen: " -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:148 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:123 msgid "workspace.tokens.more-options" msgstr "Klik met de rechtermuisknop om opties te zien" @@ -7432,7 +7552,7 @@ msgstr "Geen actieve verzamelingen" msgid "workspace.tokens.no-active-theme" msgstr "Geen thema actief" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Je moet een redacteur zijn om verzamelingen in/uit te schakelen" @@ -7440,11 +7560,11 @@ msgstr "Je moet een redacteur zijn om verzamelingen in/uit te schakelen" msgid "workspace.tokens.no-permission-themes" msgstr "Je moet een redacteur zijn om thema's te gebruiken" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Er zijn nog geen verzamelingen gedefinieerd. Maak er eerst een aan." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Er zijn nog geen verzamelingen." @@ -7472,12 +7592,11 @@ msgstr "Ongeldige tokenwaarde. De opgeloste waarde is te groot: %s" msgid "workspace.tokens.opacity-range" msgstr "De dekking moet tussen 0 en 100% of 0 en 1 zijn (bijv. 50% of 0,5)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 -#, fuzzy +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 msgid "workspace.tokens.original-value" msgstr "Oorspronkelijke waarde: %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "Vulling" @@ -7485,7 +7604,7 @@ msgstr "Vulling" msgid "workspace.tokens.radius" msgstr "Radius" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Referentie is niet geldig of zit niet in een actieve verzameling" @@ -7494,8 +7613,7 @@ msgstr "Referentie is niet geldig of zit niet in een actieve verzameling" msgid "workspace.tokens.reference-error" msgstr "Referentie fouten: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 -#, fuzzy +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 msgid "workspace.tokens.resolved-value" msgstr "Opgeloste waarde: %s" @@ -7503,7 +7621,7 @@ msgstr "Opgeloste waarde: %s" msgid "workspace.tokens.save-theme" msgstr "Thema opslaan" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Verzameling kiezen." @@ -7511,11 +7629,11 @@ msgstr "Verzameling kiezen." msgid "workspace.tokens.self-reference" msgstr "Token bevat cirkelverwijzing" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "Voer de naam in (gebruik '/' voor groepen)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "" "Bepaal welke tokenverzamelingen moeten worden gebruikt als onderdeel van " @@ -7540,7 +7658,7 @@ msgstr "" msgid "workspace.tokens.settings" msgstr "Instellingen voor tokens" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "Grootte" @@ -7548,13 +7666,13 @@ msgstr "Grootte" msgid "workspace.tokens.stroke-width-range" msgstr "De dikte van de streek moet groter zijn dan of gelijk zijn aan 0." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:865, src/app/main/ui/workspace/tokens/management/create/form.cljs:895 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1012, src/app/main/ui/workspace/tokens/management/create/form.cljs:1051 msgid "workspace.tokens.text-case-value-enter" -msgstr "Voer in: none | uppercase | lowercase | capitalize of {alias}" +msgstr "none | uppercase | lowercase | capitalize of {alias}" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:871, src/app/main/ui/workspace/tokens/management/create/form.cljs:898 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1018, src/app/main/ui/workspace/tokens/management/create/form.cljs:1055 msgid "workspace.tokens.text-decoration-value-enter" -msgstr "Voer tekstdecoratie in: none | underline | strike-through" +msgstr "none | underline | strike-through of {alias}" #: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:130 msgid "workspace.tokens.theme-name" @@ -7570,28 +7688,27 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "Lijst met thema's" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 -#, fuzzy +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 msgid "workspace.tokens.token-description" msgstr "Beschrijving" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:827 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:973 msgid "workspace.tokens.token-font-family-select" msgstr "Lettertypefamilie selecteren" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:834, src/app/main/ui/workspace/tokens/management/create/form.cljs:885 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1029 msgid "workspace.tokens.token-font-family-value" msgstr "Lettertypefamilie" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:833, src/app/main/ui/workspace/tokens/management/create/form.cljs:886 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:979, src/app/main/ui/workspace/tokens/management/create/form.cljs:1031 msgid "workspace.tokens.token-font-family-value-enter" msgstr "Lettertypefamilie of lijst met lettertypen gescheiden door komma (,)" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Naam" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " is geen geldige tokennaam.\n" @@ -7603,11 +7720,11 @@ msgstr "" msgid "workspace.tokens.token-not-resolved" msgstr "Kan referentietoken met de naam: %s niet oplossen" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Waarde" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "Voer een waarde of alias in met {alias}" @@ -7615,7 +7732,7 @@ msgstr "Voer een waarde of alias in met {alias}" msgid "workspace.tokens.tokens-section-title" msgstr "TOKENS - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Hulpmiddelen" @@ -7627,21 +7744,25 @@ msgstr "Importeren was succesvol. Sommige tokens zijn niet inbegrepen." msgid "workspace.tokens.unknown-token-type-section" msgstr "Typ '%s' wordt niet ondersteund (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "De waarde is niet geldig" +#: src/app/main/data/workspace/tokens/errors.cljs:69 +msgid "workspace.tokens.value-with-percent" +msgstr "Ongeldige waarde: % is niet toegestaan." + #: src/app/main/data/workspace/tokens/errors.cljs:65 msgid "workspace.tokens.value-with-units" msgstr "Ongeldige waarde: Eenheden zijn niet toegestaan." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "" "Met het wijzigen van de naam van dit token, worden alle verwijzingen naar " "de oude naam verbroken." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Assets" @@ -7649,7 +7770,7 @@ msgstr "Assets" msgid "workspace.toolbar.color-palette" msgstr "Kleurenpalet (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Commentaar (%s)" @@ -7860,19 +7981,19 @@ msgstr "Voortgang van %s" msgid "workspace.undo.title" msgstr "Geschiedenis" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Afwijzen" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Meer info" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Er zijn updates in gedeelde bibliotheken" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Bijwerken" @@ -7940,11 +8061,11 @@ msgstr "Wil je deze versie herstellen?" msgid "workspace.versions.snapshot-menu" msgstr "Snapshot-menu openen" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Acties" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Geschiedenis" @@ -7970,3 +8091,217 @@ msgstr "Automatisch opgeslagen versies worden %s dagen bewaard." #, unused msgid "workspace.viewport.click-to-close-path" msgstr "Klik om het pad te sluiten" + +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:98, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:105 +msgid "color-row.token-color-row.deleted-token" +msgstr "Dit token bestaat niet of is verwijderd." + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:35 +msgid "color-token.empty-state" +msgstr "" +"Geen beschikbare kleurentokens. Controleer actieve sets/thema's of voeg " +"nieuwe tokens toe." + +#: src/app/main/ui/dashboard/team.cljs:765 +msgid "dashboard.invitation-modal.delete" +msgstr "Je gaat de uitnodigingen verwijderen op:" + +#: src/app/main/ui/dashboard/team.cljs:766 +msgid "dashboard.invitation-modal.resend" +msgstr "Je gaat de uitnodigingen opnieuw versturen:" + +#: src/app/main/ui/dashboard/team.cljs:756 +msgid "dashboard.invitation-modal.title.delete-invitations" +msgstr "Uitnodigingen verwijderen" + +#: src/app/main/ui/dashboard/team.cljs:757 +msgid "dashboard.invitation-modal.title.resend-invitations" +msgstr "Uitnodigingen opnieuw versturen" + +#: src/app/main/ui/dashboard/team.cljs:949 +msgid "dashboard.order-invitations-by-role" +msgstr "Sortering op rol" + +#: src/app/main/ui/dashboard/team.cljs:958 +msgid "dashboard.order-invitations-by-status" +msgstr "Sortering op status" + +#: src/app/main/ui/inspect/styles/property_detail_copiable.cljs:52 +msgid "inspect.tabs.styles.panel.copy-to-clipboard" +msgstr "Kopiëren naar klembord" + +#: src/app/main/ui/inspect/styles/style_box.cljs:22 +msgid "inspect.tabs.styles.panel.geometry" +msgstr "Grootte & positie" + +#: src/app/main/ui/inspect/styles/style_box.cljs:59, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:179 +msgid "inspect.tabs.styles.panel.toggle-style" +msgstr "Paneel &s wisselen" + +#: src/app/main/ui/inspect/styles/style_box.cljs:21 +msgid "inspect.tabs.styles.panel.token" +msgstr "Tokens & thema's" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:26 +msgid "inspect.tabs.styles.panel.tokens.active-sets" +msgstr "Actieve verzamelingen" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:21 +msgid "inspect.tabs.styles.panel.tokens.active-themes" +msgstr "Actieve thema's" + +#: src/app/main/ui/inspect/styles/style_box.cljs:20 +msgid "inspect.tabs.styles.panel.variant" +msgstr "Variant eigenschappen" + +#: src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:102, src/app/main/ui/inspect/styles/rows/properties_row.cljs:53 +msgid "inspect.tabs.styles.token.resolved-value" +msgstr "Opgeloste waarde:" + +#: src/app/main/ui/dashboard/sidebar.cljs:1043 +msgid "labels.about-penpot" +msgstr "Over Penpot" + +#: src/app/main/ui/inspect/styles/style_box.cljs:26 +msgid "labels.blur" +msgstr "Vervagen" + +#: src/app/main/ui/workspace/colorpicker.cljs:427 +msgid "labels.color" +msgstr "Kleur" + +#: src/app/main/ui/dashboard/sidebar.cljs:1030 +msgid "labels.community-contributions" +msgstr "Gemeenschap & bijdragen" + +#: src/app/main/ui/inspect/styles/style_box.cljs:23 +msgid "labels.fill" +msgstr "Vullen" + +#: src/app/main/ui/dashboard/sidebar.cljs:1019 +msgid "labels.help-learning" +msgstr "Hulp & studie" + +#: src/app/main/ui/inspect/styles/style_box.cljs:28 +msgid "labels.layout" +msgstr "Opmaak" + +#: src/app/main/ui/dashboard/sidebar.cljs:798 +msgid "labels.learning-center" +msgstr "Studiecentrum" + +#: src/app/main/ui/dashboard/sidebar.cljs:878 +msgid "labels.penpot-changelog" +msgstr "Penpot wijzigingen" + +#: src/app/main/ui/dashboard/sidebar.cljs:804 +msgid "labels.penpot-hub" +msgstr "Penpot-hub" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:644 +msgid "labels.reference" +msgstr "Referentie" + +#: src/app/main/ui/dashboard/team.cljs:788 +msgid "labels.resend" +msgstr "Opnieuw versturen" + +#: src/app/main/ui/inspect/styles/style_box.cljs:27 +msgid "labels.shadow" +msgstr "Schaduw" + +#: src/app/main/ui/inspect/styles/style_box.cljs:24, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:46 +msgid "labels.stroke" +msgstr "Streek" + +#: src/app/main/ui/inspect/right_sidebar.cljs:107, src/app/main/ui/inspect/styles.cljs:107 +msgid "labels.styles" +msgstr "Stijlen" + +#: src/app/main/ui/inspect/styles/style_box.cljs:33 +msgid "labels.svg" +msgstr "SVG" + +#: src/app/main/ui/inspect/styles/style_box.cljs:25 +msgid "labels.text" +msgstr "Tekst" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1148 +msgid "labels.typography" +msgstr "Typografie" + +#: src/app/main/ui/inspect/right_sidebar.cljs:65, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:949, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:518 +msgid "labels.variant" +msgstr "Variant" + +#: src/app/main/ui/dashboard/sidebar.cljs:872 +msgid "labels.version-notes" +msgstr "Versie %s opmerkingen" + +#: src/app/main/ui/inspect/styles/style_box.cljs:32 +msgid "labels.visibility" +msgstr "Zichtbaarheid" + +#: src/app/main/ui/dashboard/team.cljs:825 +msgid "notifications.invitation-deleted" +msgstr "Uitnodiging met succes verwijderd" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +msgid "shortcuts.create-component-variant" +msgstr "Component/variant aanmaken" + +#: src/app/main/ui/workspace/colorpicker.cljs:431, src/app/main/ui/workspace/colorpicker.cljs:443 +msgid "workspace.colorpicker.color-tokens" +msgstr "Kleurtokens" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:464 +msgid "workspace.component.swap.loop-error" +msgstr "Componenten kunnen niet in zichzelf worden genest." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:463 +msgid "workspace.component.switch.loop-error-multi" +msgstr "" +"Sommige exemplaren konden niet worden verwisseld. Componenten kunnen niet in " +"zichzelf worden genest." + +#: src/app/main/ui/workspace/libraries.cljs:349 +msgid "workspace.libraries.connected-to" +msgstr "Verbonden met" + +#: src/app/main/data/workspace/tokens/errors.cljs:97 +msgid "workspace.tokens.composite-line-height-needs-font-size" +msgstr "" +"Regelafstand is afhankelijk van de lettergrootte. Voeg een lettergrootte toe " +"om de opgeloste waarde te verkrijgen." + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:551 +msgid "workspace.tokens.edit-token" +msgstr "%s token bewerken" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1024, src/app/main/ui/workspace/tokens/management/create/form.cljs:1039 +msgid "workspace.tokens.font-weight-value-enter" +msgstr "Font weight (300, Bold Italic...) of een {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:711 +msgid "workspace.tokens.individual-tokens" +msgstr "Individuele tokens gebruiken" + +#: src/app/main/data/workspace/tokens/errors.cljs:93 +msgid "workspace.tokens.invalid-token-value-typography" +msgstr "Ongeldige waarde: moet verwijzen naar een samengesteld typografietoken." + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1047 +msgid "workspace.tokens.letter-spacing-value-enter-composite" +msgstr "Letter spacing of {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1043 +msgid "workspace.tokens.line-height-value-enter" +msgstr "Line height (vermenigvuldigingsfactor, px, %) of {alias}" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:744 +msgid "workspace.tokens.reference-composite" +msgstr "Voer een alias voor tokentypografie in" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:715 +msgid "workspace.tokens.use-reference" +msgstr "Referentie gebruiken" diff --git a/frontend/translations/pl.po b/frontend/translations/pl.po index 9c8f57b024..298219203b 100644 --- a/frontend/translations/pl.po +++ b/frontend/translations/pl.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Radek Sawicki \n" -"Language-Team: Polish " -"\n" +"Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && " -"(n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.13-dev\n" +"Plural-Forms: nplurals=3; plural=" +"(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -143,7 +143,7 @@ msgstr "Utwórz konto" msgid "auth.sidebar-tagline" msgstr "Rozwiązanie typu Open Source do projektowania i prototypowania." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Warunki świadczenia usług" @@ -151,7 +151,7 @@ msgstr "Warunki świadczenia usług" msgid "auth.verification-email-sent" msgstr "Wysłaliśmy email weryfikacyjny na adres" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Opublikuj" @@ -224,7 +224,7 @@ msgstr "Udostępnij prototypy" msgid "common.share-link.view-all" msgstr "Wybierz wszystko" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Cofnij publikację" @@ -272,7 +272,7 @@ msgstr "Rozpocznij wycieczkę" msgid "dasboard.walkthrough-hero.title" msgstr "Przewodnik po interfejsie" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Dodaj jako Udostępnioną Bibliotekę" @@ -280,27 +280,27 @@ msgstr "Dodaj jako Udostępnioną Bibliotekę" msgid "dashboard.change-email" msgstr "Zmień email" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(skopiuj)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Utwórz nowy zespół" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Twój Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Usuń zespół" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Pobierz plik Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Pobierz plik standardowy (.svg + .json)" @@ -316,7 +316,7 @@ msgstr "Zduplikuj %s pliki" msgid "dashboard.export-binary-multi" msgstr "Pobierz %s plików Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Eksportuj obszary kompozycji jako PDF" @@ -332,7 +332,7 @@ msgstr "Eksportuj %s pliki Penpot" msgid "dashboard.export-multiple.selected" msgstr "%s z %s elementów wybranych" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Eksportuj" @@ -494,11 +494,11 @@ msgstr "Przesyłanie danych na serwer (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Przesyłanie pliku: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Zaproś ludzi" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Opuść zespół" @@ -510,7 +510,7 @@ msgstr "Biblioteki i szablony" msgid "dashboard.libraries-and-templates.explore" msgstr "Poznaj więcej z nich i dowiedz się, jak pomóc" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Wystąpił problem z importem szablonu. Szablon nie został zaimportowany." @@ -542,7 +542,7 @@ msgstr "Przenieś do innego zespołu" msgid "dashboard.new-file" msgstr "+ Nowy plik" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Nowy plik" @@ -550,7 +550,7 @@ msgstr "Nowy plik" msgid "dashboard.new-project" msgstr "+ Nowy projekt" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nowy projekt" @@ -558,7 +558,7 @@ msgstr "Nowy projekt" msgid "dashboard.no-matches-for" msgstr "Nie znaleziono dopasowań dla “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Tutaj pojawią się przypięte projekty" @@ -574,7 +574,7 @@ msgstr "Twój adres email został pomyślnie zweryfikowany" msgid "dashboard.notifications.password-saved" msgstr "Hasło zostało pomyślnie zapisane!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s członków" @@ -590,7 +590,7 @@ msgstr "Opcje" msgid "dashboard.password-change" msgstr "Zmień hasło" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Przypnij/Odepnij" @@ -611,7 +611,7 @@ msgstr "Usuń jako Bibliotekę Udostępnioną" msgid "dashboard.save-settings" msgstr "Zapisz ustawienia" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Szukaj…" @@ -639,7 +639,7 @@ msgstr "Twój projekt został pomyślnie usunięty" msgid "dashboard.success-duplicate-project" msgstr "Twój projekt został pomyślnie zduplikowany" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Twój plik został pomyślnie przeniesiony" @@ -651,15 +651,15 @@ msgstr "Twoje pliki został pomyślnie przeniesione" msgid "dashboard.success-move-project" msgstr "Twój projekt został pomyślnie przeniesiony" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Informacje o zespole" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Członkowie zespołu" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Projekty zespołu" @@ -675,7 +675,7 @@ msgstr "Wyniki wyszukiwania" msgid "dashboard.type-something" msgstr "Wpisz, aby wyszukać wyniki" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Cofnij publikację biblioteki" @@ -683,38 +683,38 @@ msgstr "Cofnij publikację biblioteki" msgid "dashboard.update-settings" msgstr "Aktualizuj ustawienia" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Jest aktywny" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Po wywołaniu tego haka zostaną dostarczone szczegóły zdarzenia" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Typ treści" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Utwórz webhooka" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Pomyślnie utworzono webhook." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhook to prosty sposób na powiadamianie innych stron internetowych i " "aplikacji o określonych zdarzeniach w Penpot. Wyślemy żądanie POST do " "każdego podanego przez Ciebie adresu URL." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Naciśnij przycisk „Dodaj webhook”, aby go dodać." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Do tej pory nie utworzono żadnych webhooków." @@ -734,7 +734,7 @@ msgstr "Email" msgid "dashboard.your-name" msgstr "Twoje imię" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Twój Penpot" @@ -750,11 +750,11 @@ msgstr "Uwaga" msgid "ds.component-subtitle" msgstr "Komponenty do aktualizacji:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Anuluj" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -794,11 +794,11 @@ msgstr "E-mail został już zweryfikowany." msgid "errors.email-as-password" msgstr "Nie możesz użyć swojego adresu email jako hasła" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Email «%s» zawiera wiele stałych raportów o odrzuceniu." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "Email «%s» został zgłoszony jako spam lub trwale odrzucony." @@ -812,7 +812,7 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Funkcja '%s' nie jest obsługiwana." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Coś poszło nie tak." @@ -845,7 +845,7 @@ msgstr "To zaproszenie może być anulowane lub wygasło." msgid "errors.ldap-disabled" msgstr "Uwierzytelnianie LDAP jest wyłączone." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Osiągnąłeś limit '%s'. Skontaktuj się z pomocą techniczną." @@ -861,7 +861,7 @@ msgstr "Wygląda na to, że zawartość obrazu nie pasuje do rozszerzenia pliku. msgid "errors.media-type-not-allowed" msgstr "Wygląda, że to nie jest prawidłowy obraz." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "W zapraszanym profilu powiadomienia email są wyciszone (zgłoszenia spamu " @@ -881,7 +881,7 @@ msgstr "Hasło powinno zawierać co najmniej 8 znaków" msgid "errors.profile-blocked" msgstr "Profil jest zablokowany" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Twój profil ma wyciszone powiadomienia email (zgłoszenia spamu lub wysokie " @@ -891,17 +891,17 @@ msgstr "" msgid "errors.registration-disabled" msgstr "Rejestracja jest obecnie wyłączona." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Niewystarczająca liczba członków, aby opuścić zespół, prawdopodobnie chcesz " "go usunąć." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Członek, którego próbujesz przypisać, nie istnieje." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Właściciel nie może opuścić zespołu, musisz ponownie przypisać rolę " @@ -915,31 +915,31 @@ msgstr "Wystąpił nieoczekiwany błąd." msgid "errors.unexpected-token" msgstr "Nieznany token" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Błąd połączenia, adres URL nieosiągalny" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "Adres URL nie przechodzi weryfikacji." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Ostatnia wysyłka nie powiodła się." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Błąd podczas sprawdzania poprawności SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Koniec czasu" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Nieoczekiwany błąd podczas sprawdzania poprawności" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Nieoczekiwany status %s" @@ -1003,19 +1003,19 @@ msgstr "Wystąpił błąd" msgid "inspect.attributes.blur" msgstr "Rozmycie" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Wartość" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1023,7 +1023,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Wypełnienie" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Pobierz obraz źródłowy" @@ -1117,73 +1117,75 @@ msgstr "Ciągły" msgid "inspect.attributes.stroke.width" msgstr "Szerokość" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Typografia" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Rodzina czcionek" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Rozmiar czcionki" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Styl czcionki" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Rozstaw liter" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Wysokość linii" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Dekoracja tekstu" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Brak" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Podkreślenie" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Przekształcenie tekstu" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Kapitaliki" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "małe litery" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Brak" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "DUŻE LITERY" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Jeśli chcesz dowiedzieć się więcej o inspekcji projektu, odwiedź centrum " "pomocy Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Więcej informacji o inspekcji" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Wybierz kształt, tablicę lub grupę, aby sprawdzić ich właściwości i kod" @@ -1243,7 +1245,7 @@ msgstr "Tekst" msgid "inspect.tabs.info" msgstr "Informacje" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Skróty" @@ -1251,7 +1253,7 @@ msgstr "Skróty" msgid "labels.accept" msgstr "Akceptuj" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktywny" @@ -1259,11 +1261,11 @@ msgstr "Aktywny" msgid "labels.add-custom-font" msgstr "Dodaj niestandardową czcionkę" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Admin" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Wszystko" @@ -1286,19 +1288,19 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Bad Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Anuluj" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Zamknij" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Komentarze" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Społeczność" @@ -1306,7 +1308,7 @@ msgstr "Społeczność" msgid "labels.confirm-password" msgstr "Potwierdź hasło" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Kontynuuj" @@ -1318,11 +1320,11 @@ msgstr "Kontynuuj z" msgid "labels.continue-with-penpot" msgstr "Możesz kontynuować z kontem Penpot" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Kopiuj link" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Stwórz" @@ -1342,7 +1344,7 @@ msgstr "Niestandardowe czcionki" msgid "labels.dashboard" msgstr "Kokpit" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Usuń" @@ -1354,7 +1356,7 @@ msgstr "Usuń komentarz" msgid "labels.delete-comment-thread" msgstr "Usuń wątek" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Usuń zaproszenie" @@ -1362,11 +1364,11 @@ msgstr "Usuń zaproszenie" msgid "labels.delete-multi-files" msgstr "Usuń %s plików" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Szkice" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Edytuj" @@ -1374,15 +1376,15 @@ msgstr "Edytuj" msgid "labels.edit-file" msgstr "Edytuj plik" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Edytor" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Wygasły" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Eksportuj" @@ -1406,15 +1408,15 @@ msgstr "Dostawcy czcionek" msgid "labels.font-variants" msgstr "Style" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Czcionki" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repozytorium Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Dodaj opinię" @@ -1422,15 +1424,15 @@ msgstr "Dodaj opinię" msgid "labels.go-back" msgstr "Wróć" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Centrum Pomocy" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Ukryj rozwiązane komentarze" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Nieaktywny" @@ -1448,7 +1450,7 @@ msgstr "" msgid "labels.internal-error.main-message" msgstr "Błąd wewnętrzny" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Zaproszenia" @@ -1456,7 +1458,7 @@ msgstr "Zaproszenia" msgid "labels.language" msgstr "Język" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Biblioteki i szablony" @@ -1464,15 +1466,15 @@ msgstr "Biblioteki i szablony" msgid "labels.log-or-sign" msgstr "Zaloguj się lub zarejestruj" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Wyloguj" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Członek" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Członkowie" @@ -1480,13 +1482,13 @@ msgstr "Członkowie" msgid "labels.new-password" msgstr "Nowe hasło" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "" "Wszyscy jesteście na bieżąco! Tutaj będą pojawiać się powiadomienia o " "nowych komentarzach." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Brak oczekujących zaproszeń." @@ -1499,7 +1501,7 @@ msgstr "Ta strona może nie istnieć lub nie masz do niej uprawnień dostępu." msgid "labels.not-found.main-message" msgstr "Kurza stopa!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 plik" @@ -1513,7 +1515,7 @@ msgstr[0] "1 artboard" msgstr[1] "%s artboardy" msgstr[2] "%s artboardów" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 projekt" @@ -1533,7 +1535,7 @@ msgstr "Tylko twoje" msgid "labels.or" msgstr "lub" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Właściciel" @@ -1541,7 +1543,7 @@ msgstr "Właściciel" msgid "labels.password" msgstr "Hasło" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Oczekiwanie" @@ -1549,11 +1551,11 @@ msgstr "Oczekiwanie" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projekty" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Uwagi do wydania" @@ -1567,11 +1569,11 @@ msgstr "Przeładuj plik" msgid "labels.remove" msgstr "Usuń" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Usuń członka zespołu" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Zmień nazwę" @@ -1579,7 +1581,7 @@ msgstr "Zmień nazwę" msgid "labels.rename-team" msgstr "Zmień nazwę zespołu" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Wyślij ponownie zaproszenie" @@ -1587,11 +1589,11 @@ msgstr "Wyślij ponownie zaproszenie" msgid "labels.retry" msgstr "Ponów" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rola" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Zapisz" @@ -1615,7 +1617,7 @@ msgstr "Zajmujemy się planowaną konserwacją naszych systemów." msgid "labels.service-unavailable.main-message" msgstr "Serwis niedostępny" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Ustawienia" @@ -1623,11 +1625,11 @@ msgstr "Ustawienia" msgid "labels.share-prototype" msgstr "Udostępnij prototyp" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Biblioteki Współdzielone" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Pokaż wszystkie komentarze" @@ -1635,15 +1637,15 @@ msgstr "Pokaż wszystkie komentarze" msgid "labels.show-comments-list" msgstr "Pokaż listę komentarzy" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Pokaż tylko swoje komentarze" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Samouczki" @@ -1671,15 +1673,15 @@ msgstr "Wgraj niestandardowe czcionki" msgid "labels.uploading" msgstr "Wgrywanie…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "TYLKO PODGLĄD" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Widz" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooki" @@ -1687,11 +1689,11 @@ msgstr "Webhooki" msgid "labels.write-new-comment" msgstr "Napisz nowy komentarz" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(Ty)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Twoje konto" @@ -1739,19 +1741,19 @@ msgstr "Zmień email" msgid "modals.change-email.title" msgstr "Zmień swój email" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Utwórz webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Utwórz webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Ładowność URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -1829,11 +1831,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Usuwanie czcionki" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Czy na pewno chcesz usunąć tę stronę?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Usuń stronę" @@ -1870,71 +1872,71 @@ msgstr[0] "Usuwanie pliku" msgstr[1] "Usuwanie plików" msgstr[2] "Usuwanie plików" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Usuń zespół" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Czy na pewno chcesz usunąć ten zespół? Wszystkie projekty i pliki powiązane " "z zespołem zostaną trwale usunięte." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Usuwanie zespołu" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Usuń członka" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Czy na pewno chcesz usunąć tego członka z zespołu?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Usuń członka zespołu" -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Usuń webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Czy na pewno chcesz usunąć ten webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Usuwanie webhooka" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Edytuj webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Edytuj webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Wyślij zaproszenie" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Emaile, oddzielone przecinkami" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Zaproś członków do zespołu" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Ponieważ jesteś jedynym członkiem tego zespołu, zespół zostanie usunięty " "wraz z projektami i plikami." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Czy na pewno chcesz opuścić zespół %s?" @@ -1962,39 +1964,39 @@ msgstr "Wybierz członka do awansu" msgid "modals.leave-and-reassign.title" msgstr "Zanim opuścisz" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Opuść zespół" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Czy na pewno chcesz opuścić ten zespół?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Opusczanie zespołu" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Ilość przesunięcia" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Przeniesienie własności" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Jeśli przeniesiesz własność, zmienisz swoją rolę na administratora, tracąc " "niektóre uprawnienia w tym zespole. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Jesteś obecnym właścicielem tego zespołu. Czy na pewno chcesz, aby %s " "został nowym właścicielem zespołu?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Nowy właściciel zespołu" @@ -2052,29 +2054,29 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Aktualizuj komponenty w bibliotece współdzielonej" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Aktualizuj" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Anuluj" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Zamierzasz zaktualizować komponent w bibliotece współdzielonej. Może to " "wpłynąć na inne pliki, które z niego korzystają." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Zaktualizuj komponent w bibliotece współdzielonej" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Zaproszenie wysłane pomyślnie" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Link do zaproszenia został skopiowany" @@ -2198,7 +2200,7 @@ msgstr "" "Pamiętaj, aby uwzględnić wszystkich. Deweloperzy, projektanci, " "managerowie... różnorodność się sumuje :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Zaproś z rolą:" @@ -2266,541 +2268,541 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Przejdź do logowania" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Mieszane" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Podstawy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Kokpit" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Widz" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Obszar roboczy" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Wyrównanie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Edytuj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Ogólny" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Ogólny" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu główne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modyfikuj warstwy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Nawigacja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Nawigacja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Nawigacja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panele" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Ścieżki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Kształty" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Narzędzia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Przybliżenie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Przybliżenie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Komentarze" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Dodaj węzeł" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Wyrównaj do dołu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Wyrównaj do środka w poziomie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Wyrównaj do lewej" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Wyrównaj do prawej" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Wyrównaj do góry" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Wyrównaj do środka w pionie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Utwórz obszar kompozycji z wybranych" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Różnica logiczna" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Wykluczenie logiczne" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Logiczny punkt przecięcia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Związek logiczny" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Przesuń na spód" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Przesuń niżej" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Przesuń wyżej" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Przesuń na wierzch" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Wyczyść cofnięcia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopiuj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Stwórz nowy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Wytnij" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Oddal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Usuń" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Usuń węzeł" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Odłącz komponent" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Krzywa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipsa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Obszar kompozycji" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Rysuj ścieżkę" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Ścieżka" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Prostokąt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Tekst" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplikuj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Anuluj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Eksportuj kształty" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Powiększ, aby dopasować wszystko" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Obróć poziomo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Obróć pionowo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Idź do szkiców" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Idź do bibliotek współdzielonych" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Szukaj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Grupa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Rozłóż w poziomie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Pokaż/ukryj UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Przybliż" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Wstaw obraz" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Połącz węzły" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Zrób narożnik" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Zrób krzywą" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maska" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Scal węzły" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Przesuń" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Szybko w dół" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Szybko w lewo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Szybko w prawo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Szybko w górę" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Przesuń węzeł" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "W dół" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "W lewo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "W prawo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "W górę" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Następny obszar kompozycji" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Nie znaleziono skrótów" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Ustaw krycie na 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Ustaw krycie na 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Ustaw krycie na 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Ustaw krycie na 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Ustaw krycie na 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Ustaw krycie na 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Ustaw krycie na 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Ustaw krycie na 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Ustaw krycie na 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Ustaw krycie na 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Próbnik kolorów" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Przejdź do sekcji komentarzy widzów" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Idź do kokpitu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Przejdź do sekcji kontroli widzów" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Idź do sekcji interakcji widza" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Idż do sekcji interakcji widza" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Idż do obszaru roboczego" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " lub " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Wklej" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Poprzedni artboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Ponów" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Resetuj powiększenie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Szukaj skrótów" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Wybierz wszystko" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Oddziel węzły" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Pokaż/ukryj siatkę pikseli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Pokaż/ukryj skróty" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Przyciągaj do węzłów" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Przyciągaj do siatki pikseli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Rozpocznij edycję" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Rozpocznij pomiary" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Zakończ pomiary" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Ustaw miniaturki" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Skróty klawiaturowe" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Przełącz dynamiczne wyrównanie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Przełącz zasoby" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Przełącz paletę kolorów" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Przełącz tryb skupienia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Przełącz tryb pełnoekranowy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Przełącz historię" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Przełącz warstwy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Dodaj/usuń flex układu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Zablokuj wybrane" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Zablokuj proporcje" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Przełącz paletę tekstu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Przełącz sposób powiększania" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Cofnij" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Rozgrupuj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Usuń maskę" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Rozłóż w pionie" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Przybliż wybrane" @@ -2848,19 +2850,19 @@ msgstr "Hasło - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Zaproszenia - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Członkowie - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Ustawienia - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooki - %s - Penpot" @@ -2932,39 +2934,39 @@ msgstr "Pokaż interakcje po kliknięciu" msgid "viewer.header.sitemap" msgstr "Mapa strony" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Ostatnia wysyłka przebiegła pomyślnie." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Wyrównaj do środka w poziomie (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Rozłóż odstępy w poziomie (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Wyrównaj do lewej (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Wyrównaj do prawej (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Wyrównaj do dołu (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Wyrównaj do środka w pionie (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Rozłóż odstępy w pionie (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Wyrównaj do góry (%s)" @@ -2973,37 +2975,37 @@ msgstr "Wyrównaj do góry (%s)" msgid "workspace.assets.assets" msgstr "Zasoby" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Wszystkie zasoby" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Kolory" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Komponenty" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Utwórz grupę" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Twoje elementy zostaną automatycznie nazwane jako „nazwa grupy / nazwa " "elementu”" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Usuń" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplikuj" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Edytuj" @@ -3012,15 +3014,15 @@ msgstr "Edytuj" msgid "workspace.assets.graphics" msgstr "Grafika" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Grupa" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nazwa grupy" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "lokalna biblioteka" @@ -3028,15 +3030,15 @@ msgstr "lokalna biblioteka" msgid "workspace.assets.not-found" msgstr "Nie znaleziono zasobów" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Zmień nazwę" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Zmień nazwę grupy" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Szukaj zasobów" @@ -3048,11 +3050,11 @@ msgstr[0] "Wybrano %s element" msgstr[1] "Wybrano %s elementy" msgstr[2] "Wybrano %s elementów" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Typografia" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "" @@ -3077,7 +3079,7 @@ msgstr "Odstępy między literami" msgid "workspace.assets.typography.line-height" msgstr "Wysokość Linii" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -3089,7 +3091,7 @@ msgstr "Style tekstu" msgid "workspace.assets.typography.text-transform" msgstr "Transformacja tekstu" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Rozgrupuj" @@ -3097,7 +3099,7 @@ msgstr "Rozgrupuj" msgid "workspace.focus.focus-mode" msgstr "Tryb skupienia" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Tryb skupienia wyłączony" @@ -3117,7 +3119,7 @@ msgstr "Gradient liniowy" msgid "workspace.gradients.radial" msgstr "Gradient radialny" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Wyłącz wyrównanie dynamiczne" @@ -3126,15 +3128,15 @@ msgstr "Wyłącz wyrównanie dynamiczne" msgid "workspace.header.menu.disable-scale-text" msgstr "Wyłącz skalowanie tekstu" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Wyłącz przyciąganie do prowadnic" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Wyłącz przyciąganie do piksela" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Włącz dynamiczne wyrównanie" @@ -3143,79 +3145,79 @@ msgstr "Włącz dynamiczne wyrównanie" msgid "workspace.header.menu.enable-scale-text" msgstr "Włącz skalowanie tekstu" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Przyciągaj do prowadnic" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Włącz przyciąganie do piksela" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Ukryj nazwy obszarów kompozycji" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Ukryj paletę kolorów" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Ukryj siatkę pikseli" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Ukryj linijki" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Ukryj paletę czcionek" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Edytuj" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Plik" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Pomoc i info" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Ustawienia" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Widok" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Zaznacz wszystko" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Pokaz nazwy obszarów kompozycji" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Pokaż paletę kolorów" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Pokaż siatkę pikseli" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Pokaż linijki" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Pokaż paletę czcionek" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Resetuj" @@ -3236,7 +3238,7 @@ msgstr "Zapisywanie" msgid "workspace.header.unsaved" msgstr "Niezapisane zmiany" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Tryb widoku (%s)" @@ -3248,7 +3250,7 @@ msgstr "Wypełnij — skaluj, aby wypełnić" msgid "workspace.header.zoom-fit" msgstr "Dopasuj — zmniejsz, aby dopasować" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Powiększ, aby dopasować wszystko" @@ -3256,7 +3258,7 @@ msgstr "Powiększ, aby dopasować wszystko" msgid "workspace.header.zoom-full-screen" msgstr "Pełny ekran" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Powiększ wybrane" @@ -3265,10 +3267,6 @@ msgstr "Powiększ wybrane" msgid "workspace.libraries.add" msgstr "Dodaj" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s kolory" - #: src/app/main/ui/workspace/color_palette_ctx_menu.cljs:88, src/app/main/ui/workspace/colorpicker/libraries.cljs:48, src/app/main/ui/workspace/text_palette_ctx_menu.cljs:49 msgid "workspace.libraries.colors.file-library" msgstr "Biblioteka plików" @@ -3287,31 +3285,23 @@ msgstr "Bieżące kolory" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB - Komplementarne" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Zapisz styl koloru" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s komponenty" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Biblioteka plików" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s grafiki" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTEKI W TYM PLIKU" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTEKI" @@ -3320,55 +3310,51 @@ msgstr "BIBLIOTEKI" msgid "workspace.libraries.library" msgstr "BIBLIOTEKA" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Nie ma Bibliotek Współdzielonych, które wymagają aktualizacji" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Nie znaleziono dopasowań dla “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Przeszukaj Biblioteki Współdzielone" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "BIBLIOTEKI WSPÓŁDZIELONE" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Wiele typografii" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Odlinkuj wszystkie typografie" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s typografie" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Aktualizuj" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "AKTUALIZACJE" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Kliknij przycisk +, aby dodać interakcje." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Rozmycie" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Rozmycie grupowe" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Rozmycie zaznaczenia" @@ -3376,11 +3362,11 @@ msgstr "Rozmycie zaznaczenia" msgid "workspace.options.canvas-background" msgstr "Tło płótna" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Przytnij treść" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Komponent" @@ -3424,7 +3410,7 @@ msgstr "Góra" msgid "workspace.options.constraints.topbottom" msgstr "Góra i dół" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Projektowanie" @@ -3437,14 +3423,14 @@ msgstr "Eksport" msgid "workspace.options.export-multiple" msgstr "Eksportuj zaznaczone" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Eksportuj 1 element" msgstr[1] "Eksportuj %s elementy" msgstr[2] "Eksportuj %s elementów" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Przyrostek" @@ -3452,7 +3438,7 @@ msgstr "Przyrostek" msgid "workspace.options.exporting-complete" msgstr "Eksportowanie zakończone" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Eksportowanie…" @@ -3464,11 +3450,11 @@ msgstr "Eksport nie powiódł się" msgid "workspace.options.exporting-object-slow" msgstr "Eksportowanie niespodziewanie powolne" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Wypełnij" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Dodaj początek flow" @@ -3477,15 +3463,15 @@ msgstr "Dodaj początek flow" msgid "workspace.options.flows.flow-start" msgstr "Początek Flow" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Początek flow" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Auto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Kolumny" @@ -3494,7 +3480,7 @@ msgstr "Kolumny" msgid "workspace.options.grid.grid-title" msgstr "Siatka" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Kolor" @@ -3503,15 +3489,15 @@ msgstr "Kolor" msgid "workspace.options.grid.params.columns" msgstr "Kolumny" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Rowek" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Wysokość" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margines" @@ -3520,7 +3506,7 @@ msgstr "Margines" msgid "workspace.options.grid.params.rows" msgstr "Rzędy" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Ustaw jako domyślne" @@ -3534,143 +3520,143 @@ msgstr "Rozmiar" msgid "workspace.options.grid.params.type" msgstr "Typ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Dół" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Środek" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Lewo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Prawo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Rozciągnij" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Góra" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Użyj domyślnych" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Szerokość" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Rzędy" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Kwadrat" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Wypełnienie grupy" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Obrys grupy" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Wysokość" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Sprawdź" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Akcja" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Po opóźnieniu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animacja" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Rozpłynięcie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Brak" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Pchnięcie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Poślizg" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "auto" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Dodaj nakładkę tła" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Zamknij po kliknięciu na zewnątrz" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Zamknij nakładkę" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Zamknij nakładkę: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Opóźnienie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Miejsce docelowe" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Czas trwania" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Złagodzenie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Złagódź" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Łagodne wejście" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Łagodne wejście wyjście" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Łagodne wyjście" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Liniowy" @@ -3679,47 +3665,47 @@ msgstr "Liniowy" msgid "workspace.options.interaction-in" msgstr "Wejście" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Wejście myszy" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Wyjście myszy" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Nawiguj do" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Nawiguj do: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(nie ustawiono)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Efekt przesunięcia" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Na kliknięcie" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Otwórz nakładkę" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Otwórz nakładkę: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Otwórz URL" @@ -3728,147 +3714,147 @@ msgstr "Otwórz URL" msgid "workspace.options.interaction-out" msgstr "Wyjście" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Dolny środek" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Dolne lewo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Dolne prawo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Środek" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Ręczna" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Górny środek" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Górne lewo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Górne prawo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Pozycja" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Zachowaj pozycję przewijania" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Poprzedni ekran" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Względny do" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "własne" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Przełącz nakładkę" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Przełącz nakładkę: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Wyzwalacz" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Przy najechaniu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Przy naciśnięciu" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interakcje" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Kolor" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Ściemnianie" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Rozjaśnienie" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Ciemniej" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Różnica" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Wykluczenie" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Ostre światło" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Barwa" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Jaśniej" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Jasność" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Mnożenie" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normalny" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Nakładka" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Nasycenie" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Ekran" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Łagodne światło" @@ -3892,19 +3878,19 @@ msgstr "Wybrane warstwy" msgid "workspace.options.layout-item.advanced-ops" msgstr "Zaawansowane opcje" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Maks.Wysokość" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Maks.Szerokość" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.Wysokość" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.Szerokość" @@ -4008,15 +3994,15 @@ msgstr "przestrzeń pomiędzy" msgid "workspace.options.layout.top" msgstr "Góra" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Więcej kolorów" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Więcej kolorów z biblioteki" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Nieprzezroczystość" @@ -4025,27 +4011,27 @@ msgstr "Nieprzezroczystość" msgid "workspace.options.position" msgstr "Pozycja" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototyp" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Promień" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Dolne lewo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Dolne prawo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Górne lewo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Górne prawo" @@ -4057,7 +4043,7 @@ msgstr "Bieżące" msgid "workspace.options.retry" msgstr "Ponów" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Obrót" @@ -4065,29 +4051,29 @@ msgstr "Obrót" msgid "workspace.options.search-font" msgstr "Szukaj czcionki" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Wybierz kształt, obszar roboczy lub grupę, aby przeciągnąć połączenie do " "innego obszaru kompozycji." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Wybrane kolory" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Wypełnienie zaznaczenia" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Obrys zaznaczenia" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Rozmycie" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Kolor cienia" @@ -4099,47 +4085,48 @@ msgstr "Rzuć cień" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Cień wewnętrzny" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Rozłożenie" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Cień" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Cień grupy" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Cień zaznaczenia" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Pokaż przy eksporcie" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Pokaż w trybie przeglądania" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Rozmiar" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Wstępne ustawienia rozmiaru" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Obrys" @@ -4158,15 +4145,15 @@ msgstr "Diamentowy znacznik" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Grot linii" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Brak" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Okrągły" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Kwadratowy" @@ -4180,71 +4167,71 @@ msgstr "Kwadratowy znacznik" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Trójkątny grot" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Kolor obrysu" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Szerokość obrysu" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Środek" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Przerywany" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Kropkowany" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "W środku" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Mieszany" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Na zewnątrz" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Ciągły" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Wyrównaj do dołu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Wyrównaj do środka" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Wyrównaj do góry" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Automatyczna wysokość" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Automatyczna szerokość" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Stały" @@ -4266,35 +4253,35 @@ msgstr "małe litery" msgid "workspace.options.text-options.none" msgstr "Brak" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Przekreślenie (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Wyrównaj do środka" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Wyjustuj" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Wyrównaj do lewej" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Wyrównaj do prawej" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Tekst" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Grupa tekstu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Tekst zaznaczony" @@ -4303,7 +4290,7 @@ msgstr "Tekst zaznaczony" msgid "workspace.options.text-options.titlecase" msgstr "Nazwy własne" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Podkreślenie (%s)" @@ -4312,19 +4299,19 @@ msgstr "Podkreślenie (%s)" msgid "workspace.options.text-options.uppercase" msgstr "DUŻE LITERY" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Użyj przycisku odtwarzania w nagłówku, aby uruchomić widok prototypu." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Szerokość" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Oś X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Oś Y" @@ -4388,7 +4375,7 @@ msgstr "Kopiuj" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Zaznaczone do obszaru kompozycji" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Utwórz komponent" @@ -4396,7 +4383,7 @@ msgstr "Utwórz komponent" msgid "workspace.shape.menu.cut" msgstr "Wytnij" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Usuń" @@ -4404,15 +4391,15 @@ msgstr "Usuń" msgid "workspace.shape.menu.delete-flow-start" msgstr "Usuń początek flow" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Odłącz instancję" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Odłącz instancje" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Różnica" @@ -4424,11 +4411,11 @@ msgstr "Duplikuj" msgid "workspace.shape.menu.edit" msgstr "Edytuj" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Wyklucz" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Spłaszcz" @@ -4461,19 +4448,19 @@ msgstr "Przejdź do głównego pliku komponentu" msgid "workspace.shape.menu.group" msgstr "Grupuj" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Ukryj" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Pokaż/Ukryj UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Przecięcie" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Zablokuj" @@ -4481,7 +4468,7 @@ msgstr "Zablokuj" msgid "workspace.shape.menu.mask" msgstr "Maskuj" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Wklej" @@ -4493,11 +4480,11 @@ msgstr "Ścieżka" msgid "workspace.shape.menu.remove-flex" msgstr "Usuń układ flex" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Zresetuj nadpisania" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Przywróć główny komponent" @@ -4505,15 +4492,15 @@ msgstr "Przywróć główny komponent" msgid "workspace.shape.menu.select-layer" msgstr "Zaznacz warstwę" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Pokaż" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Pokaż w panelu zasobów" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Pokaż główny komponent" @@ -4526,6 +4513,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Ustaw jako miniaturę" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Przekształć w ścieżkę" @@ -4533,11 +4521,11 @@ msgstr "Przekształć w ścieżkę" msgid "workspace.shape.menu.ungroup" msgstr "Rozgrupuj" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Złącz" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Odblokuj" @@ -4550,7 +4538,7 @@ msgstr "Odmaskuj" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Aktualizuj główne komponenty" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Aktualizuj główny komponent" @@ -4562,11 +4550,11 @@ msgstr "Zwiń pasek boczny" msgid "workspace.sidebar.expand" msgstr "Rozwiń pasek boczny" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Historia" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Warstwy" @@ -4606,7 +4594,7 @@ msgstr "Teksty" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Importowane atrybuty SVG" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Strony" @@ -4614,7 +4602,7 @@ msgstr "Strony" msgid "workspace.sitemap" msgstr "Mapa strony" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Zasoby" @@ -4622,7 +4610,7 @@ msgstr "Zasoby" msgid "workspace.toolbar.color-palette" msgstr "Palety kolorów (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Komentarze (%s)" @@ -4812,15 +4800,15 @@ msgstr "Operacja ponad %s" msgid "workspace.undo.title" msgstr "Historia" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Odrzuć" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "W bibliotekach współdzielonych są aktualizacje" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Aktualizuj" diff --git a/frontend/translations/pt.po b/frontend/translations/pt.po index bc2b08673e..b5175a744d 100644 --- a/frontend/translations/pt.po +++ b/frontend/translations/pt.po @@ -179,7 +179,7 @@ msgstr "A solução de código aberto para design e prototipagem." msgid "auth.terms-and-privacy-agreement" msgstr "Concordo com os [termos de serviço](%s) e a [política de privacidade](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Termos de serviço" @@ -206,7 +206,7 @@ msgstr "...branding, ilustrações, materiais de marketing, etc." msgid "comments.mentions.not-found" msgstr "Nenhuma pessoa encontrada para @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publicar" @@ -278,7 +278,7 @@ msgstr "Compartilhar protótipos" msgid "common.share-link.view-all" msgstr "Selecionar tudo" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Despublicar" @@ -401,7 +401,7 @@ msgstr "O token não tem data de expiração" msgid "dashboard.add-file" msgstr "Adicionar arquivo" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Adicionar como Biblioteca Compartilhada" @@ -409,10 +409,10 @@ msgstr "Adicionar como Biblioteca Compartilhada" msgid "dashboard.change-email" msgstr "Alterar e-mail" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copiar)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Criar nova equipe" diff --git a/frontend/translations/pt_BR.po b/frontend/translations/pt_BR.po index a721c1c471..65a92f9aa1 100644 --- a/frontend/translations/pt_BR.po +++ b/frontend/translations/pt_BR.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: Eranot \n" -"Language-Team: Portuguese (Brazil) " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Hugo Figueira \n" +"Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -177,7 +177,7 @@ msgstr "A solução de código aberto para design e prototipação." msgid "auth.terms-and-privacy-agreement" msgstr "Concordo com os [termos de serviço](%s) e as [políticas de privacidade](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Termos de serviço" @@ -204,7 +204,7 @@ msgstr "... marca, ilustrações, materiais de marketing, etc." msgid "comments.mentions.not-found" msgstr "Ninguém encontrado com @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publicar" @@ -276,7 +276,7 @@ msgstr "Compartilhar protótipos" msgid "common.share-link.view-all" msgstr "Selecionar todos" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Cancelar publicação" @@ -399,7 +399,7 @@ msgstr "O token não tem uma data de validade" msgid "dashboard.add-file" msgstr "Adicionar arquivo" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Adicionar a biblioteca compartilhada" @@ -407,31 +407,31 @@ msgstr "Adicionar a biblioteca compartilhada" msgid "dashboard.change-email" msgstr "Alterar e-mail" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copiar)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Criar nova equipe" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Fixar esta versão" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Seu Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Deletar equipe" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Baixar arquivo Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Baixar arquivo padrão (.svg + .json)" @@ -503,7 +503,7 @@ msgstr "Ir para Bibliotecas e modelos" msgid "dashboard.export-binary-multi" msgstr "Baixar %s arquivos Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exportar boards em PDF" @@ -519,7 +519,7 @@ msgstr "Exportar %s arquivos" msgid "dashboard.export-multiple.selected" msgstr "%s de %s elementos selecionados" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportar" @@ -681,11 +681,11 @@ msgstr "Carregando dados para o servidor (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Enviando arquivo: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Convidar pessoas" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Sair da equipe" @@ -697,7 +697,7 @@ msgstr "Bibliotecas e Modelos" msgid "dashboard.libraries-and-templates.explore" msgstr "Explore mais e aprenda como contribuir" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Ocorreu um problema ao importar o modelo. O modelo não foi importado." @@ -729,7 +729,7 @@ msgstr "Mover para outra equipe" msgid "dashboard.new-file" msgstr "+ Novo arquivo" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Novo arquivo" @@ -737,7 +737,7 @@ msgstr "Novo arquivo" msgid "dashboard.new-project" msgstr "+ Novo projeto" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Novo projeto" @@ -745,7 +745,7 @@ msgstr "Novo projeto" msgid "dashboard.no-matches-for" msgstr "Não achamos nada com “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Projetos fixados aparecerão aqui" @@ -761,7 +761,7 @@ msgstr "Seu endereço de e-mail foi verificado com sucesso" msgid "dashboard.notifications.password-saved" msgstr "Senha salva com sucesso!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s membros" @@ -781,7 +781,7 @@ msgstr "Alterar senha" msgid "dashboard.permissions-change.viewer" msgstr "Agora você é um espectador desta equipe." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Fixar/Desafixar" @@ -818,7 +818,7 @@ msgstr "Você não faz mais parte do time \"%s\"." msgid "dashboard.save-settings" msgstr "Salvar configurações" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Pesquisar…" @@ -858,7 +858,7 @@ msgstr "Atualizar configurações" msgid "dashboard.show-all-files" msgstr "Mostrar todos os arquivos" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Histórico de versões" @@ -882,7 +882,7 @@ msgstr[1] "Seus arquivos foram duplicados com sucesso" msgid "dashboard.success-duplicate-project" msgstr "Seu projeto foi duplicado com sucesso" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Seu arquivo foi movido com sucesso" @@ -894,15 +894,15 @@ msgstr "Seus arquivos foram movidos com sucesso" msgid "dashboard.success-move-project" msgstr "Seu projeto foi movido com sucesso" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Informação da equipe" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Membros da equipe" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Projetos da equipe" @@ -922,7 +922,7 @@ msgstr "Resultados da pesquisa" msgid "dashboard.type-something" msgstr "Digite para pesquisar nos resultados" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Cancelar publicação da biblioteca" @@ -930,50 +930,50 @@ msgstr "Cancelar publicação da biblioteca" msgid "dashboard.update-settings" msgstr "Atualizar configurações" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Sem limites para criatividade" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Grátis" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Está ativo" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Quando esse hook é invocado detalhes de eventos vão ser enviados" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Você só pode excluir ou modificar os webhooks criados por você." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Tipo de conteúdo" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Criar webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook criado com sucesso." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhooks são uma forma simples de permitir que outros websites e " "aplicativos sejam notificados quando certos eventos acontecem no Penpot. " "Nós enviaremos uma solicitação POST para todas as URLs que você digite." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Clique em \"Adicionar Webhook\" para adicionar um Webhook." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Nenhum Webhook criado ainda." @@ -993,7 +993,7 @@ msgstr "E-mail" msgid "dashboard.your-name" msgstr "Seu nome" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Seu Penpot" @@ -1009,15 +1009,15 @@ msgstr "Atenção" msgid "ds.component-subtitle" msgstr "Componentes para atualizar:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Permissão" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Cancelar" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1057,7 +1057,7 @@ msgstr "Limite de caracteres excedido" msgid "errors.clipboard-not-implemented" msgstr "Seu navegador não pode fazer esta operação" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "Não é possível remover a definição principal dentro de um caminho filho." @@ -1077,11 +1077,11 @@ msgstr "Você não pode usar seu e-mail como senha" msgid "errors.email-domain-not-allowed" msgstr "Domínio não permitido" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "O e-mail «%s» tem muitos relatórios de devolução permanentes." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "O e-mail «%s» foi denunciado como spam ou devolvido permanentemente." @@ -1096,10 +1096,9 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Recurso '%s' não é suportado." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused +#: src/app/main/ui/workspace/tokens/management/create/form.cljs msgid "errors.field-max-length" -msgstr "Deve conter no máximo 1 caractere." +msgstr "Deve conter no máximo %s caracteres." #, unused msgid "errors.field-min-length" @@ -1121,7 +1120,7 @@ msgstr "" "recursos do arquivo que você está tentando abrir. Migrações para '%s' " "precisam ser aplicadas antes que o arquivo possa ser aberto." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Algo errado aconteceu." @@ -1163,11 +1162,11 @@ msgstr "Este convite pode ter sido cancelado ou expirou." msgid "errors.ldap-disabled" msgstr "Autenticação por LDAP está desativada." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Você atingiu a cota de '%s'. Entre em contato com o suporte." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "O número máximo (%s) de e-mails que podem ser convidados em uma única " @@ -1185,7 +1184,7 @@ msgstr "Parece que o conteúdo da imagem não corresponde a extensão do arquivo msgid "errors.media-type-not-allowed" msgstr "Parece que esta não é uma imagem válida." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "O perfil que você está convidando tem e-mails silenciados (relatos de spam " @@ -1213,7 +1212,7 @@ msgstr "Dados inválidos na área de transferência" msgid "errors.profile-blocked" msgstr "O perfil está bloqueado" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "Seu perfil tem e-mails silenciados (relatos de spam ou altas devoluções)." @@ -1225,33 +1224,33 @@ msgstr "O registro de contas está desativado no momento." msgid "errors.team-feature-mismatch" msgstr "Recurso incompatível '%s' detectado" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Membros insuficientes para deixar a equipe, você provavelmente deseja " "excluí-la." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "O membro que você tentou atribuir não existe." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "O proprietário não pode sair da equipe, você deve reatribuir a função de " "proprietário para outro membro." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Já existe uma definição com o mesmo nome" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "" "Não é possível concluir a remoção, uma definição com o mesmo nome já existe " "no caminho." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Existe uma opção de tema com o mesmo nome" @@ -1271,31 +1270,31 @@ msgstr "Erro de validação" msgid "errors.version-not-supported" msgstr "O arquivo tem um número de versão incompatível" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Erro de conexão, URL não acessível" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "A URL não passa na validação." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "O último envio não foi bem-sucedido." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Erro na validação SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "O tempo se esgotou" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Erro inesperado durante a validação" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Status inesperado %s" @@ -1360,19 +1359,19 @@ msgstr "Um erro ocorreu" msgid "inspect.attributes.blur" msgstr "Desfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Valor" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1380,7 +1379,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Preenchimento" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Baixar imagem original" @@ -1474,77 +1473,80 @@ msgstr "Sólido" msgid "inspect.attributes.stroke.width" msgstr "Largura" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografia" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Família tipográfica" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Tamanho da fonte" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Estilo da fonte" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Peso da fonte" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Espaçamento entre letras" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Altura da linha" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Decoração de texto" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Nenhum" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Sublinhado" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformação de texto" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Iniciais em maiúsculas" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Minúsculo" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Nenhuma" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Maiúsculo" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Se quiser saber mais sobre inspecionar o design, visite a central de ajuda " "do Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Mais informações sobre inspecionar" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Selecione uma forma, board ou grupo para inspecionar suas propriedades e " @@ -1606,7 +1608,7 @@ msgstr "Texto" msgid "inspect.tabs.info" msgstr "Informação" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Atalhos" @@ -1614,7 +1616,7 @@ msgstr "Atalhos" msgid "labels.accept" msgstr "Aceitar" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Ativo" @@ -1622,11 +1624,11 @@ msgstr "Ativo" msgid "labels.add-custom-font" msgstr "Adicionar fonte personalizada" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Administrador" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Todos" @@ -1649,19 +1651,19 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Erro do servidor (Bad Gateway)" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Cancelar" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Fechar" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Comentários" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Comunidade" @@ -1669,7 +1671,7 @@ msgstr "Comunidade" msgid "labels.confirm-password" msgstr "Confirmar senha" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continuar" @@ -1681,11 +1683,11 @@ msgstr "Continue com" msgid "labels.continue-with-penpot" msgstr "Você pode continuar com uma conta do Penpot" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Copiar link" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Criar" @@ -1705,7 +1707,7 @@ msgstr "Fontes personalizadas" msgid "labels.dashboard" msgstr "Painel" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Excluir" @@ -1717,7 +1719,7 @@ msgstr "Excluir comentário" msgid "labels.delete-comment-thread" msgstr "Excluir tópico" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Excluir convite" @@ -1725,11 +1727,11 @@ msgstr "Excluir convite" msgid "labels.delete-multi-files" msgstr "Excluir %s arquivos" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Rascunhos" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Editar" @@ -1737,15 +1739,15 @@ msgstr "Editar" msgid "labels.edit-file" msgstr "Editar arquivo" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Expirado" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exportar" @@ -1769,15 +1771,15 @@ msgstr "Provedores de fonte" msgid "labels.font-variants" msgstr "Estilos" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fontes" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repositório do Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Enviar feedback" @@ -1785,15 +1787,15 @@ msgstr "Enviar feedback" msgid "labels.go-back" msgstr "Voltar" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Central de Ajuda" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Ocultar comentários resolvidos" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inativo" @@ -1811,7 +1813,7 @@ msgstr "" msgid "labels.internal-error.main-message" msgstr "Erro interno" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Convites" @@ -1819,7 +1821,7 @@ msgstr "Convites" msgid "labels.language" msgstr "Linguagem" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Bibliotecas & Modelos" @@ -1827,7 +1829,7 @@ msgstr "Bibliotecas & Modelos" msgid "labels.log-or-sign" msgstr "Entre ou cadastre-se" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Sair" @@ -1835,11 +1837,11 @@ msgstr "Sair" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Membro" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Membros" @@ -1851,15 +1853,15 @@ msgstr "Menção" msgid "labels.new-password" msgstr "Nova senha" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Próximo" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Nada de novo por aqui! Novas notificações de comentários irão aparecer aqui." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Não há convites pendentes." @@ -1876,7 +1878,7 @@ msgstr "Ops!" msgid "labels.notifications" msgstr "Notificações" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 arquivo" @@ -1888,7 +1890,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 tela" msgstr[1] "%s telas" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 projeto" @@ -1907,7 +1909,7 @@ msgstr "Senha antiga" msgid "labels.only-yours" msgstr "Apenas seu" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Opções" @@ -1923,7 +1925,7 @@ msgstr "Outra (específica)" msgid "labels.other-short" msgstr "Outra" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Proprietário" @@ -1931,7 +1933,7 @@ msgstr "Proprietário" msgid "labels.password" msgstr "Senha" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Pendente" @@ -1955,7 +1957,7 @@ msgstr "Gestão de Produtos" msgid "labels.profile" msgstr "Perfil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projetos" @@ -1963,7 +1965,7 @@ msgstr "Projetos" msgid "labels.refresh" msgstr "Recarregar" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Notas de atualização" @@ -1977,11 +1979,11 @@ msgstr "Recarregar arquivo" msgid "labels.remove" msgstr "Remover" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Remover membro" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Renomear" @@ -2009,7 +2011,7 @@ msgstr "nova resposta" msgid "labels.reply.thread" msgstr "Resposta" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Reenviar convite" @@ -2021,15 +2023,15 @@ msgstr "Restaurar" msgid "labels.retry" msgstr "Tentar novamente" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Cargo" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Salvar" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Buscar" @@ -2057,7 +2059,7 @@ msgstr "Estamos em manutenção programada de nossos sistemas." msgid "labels.service-unavailable.main-message" msgstr "Serviço indisponível" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Configurações" @@ -2065,11 +2067,11 @@ msgstr "Configurações" msgid "labels.share-prototype" msgstr "Compartilhar protótipo" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibliotecas" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Mostrar todos os comentários" @@ -2077,15 +2079,15 @@ msgstr "Mostrar todos os comentários" msgid "labels.show-comments-list" msgstr "Mostrar lista de comentários" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Mostrar apenas seus comentários" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutorial" @@ -2113,15 +2115,15 @@ msgstr "Enviar fontes personalizadas" msgid "labels.uploading" msgstr "Enviando…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "SOMENTE VISUALIZAÇÃO" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Visualizador" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2129,11 +2131,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Escrever um novo comentário" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(você)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Sua conta" @@ -2186,19 +2188,19 @@ msgstr "Alterar e-mail" msgid "modals.change-email.title" msgstr "Alterar seu e-mail" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Criar webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Criar webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL do payload" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://exemplo.com.br/postreceive" @@ -2276,11 +2278,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Excluindo fonte" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Tem certeza de que deseja excluir esta página?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Excluir página" @@ -2314,71 +2316,71 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Excluindo arquivo" msgstr[1] "Excluindo arquivos" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Excluir equipe" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Tem certeza de que deseja excluir a equipe? Todos os projetos e arquivos " "associados a essa equipe serão excluídos permanentemente." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Excluindo equipe" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Excluir membro" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Tem certeza de que deseja excluir este membro da equipe?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Excluir membro da equipe" -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Excluir webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Tem certeza que deseja excluir este webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Excluindo webhook" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Editar webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Editar webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Enviar convite" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-mails, separados por vírgulas" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Convide membros para a equipe" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Como você é o único membro desta equipe, a equipe será excluída junto com " "seus projetos e arquivos." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Tem certeza de que deseja sair da equipe %s?" @@ -2404,39 +2406,39 @@ msgstr "Selecione um membro para promover" msgid "modals.leave-and-reassign.title" msgstr "Selecione um membro para promover" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Sair da equipe" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Tem certeza de que deseja sair da equipe?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Saindo da equipe" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Quantidade de deslocamento" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Transferir equipe" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Se você transferir a propriedade, mudará sua função para Admin, perdendo " "algumas permissões sobre essa equipe. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Você é o atual proprietário da equipe. Tem certeza de que deseja promover " "este usuário a proprietário?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Novo proprietário da equipe" @@ -2492,29 +2494,29 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Atualizar componentes em uma biblioteca compartilhada" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Atualizar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Cancelar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Você está prestes a atualizar um componente em uma biblioteca " "compartilhada. Isso pode afetar outros arquivos que a utilizam." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Atualizar componente em uma biblioteca compartilhada" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Convite enviado com sucesso" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Link do convite copiado" @@ -2639,7 +2641,7 @@ msgstr "" "Lembre-se de incluir todos. Desenvolvedores, designers, gerentes... a " "diversidade soma :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Convide com a função:" @@ -2707,541 +2709,541 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Ir para a página de login" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Misto" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Fundamentos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Painel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Espectador" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Espaço de trabalho" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Alinhamento" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Editar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Geral" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Geral" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu principal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modificar camadas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navegação" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navegação" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navegação" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Painéis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Curvas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Ferramentas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Comentários" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Adicionar ponto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Alinhar a base" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Centralizar horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Alinhar a esquerda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Alinhar a direita" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Alinhar ao topo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Centralizar verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Criar tela a partir da seleção" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Subtrair" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Exclusão" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Interseccionar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "União" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Mover ao fundo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Mover para trás" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Mover para a frente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Mover ao topo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Limpar desfazer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copiar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Criar novo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Recortar" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Reduzir zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Apagar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Apagar ponto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Quebrar componente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Tela" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Desenhar caminho" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Caminho" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Retângulo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Texto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplicar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Cancelar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Exportar formas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Ajustar para ver tudo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Refletir horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Refletir verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Ir para rascunhos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Ir para as bibliotecas compartilhadas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Pesquisar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribuir horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Mostrar/ocultar interface" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Mais zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Inserir imagem" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Unir pontos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Arredondar canto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Criar curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Máscara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Unir pontos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Mover" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Mover para baixo rápido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Mover para a esquerda rápido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Mover para a direita rápido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Mover para cima rápido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Mover ponto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Mover para baixo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Mover para a esquerda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Mover para a direita" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Mover para cima" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Próximo quadro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Não foram encontrados atalhos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Definir opacidade para 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Definir opacidade para 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Definir opacidade para 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Definir opacidade para 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Definir opacidade para 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Definir opacidade para 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Definir opacidade para 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Definir opacidade para 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Definir opacidade para 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Definir opacidade para 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Seletor de Cores" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Ir para seção de comentários" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Ir para o dashboard" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Ir para seção de inspeção" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Ir para seção de interação" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Ir para seção de interação" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Ir para o workspace" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " ou " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Colar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Tela anterior" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Refazer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Redefinir zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Procurar nos atalhos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Selecionar todos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Separar pontos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Mostrar/ocultar grade de pixels" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Mostrar/ocultar atalhos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Aderir aos pontos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Ajustar a grade de Pixels" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Começar a editar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Iniciar medição" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Parar medição" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Definir como miniatura" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Atalhos do teclado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Alternar alinhamento dinâmico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Mostrar/Esconder ativos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Mostrar/Esconder paleta de cores" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Entrar/Sair do modo de foco" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Entrar/Sair da tela cheia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Mostrar/Esconder histórico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Mostrar/Esconder camadas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Adicionar/remover Flex Layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Bloquear selecionado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Fixar proporções" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Mostrar/Esconder paleta de tipografias" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Alternar estilo de zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Desfazer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Desagrupar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Retirar máscara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribuir verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Ajustar zoom a seleção" @@ -3289,19 +3291,19 @@ msgstr "Senha - Penpot" msgid "title.settings.profile" msgstr "Perfil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Convites - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Membros - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Configurações - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -3373,39 +3375,39 @@ msgstr "Mostrar interações ao clicar" msgid "viewer.header.sitemap" msgstr "Mapa do site" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "O último envio foi bem-sucedido." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Centralizar horizontalmente (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribuir espaçamento horizontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Alinhar a esquerda (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Alinhar a direita (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Alinhar a base (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Centralizar verticalmente (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribuir espaçamento vertical (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Alinhar ao topo (%s)" @@ -3414,37 +3416,37 @@ msgstr "Alinhar ao topo (%s)" msgid "workspace.assets.assets" msgstr "Ativos" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Todos os ativos" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Cores" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Componentes" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Criar grupo" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Seus itens serão nomeados automaticamente como \"nome do grupo / nome do " "item\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Excluir" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplicar" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Editar" @@ -3453,15 +3455,15 @@ msgstr "Editar" msgid "workspace.assets.graphics" msgstr "Imagens" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nome do grupo" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "biblioteca local" @@ -3469,15 +3471,15 @@ msgstr "biblioteca local" msgid "workspace.assets.not-found" msgstr "Nenhum ativo encontrado" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Renomear" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Renomear grupo" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Procurar nos ativos" @@ -3488,7 +3490,7 @@ msgid_plural "workspace.assets.selected-count" msgstr[0] "%s item selecionado" msgstr[1] "%s itens selecionados" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografias" @@ -3513,7 +3515,7 @@ msgstr "Espaçamento de letra" msgid "workspace.assets.typography.line-height" msgstr "Altura da linha" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -3525,7 +3527,7 @@ msgstr "Estilos de texto" msgid "workspace.assets.typography.text-transform" msgstr "Transformações de texto" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Desagrupar" @@ -3533,7 +3535,7 @@ msgstr "Desagrupar" msgid "workspace.focus.focus-mode" msgstr "Modo de foco" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Foco desligado" @@ -3553,7 +3555,7 @@ msgstr "Gradiente linear" msgid "workspace.gradients.radial" msgstr "Gradiente radial" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Desabilitar alinhamento dinâmico" @@ -3562,15 +3564,15 @@ msgstr "Desabilitar alinhamento dinâmico" msgid "workspace.header.menu.disable-scale-text" msgstr "Desativar escalonamento de texto" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Desativar aderência as réguas" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Desativar aderência a grade de pixels" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Habilitar alinhamento dinâmico" @@ -3579,79 +3581,79 @@ msgstr "Habilitar alinhamento dinâmico" msgid "workspace.header.menu.enable-scale-text" msgstr "Ativar escalonamento de texto" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Aderir as réguas" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Habilitar aderência a grade de pixels" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Esconder nomes das telas" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Esconder paleta de cores" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Ocultar grade de pixels" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Ocultar réguas" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Ocultar paleta de tipografias" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Editar" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Arquivo" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Ajuda e informações" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferências" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Visualizar" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Selecionar tudo" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Mostrar nomes das telas" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Mostrar paleta de cores" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Mostrar grade de pixels" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Mostrar réguas" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Mostrar paleta de tipografias" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Redefinir" @@ -3672,7 +3674,7 @@ msgstr "Salvando" msgid "workspace.header.unsaved" msgstr "Há alterações não salvas" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Ver protótipo (%s)" @@ -3684,7 +3686,7 @@ msgstr "Ajustar até preencher" msgid "workspace.header.zoom-fit" msgstr "Ajustar até encaixar" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Ajustar a janela" @@ -3692,7 +3694,7 @@ msgstr "Ajustar a janela" msgid "workspace.header.zoom-full-screen" msgstr "Tela cheia" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zoom na seleção" @@ -3701,10 +3703,6 @@ msgstr "Zoom na seleção" msgid "workspace.libraries.add" msgstr "Adicionar" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s cores" - #: src/app/main/ui/workspace/color_palette_ctx_menu.cljs:88, src/app/main/ui/workspace/colorpicker/libraries.cljs:48, src/app/main/ui/workspace/text_palette_ctx_menu.cljs:49 msgid "workspace.libraries.colors.file-library" msgstr "Biblioteca do arquivo" @@ -3723,31 +3721,23 @@ msgstr "Cores recentes" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Complementar" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Salvar estilo de cor" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s componentes" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Biblioteca de arquivos" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s imagens" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTECAS NESTE ARQUIVO" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTECAS" @@ -3756,55 +3746,51 @@ msgstr "BIBLIOTECAS" msgid "workspace.libraries.library" msgstr "BIBLIOTECA" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Não há bibliotecas compartilhadas para atualizar" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Não foram encontrados resultados para “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Procurar bibliotecas compartilhadas" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "BIBLIOTECAS COMPARTILHADAS" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Tipografias múltiplas" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Desassociar todas as tipografias" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s tipografias" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Atualizar" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ATUALIZAÇÔES" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Clique no botão + para adicionar interações." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Desfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Desfoque do grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Desfoque da seleção" @@ -3812,11 +3798,11 @@ msgstr "Desfoque da seleção" msgid "workspace.options.canvas-background" msgstr "Fundo da tela" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Cortar conteúdo" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Componente" @@ -3860,7 +3846,7 @@ msgstr "Cima" msgid "workspace.options.constraints.topbottom" msgstr "Cima e Baixo" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" @@ -3873,7 +3859,7 @@ msgstr "Exportar" msgid "workspace.options.export-multiple" msgstr "Exportar seleção" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Sufixo" @@ -3881,7 +3867,7 @@ msgstr "Sufixo" msgid "workspace.options.exporting-complete" msgstr "Exportação completa" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exportando…" @@ -3893,11 +3879,11 @@ msgstr "Exportação falhou" msgid "workspace.options.exporting-object-slow" msgstr "A exportação está inesperadamente lenta" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Preenchimento" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Adicionar entrada de fluxo" @@ -3906,15 +3892,15 @@ msgstr "Adicionar entrada de fluxo" msgid "workspace.options.flows.flow-start" msgstr "Início do fluxo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Início de fluxo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automático" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Colunas" @@ -3923,7 +3909,7 @@ msgstr "Colunas" msgid "workspace.options.grid.grid-title" msgstr "Grade" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Cor" @@ -3932,15 +3918,15 @@ msgstr "Cor" msgid "workspace.options.grid.params.columns" msgstr "Colunas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Espaçamento" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Altura" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margem" @@ -3949,7 +3935,7 @@ msgstr "Margem" msgid "workspace.options.grid.params.rows" msgstr "Linhas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Definir como padrão" @@ -3963,143 +3949,143 @@ msgstr "Tamanho" msgid "workspace.options.grid.params.type" msgstr "Tipo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Inferior" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Esquerda" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Direita" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Esticar" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Superior" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Usar padrão" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Largura" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Linhas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Quadrado" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Preenchimento do grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Traçado do grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Altura" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspecionar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Ação" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Após um tempo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animação" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Dissolver" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Nenhuma" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Empurrar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Deslizar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "automático" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Adicionar um fundo na sobreposição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Fechar quando clicar no fundo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Fechar sobreposição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Fechar sobreposição: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Delay" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destino" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Duração" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Atenuação" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linear" @@ -4108,47 +4094,47 @@ msgstr "Linear" msgid "workspace.options.interaction-in" msgstr "Entrando" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Mouse entra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Mouse sai" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navegar para" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navegar para: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(não especificado)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Efeito de offset" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Ao clicar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Abrir sobreposição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Abrir sobreposição: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Abrir URL" @@ -4157,147 +4143,147 @@ msgstr "Abrir URL" msgid "workspace.options.interaction-out" msgstr "Saindo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Centro inferior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Inferior esquerdo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Inferior direito" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manual" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Superior (no meio)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Superior (a esquerda)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Superior (a direita)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Posição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Preservar posição da rolagem (scroll)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Tela anterior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relativo a" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "Si próprio" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Alternar sobreposição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Alternar sobreposição: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Ativador" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Durante o hover" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Enquanto clica" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interações" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Cor" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Queimar cor" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Subexposição de cores" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Escurecer" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Diferença" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Exclusão" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Luz direta" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Matiz" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Clarear" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminusidade" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiplicação" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Sobreposição" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturação" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Tela" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Luz difusa" @@ -4321,19 +4307,19 @@ msgstr "Camadas selecionadas" msgid "workspace.options.layout-item.advanced-ops" msgstr "Opções avançadas" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Altura Máx." -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Largura Máx." -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Altura Min." -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Altura Min." @@ -4437,15 +4423,15 @@ msgstr "espaçar dentro" msgid "workspace.options.layout.top" msgstr "Topo" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Mais cores" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Mais cores da biblioteca" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacidade" @@ -4454,27 +4440,27 @@ msgstr "Opacidade" msgid "workspace.options.position" msgstr "Posição" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Protótipo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Raio" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Inferior esquerdo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Inferior direito" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Superior (a esquerda)" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Superior (a direita)" @@ -4486,7 +4472,7 @@ msgstr "Recente" msgid "workspace.options.retry" msgstr "Repetir" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotação" @@ -4494,29 +4480,29 @@ msgstr "Rotação" msgid "workspace.options.search-font" msgstr "Procurar fonte" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Selecione uma forma, tela ou grupo para arrastar uma conexão para outra " "tela." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Cores selecionadas" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Preenchimento da seleção" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Selecionar traçado" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Desfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Cor da sombra" @@ -4528,47 +4514,48 @@ msgstr "Sombra projetada" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Sombra interna" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Alcance" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Sombra" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Sombra do grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Sombras da seleção" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Mostrar nas exportações" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Mostrar no modo protótipo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Tamanho" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Padrões de tamanho" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Traçado" @@ -4587,15 +4574,15 @@ msgstr "Ponta de losango" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Seta de linha" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Nenhum" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Redonda" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Quadrada" @@ -4609,71 +4596,71 @@ msgstr "Ponta de quadrado" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Seta triangular" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Cor do traçado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Largura do traçado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Tracejada" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Pontilhada" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Dentro" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Misturado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Fora" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Sólido" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Alinhar a base" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Alinhar no meio" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Alinhar ao topo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "Esquerda para a direita" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "Direita para a esquerda" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Altura automática" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Largura automática" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fixo" @@ -4695,35 +4682,35 @@ msgstr "Minúsculo" msgid "workspace.options.text-options.none" msgstr "Nenhum" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Rasurado (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Alinhar ao centro" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Justificar" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Alinhar a esquerda" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Alinhar a direita" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Texto" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Texto do grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Texto de seleção" @@ -4732,7 +4719,7 @@ msgstr "Texto de seleção" msgid "workspace.options.text-options.titlecase" msgstr "Iniciais maiúsculas" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Sublinhado (%s)" @@ -4741,19 +4728,19 @@ msgstr "Sublinhado (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Maiúsculo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Use o botão play no cabeçalho para visualizar o protótipo." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Largura" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "eixo X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "eixo Y" @@ -4817,7 +4804,7 @@ msgstr "Copiar" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Agrupar em uma tela" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Criar componente" @@ -4825,7 +4812,7 @@ msgstr "Criar componente" msgid "workspace.shape.menu.cut" msgstr "Cortar" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Remover" @@ -4833,15 +4820,15 @@ msgstr "Remover" msgid "workspace.shape.menu.delete-flow-start" msgstr "Remover início de fluxo" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Quebrar instância" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Quebrar instâncias" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Diferença" @@ -4853,11 +4840,11 @@ msgstr "Duplicar" msgid "workspace.shape.menu.edit" msgstr "Editar" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Excluir" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Achatar" @@ -4890,19 +4877,19 @@ msgstr "Ir para o arquivo do componente principal" msgid "workspace.shape.menu.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Esconder" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Mostrar/ocultar Interface" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Interseção" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Bloquear" @@ -4910,7 +4897,7 @@ msgstr "Bloquear" msgid "workspace.shape.menu.mask" msgstr "Máscara" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Colar" @@ -4922,11 +4909,11 @@ msgstr "Caminho" msgid "workspace.shape.menu.remove-flex" msgstr "Excluir Flex Layout" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Redefinir substituições" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Restaurar componente principal" @@ -4934,15 +4921,15 @@ msgstr "Restaurar componente principal" msgid "workspace.shape.menu.select-layer" msgstr "Selecionar camada" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Mostrar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Mostrar no painel de ativos" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Mostrar componente principal" @@ -4955,6 +4942,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Definir como miniatura" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformar em caminho" @@ -4962,11 +4950,11 @@ msgstr "Transformar em caminho" msgid "workspace.shape.menu.ungroup" msgstr "Desagrupar" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Unir" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Desbloquear" @@ -4979,7 +4967,7 @@ msgstr "Remover máscara" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Atualizar componentes principais" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Atualizar o componente principal" @@ -4991,11 +4979,11 @@ msgstr "Recolher a barra lateral" msgid "workspace.sidebar.expand" msgstr "Expandir a barra lateral" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Histórico" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Camadas" @@ -5035,11 +5023,11 @@ msgstr "Textos" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Atributos SVG importados" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Páginas" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Adicionar página" @@ -5047,7 +5035,7 @@ msgstr "Adicionar página" msgid "workspace.sitemap" msgstr "Mapa do site" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Voltar a listagem de temas" @@ -5055,15 +5043,15 @@ msgstr "Voltar a listagem de temas" msgid "workspace.tokens.create-new-theme" msgstr "Crie seu primeiro tema agora." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Criar um." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Criar novo token %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Remover token" @@ -5071,11 +5059,11 @@ msgstr "Remover token" msgid "workspace.tokens.delete-theme-title" msgstr "Remover tema" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Duplicar token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Editar token" @@ -5088,16 +5076,16 @@ msgstr "O conjunto de tokens ainda não é suportado." msgid "workspace.tokens.theme-name" msgstr "Tema %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Descrição" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Nome" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Valor" @@ -5105,19 +5093,19 @@ msgstr "Valor" msgid "workspace.tokens.tokens-section-title" msgstr "" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Ferramentas" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "O valor não é válido" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "Renomear este token quebrará quaisquer referência para o nome antigo." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Ativos" @@ -5125,7 +5113,7 @@ msgstr "Ativos" msgid "workspace.toolbar.color-palette" msgstr "Paleta de cores (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Comentários (%s)" @@ -5315,19 +5303,19 @@ msgstr "Operação em %s" msgid "workspace.undo.title" msgstr "Histórico" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Dispensar" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Mais informações" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Existem atualizações nas bibliotecas compartilhadas" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Atualizar" diff --git a/frontend/translations/pt_PT.po b/frontend/translations/pt_PT.po index 0260f16726..c7bb9c395b 100644 --- a/frontend/translations/pt_PT.po +++ b/frontend/translations/pt_PT.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: TheScientistPT \n" -"Language-Team: Portuguese (Portugal) " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Dário \n" +"Language-Team: Portuguese (Portugal) \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -177,7 +177,7 @@ msgstr "A solução de código aberto para design e prototipagem." msgid "auth.terms-and-privacy-agreement" msgstr "Aceito os [termos de serviço](%s) e a [política de privacidade](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Termos de serviço" @@ -200,7 +200,7 @@ msgstr "Email profissional" msgid "branding-illustrations-marketing-pieces" msgstr "...branding, ilustrações, artigos de marketing, etc." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publicar" @@ -272,7 +272,7 @@ msgstr "Partilha protótipos" msgid "common.share-link.view-all" msgstr "Seleciona tudo" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Cancelar publicação" @@ -395,7 +395,7 @@ msgstr "O token não tem data de expiração" msgid "dashboard.add-file" msgstr "Adicionar ficheiro" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Adicionar como biblioteca partilhada" @@ -403,31 +403,31 @@ msgstr "Adicionar como biblioteca partilhada" msgid "dashboard.change-email" msgstr "Alterar e-mail" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copiar)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "+ Criar nova equipa" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Afixar esta versão" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "O teu Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Eliminar equipa" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Descarregar ficheiro Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Descarregar ficheiro standard (svg + json)" @@ -499,7 +499,7 @@ msgstr "Começa a criar coisas incríveis" msgid "dashboard.export-binary-multi" msgstr "Descarrega %s ficheiros Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exportar pranchetas para PDF" @@ -515,7 +515,7 @@ msgstr "Exportar %s ficheiros Penpot" msgid "dashboard.export-multiple.selected" msgstr "%s de %s elementos selecionados" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportar" @@ -698,11 +698,11 @@ msgstr "A carregar dados para o servidor (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "A carregar ficheiro: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Convidar para a equipa" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Sair da equipa" @@ -710,7 +710,7 @@ msgstr "Sair da equipa" msgid "dashboard.libraries-and-templates" msgstr "Bibliotecas e Templates" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "" "Aqui estão algumas Bibliotecas e templates que podes adicionar ao teu " @@ -720,7 +720,7 @@ msgstr "" msgid "dashboard.libraries-and-templates.explore" msgstr "Explora mais e sabe como contribuir" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "" "Ocorreu um problema com a importação do template. O template não foi " @@ -758,7 +758,7 @@ msgstr "Mover para outra equipa" msgid "dashboard.new-file" msgstr "+ Novo Ficheiro" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Novo Ficheiro" @@ -766,7 +766,7 @@ msgstr "Novo Ficheiro" msgid "dashboard.new-project" msgstr "+ Novo projeto" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Novo Projeto" @@ -774,11 +774,11 @@ msgstr "Novo Projeto" msgid "dashboard.no-matches-for" msgstr "Não há resultados para \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Projetos afixados aparecerão aqui" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Notificações" @@ -790,7 +790,7 @@ msgstr "O teu endereço de e-mail foi atualizado com sucesso" msgid "dashboard.notifications.email-verified-successfully" msgstr "O teu endereço de e-mail foi verificado com sucesso" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Definições de notificação atualizadas" @@ -798,11 +798,11 @@ msgstr "Definições de notificação atualizadas" msgid "dashboard.notifications.password-saved" msgstr "Palavra-passe guardada com sucesso!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Ver notificações" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s membros" @@ -830,7 +830,7 @@ msgstr "Passaste a ser editor(a) nesta equipa." msgid "dashboard.permissions-change.owner" msgstr "Passaste a ser dono(a) nesta equipa." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Afixar/Desafixar" @@ -867,7 +867,7 @@ msgstr "Já não pertences à equipa “%s“." msgid "dashboard.save-settings" msgstr "Guardar definições" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Pesquisar…" @@ -939,7 +939,7 @@ msgstr "Notificações" msgid "dashboard.show-all-files" msgstr "Mostrar todos os ficheiros" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Histórico de versões" @@ -963,7 +963,7 @@ msgstr[1] "Os teus ficheiros foram duplicados com sucesso" msgid "dashboard.success-duplicate-project" msgstr "O teu projeto foi duplicado com sucesso" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "O teu ficheiro foi movido com sucesso" @@ -975,15 +975,15 @@ msgstr "Os teus ficheiros foram movidos com sucesso" msgid "dashboard.success-move-project" msgstr "O teu projeto foi movido com sucesso" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Informação da equipa" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Membros da equipa" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Projetos da equipa" @@ -1003,7 +1003,7 @@ msgstr "Resultados da pesquisa" msgid "dashboard.type-something" msgstr "Escreve para pesquisar resultados" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Cancelar publicação da Biblioteca" @@ -1011,50 +1011,50 @@ msgstr "Cancelar publicação da Biblioteca" msgid "dashboard.update-settings" msgstr "Atualizar definições" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Criatividade sem limites" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Gratuito" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Ativo" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Quando este webhook for ativado serão enviados detalhes do evento" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Só podes apagar ou modificar webhooks que criaste." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Tipo de conteúdo" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Criar webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook criado com sucesso." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Os webhooks são uma forma simples de permitir a outros sites e aplicações " "serem notificados quando acontecem certas ações no Penpot. Enviaremos um " "pedido POST para cada um dos URLs que forneceres." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Clica no botão \"Criar webhook\" para adicionar um." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Ainda não há nenhum webhook criado." @@ -1074,7 +1074,7 @@ msgstr "E-mail" msgid "dashboard.your-name" msgstr "O teu nome" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "O teu Penpot" @@ -1090,15 +1090,15 @@ msgstr "Atenção" msgid "ds.component-subtitle" msgstr "Componentes para atualizar:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Permitir" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Cancelar" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1154,11 +1154,11 @@ msgstr "Não podes utilizar o teu e-mail como palavra-passe" msgid "errors.email-domain-not-allowed" msgstr "Domínio não permitido" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "O e-mail «%s» tem muitos relatórios de rejeição permanentes." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "O e-mail «%s» foi denunciado como spam ou devolvido permanentemente." @@ -1183,7 +1183,7 @@ msgstr "" "funcionalidades do ficheiro que estás a tentar abrir. Será necessário " "aplicar migrações para '%s' antes de poder abrir o ficheiro." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Ocorreu algo inesperado." @@ -1225,7 +1225,7 @@ msgstr "Este convite pode ter sido cancelado ou expirado." msgid "errors.ldap-disabled" msgstr "Autenticação LDAP está desativada." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Alcançou o máximo da quota '%s'. Contacte o suporte técnico." @@ -1241,7 +1241,7 @@ msgstr "Parece que o conteúdo da imagem não corresponde à extensão do fichei msgid "errors.media-type-not-allowed" msgstr "Parece que esta não é uma imagem válida." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "O perfil que estás a convidar tem e-mails silenciados (relatórios de spam " @@ -1269,7 +1269,7 @@ msgstr "Dados inválidos na área de transferência" msgid "errors.profile-blocked" msgstr "O perfil está bloqueado" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "O teu perfil tem e-mails silenciados (relatórios de spam ou devoluções " @@ -1283,15 +1283,15 @@ msgstr "A criação de contas está atualmente desativada." msgid "errors.team-feature-mismatch" msgstr "Funcionalidade incompatível '%s' detetada" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "Membros insuficientes para deixar a equipa, provavelmente queres eliminá-la." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "O membro que tentas atribuir não existe." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "O proprietário não pode sair da equipa, deverás retribuir a função de " @@ -1313,31 +1313,31 @@ msgstr "Erro de validação" msgid "errors.version-not-supported" msgstr "O ficheiro tem um número de versão incompatível" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Erro de conexão, não foi possível alcançar o URL" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "O URL não passou na validação." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Último envio sem sucesso." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Erro na validação SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Timeout" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Erro inesperado ao validar" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Estado inesperado %s" @@ -1402,19 +1402,19 @@ msgstr "Ocorreu um erro" msgid "inspect.attributes.blur" msgstr "Desfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Valor" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1422,7 +1422,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Preencher" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Descarregar imagem original" @@ -1516,79 +1516,82 @@ msgstr "Sólido" msgid "inspect.attributes.stroke.width" msgstr "Largura" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografia" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Família da Fonte" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Tamanho da Fonte" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Estilo da Fonte" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Espessura da fonte" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Espaço entre caracteres" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Altura da Linha" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Decoração de Texto" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Nenhum" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Sublinhado" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformação de Texto" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Capitalização de Título" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Minúsculas" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Nenhum" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Sem atribuição" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Maiúsculas" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "Se quiseres saber mais sobre a inspeção, visita o centro de ajuda do Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Mais informações sobre a inspeção" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Seleciona uma forma, prancheta, ou grupo para inspecionar os seus atributos " @@ -1654,11 +1657,11 @@ msgstr "Texto" msgid "inspect.tabs.info" msgstr "Informação" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Marcar todas como lidas" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Atalhos" @@ -1670,11 +1673,11 @@ msgstr "Aceitar" msgid "labels.access-tokens" msgstr "Tokens de acesso" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Ativo" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Adicionar" @@ -1682,11 +1685,11 @@ msgstr "Adicionar" msgid "labels.add-custom-font" msgstr "Adicionar fonte personalizada" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "A adicionar..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Administração" @@ -1694,7 +1697,7 @@ msgstr "Administração" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Todos" @@ -1717,7 +1720,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Error de Servidor (Bad Gateway)" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Cancelar" @@ -1725,11 +1728,11 @@ msgstr "Cancelar" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Fechar" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Colapsar" @@ -1741,11 +1744,11 @@ msgstr "Comentário" msgid "labels.comment.mark-as-solved" msgstr "Marcar como resolvido" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Comentários" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Comunidade" @@ -1753,7 +1756,7 @@ msgstr "Comunidade" msgid "labels.confirm-password" msgstr "Confirmar palavra-passe" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continuar" @@ -1765,11 +1768,11 @@ msgstr "Continuar com" msgid "labels.continue-with-penpot" msgstr "Podes continuar com uma conta Penpot" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Copiar cor" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Copiar link" @@ -1777,7 +1780,7 @@ msgstr "Copiar link" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Criar" @@ -1797,7 +1800,7 @@ msgstr "Fonte personalizada" msgid "labels.dashboard" msgstr "Painel" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Eliminar" @@ -1809,7 +1812,7 @@ msgstr "Eliminar comentário" msgid "labels.delete-comment-thread" msgstr "Eliminar tópico" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Eliminar convite" @@ -1826,15 +1829,15 @@ msgstr "Desenvolvimento" msgid "labels.director" msgstr "Diretor" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Descartar" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Rascunhos" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Editar" @@ -1842,7 +1845,7 @@ msgstr "Editar" msgid "labels.edit-file" msgstr "Editar ficheiro" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" @@ -1851,11 +1854,11 @@ msgstr "Editor" msgid "labels.event" msgstr "Evento" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Expirado" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exportar" @@ -1883,7 +1886,7 @@ msgstr "Provedores de fontes" msgid "labels.font-variants" msgstr "Variantes" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fontes" @@ -1897,11 +1900,11 @@ msgstr "CEO ou Fundador" msgid "labels.freelancer" msgstr "Sou trabalhador(a) independente (freelancer)" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repositório Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Dá feedback" @@ -1913,7 +1916,7 @@ msgstr "Voltar atrás" msgid "labels.graphic-design" msgstr "Design gráfico" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Centro de Ajuda" @@ -1921,15 +1924,15 @@ msgstr "Centro de Ajuda" msgid "labels.hide" msgstr "Ocultar" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Ocultar comentários resolvidos" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Importar" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inativo" @@ -1951,7 +1954,7 @@ msgstr "Erro interno" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Convites" @@ -1959,7 +1962,7 @@ msgstr "Convites" msgid "labels.language" msgstr "Idioma" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Bibliotecas e Templates" @@ -1975,7 +1978,7 @@ msgstr "Iniciar sessão ou registar" msgid "labels.login" msgstr "Iniciar sessão" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Terminar sessão" @@ -1983,11 +1986,11 @@ msgstr "Terminar sessão" msgid "labels.marketing" msgstr "Marketing" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Membro" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Membros" @@ -1995,15 +1998,15 @@ msgstr "Membros" msgid "labels.new-password" msgstr "Palavra-passe nova" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Seguinte" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Não tens notificações de comentários pendentes." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Não há convites." @@ -2020,7 +2023,7 @@ msgstr "Ups!" msgid "labels.notifications" msgstr "Notificações" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 ficheiro" @@ -2032,7 +2035,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 prancheta" msgstr[1] "%s pranchetas" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 projeto" @@ -2051,7 +2054,7 @@ msgstr "Palavra-passe antiga" msgid "labels.only-yours" msgstr "Apenas teu" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Opções" @@ -2067,7 +2070,7 @@ msgstr "Outra (especificar)" msgid "labels.other-short" msgstr "Outra" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Proprietário" @@ -2075,7 +2078,7 @@ msgstr "Proprietário" msgid "labels.password" msgstr "Palavra-passe" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Pendente" @@ -2095,11 +2098,11 @@ msgstr "Product Management" msgid "labels.profile" msgstr "Perfil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projetos" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Notas de versões" @@ -2113,11 +2116,11 @@ msgstr "Recarregar ficheiro" msgid "labels.remove" msgstr "Remover" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Remover membro" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Renomear" @@ -2145,7 +2148,7 @@ msgstr "nova resposta" msgid "labels.reply.thread" msgstr "Responder" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Reenviar convite" @@ -2157,15 +2160,15 @@ msgstr "Restaurar" msgid "labels.retry" msgstr "Tentar novamente" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Cargo" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Salvar" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Pesquisar" @@ -2193,7 +2196,7 @@ msgstr "Estamos numa manutenção programada dos nossos sistemas." msgid "labels.service-unavailable.main-message" msgstr "Serviço Indisponível" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Definições" @@ -2205,11 +2208,11 @@ msgstr "Partilhar" msgid "labels.share-prototype" msgstr "Partilhar protótipo" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibliotecas" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Mostrar todos os comentários" @@ -2217,11 +2220,11 @@ msgstr "Mostrar todos os comentários" msgid "labels.show-comments-list" msgstr "Mostrar lista de comentários" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Mostrar apenas as tuas menções" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Mostrar apenas os teus comentários" @@ -2233,7 +2236,7 @@ msgstr "Sketch" msgid "labels.start" msgstr "Começar" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Estado" @@ -2255,11 +2258,11 @@ msgstr "Membro de equipa" msgid "labels.themes" msgstr "Temas" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutoriais" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Erro desconhecido" @@ -2287,15 +2290,15 @@ msgstr "Carregar fontes personalizadas" msgid "labels.uploading" msgstr "Carregando…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Somente leitura" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Visualizador" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2303,11 +2306,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Escrever novo comentário" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(tu)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "A tua conta" @@ -2336,7 +2339,7 @@ msgstr "Cria designs de forma flexível com controlos semelhantes a CSS." #: src/app/main/ui/ds/product/loader.cljs:24 msgid "loader.tips.03.title" -msgstr "Auto Layout como em CSS" +msgstr "Layouts como em CSS" #: src/app/main/ui/ds/product/loader.cljs:27 msgid "loader.tips.04.message" @@ -2392,23 +2395,23 @@ msgstr "Modo Claro/Escuro" msgid "loader.tips.10.title" msgstr "Suporte de Plugins" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Escolher imagem" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Gradiente" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Imagem" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Manter proporções" @@ -2426,7 +2429,7 @@ msgstr "A carregar imagem…" msgid "media.radial" msgstr "Radial" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Sólido" @@ -2502,19 +2505,19 @@ msgstr "Criar token" msgid "modals.create-access-token.title" msgstr "Gerar token de acesso" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Criar webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Criar webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL do payload" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2560,11 +2563,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Eliminar conversa" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Tens a certeza que queres apagar esta nota?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Apagar nota" @@ -2612,11 +2615,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Eliminando fonte" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Tens a certeza de que pretendes eliminar esta página?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Eliminar página" @@ -2662,29 +2665,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Eliminando ficheiro" msgstr[1] "Eliminando ficheiros" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Eliminar equipa" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Tens a certeza de que pretendes eliminar esta equipa? Todos os projetos e " "ficheiros associados com a equipa serão eliminados permanentemente." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Eliminando equipa" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Eliminar membro" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Tens a certeza de que pretendes eliminar este membro da equipa?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Eliminar membro da equipa" @@ -2698,57 +2701,57 @@ msgstr[1] "" "Os recursos que estiverem a ser usados nestes ficheiros continuarão " "presentes (nenhum design será afetado)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Apagar webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Tens a certeza que queres apagar este webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "A apagar webhook" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Editar webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Editar webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Enviar convite" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-mails, separados por vírgulas" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Alguns endereços de email pertencem a membros atuais da equipa. Não serão " "enviados convites para estes endereços." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Podes convidar membros para a equipa para que estes possam ter acesso a " "este ficheiro e todos os ficheiros da equipa." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Convidar membros para a equipa" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Como és o único membro desta equipa, a equipa será eliminado juntamente com " "os projetos e ficheiros." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Tens a certeza de que pretendes sair da equipa %s?" @@ -2776,15 +2779,15 @@ msgstr "Seleciona um membro para promover" msgid "modals.leave-and-reassign.title" msgstr "Antes de saires" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Sair da equipa" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Tens a certeza de que pretendes sair desta equipa?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Saindo da equipa" @@ -2806,39 +2809,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Mover biblioteca" msgstr[1] "Mover bibliotecas" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Montante de deslocamento" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Transferir propriedade" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Se transferires a propriedade, vais alterar a tua função para " "Administrador, perdendo algumas permissões sobre esta equipa. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "És o proprietário atual desta equipa. Tens a certeza de que pretendes " "promover %s a proprietário da equipa?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Novo proprietário de equipa" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publicar" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "A tua biblioteca está vazia. Tens a certeza que queres publicá-la?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Publicar biblioteca vazia" @@ -2894,21 +2897,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Atualizar componentes numa biblioteca partilhada" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Atualizar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Cancelar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Estás prestes a atualizar componentes numa biblioteca partilhada. Pode " "afetar outros ficheiros que o utilizam." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Atualizar componente numa biblioteca partilhada" @@ -2994,11 +2997,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Está disponível uma nova versão, por favor atualiza a página" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Convite enviado com sucesso" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Link de convite copiado" @@ -3150,7 +3153,7 @@ msgstr "" "Lembra-te em incluir todos. Programadores, designers, gestores... " "acrescenta diversidade :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Convidar com a função:" @@ -3370,665 +3373,649 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Ir para login" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Desacoplar" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Misturado" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Remover cor" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Selecionar itens que usem este estilo" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Básicos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Painel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Visualizador" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Área de Trabalho" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Alinhamento" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Editar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Genérico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Genérico" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Menu Principal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modificar camadas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navegação" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navegação" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navegação" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Painéis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Caminhos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Formas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Textos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Ferramentas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Comentários" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Adicionar nó" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Alinhar abaixo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Alinhar ao centro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Alinhar ao centro horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Alinhar justificado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Alinhar à esquerda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Alinhar à direita" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Alinhar topo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Alinhar ao centro verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Criar prancheta a partir da seleção" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Alternar negrito" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Diferença booleana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Exclusão Booleana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Intersecção Booleana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "União Booleana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Enviar para trás" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Mover para trás" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Mover para a frente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Enviar para a frente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Limpar historial" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copiar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Copiar ligação para a área de transferência" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Criar novo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Recortar" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Menos zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Eliminar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Eliminar nó" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Desanexar componente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipse" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Quadro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Desenhar caminho" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Caminho" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rectângulo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Texto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplicar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Cancelar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Exportar formas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Ajustar tudo à janela" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Virar horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Virar verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Decrementar tamanho de fonte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Incrementar tamanho da fonte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Ir para rascunhos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Ir para bibliotecas partilhadas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Pesquisa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Grupo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribuir horizontalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Mostrar/ocultar interface" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Mais zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Inserir imagem" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Alternar itálico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Unir nós" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Decrementar espaçamento de letras" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Incrementar espaçamento de letras" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Decrementar espaçamento entre linhas" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Incrementar espaçamento entre linhas" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Alternar texto rasurado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Fazer canto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Fazer curva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Máscara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Fundir nós" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Mover" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Mover para baixo rápido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Mover para a esquerda rápido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Mover para a direita rápido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Mover para cima rápido" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Mover nó" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Mover para baixo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Mover para a esquerda" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Mover para a direita" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Mover para cima" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Próximo quadro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Nenhum atalho encontrado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Definir opacidade a 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Definir opacidade a 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Definir opacidade a 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Definir opacidade a 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Definir opacidade a 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Definir opacidade a 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Definir opacidade a 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Definir opacidade a 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Definir opacidade a 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Definir opacidade a 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Selector de cores" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Ir para secção de comentários" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Ir para painel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Ir para secção de inspeção" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Ir para secção de interações" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Ir para secção de interações" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Ir para a área de trabalho" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " ou " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Colar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Quadro anterior" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Refazer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Renomear" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Redefinir zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Redimensionar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Pesquisar atalhos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Selecionar tudo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Selecionar camada seguinte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Selecionar camada pai" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Selecionar camada anterior" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Separar nós" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Mostrar/ocultar grade de píxeis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Mostrar/ocultar atalhos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Ajustar aos nós" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Ajustar à grade de píxeis" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Iniciar edição" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Iniciar medição" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Parar medição" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Definir imagem destaque" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Atalhos do teclado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Alternar alinhamento dinâmico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Alternar recursos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Alternar selector de cores" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Alternar modo de foco" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Alternar tela cheia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Mostrar / Ocultar guias" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Alternar histórico" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Alternar camadas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Adicionar / Remover layout flex" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Adicionar/remover layout em grelha" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Bloquear selecionado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Bloquear proporções" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Mostrar / Ocultar réguas" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Ajustar às guias" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Ajustar às guias de régua" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Alternar paleta de texto" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Mudar tema" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Mostrar / Ocultar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Alternar estilo de zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Alternar sublinhado" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Desfazer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Desagrupar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Retirar máscara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribuir verticalmente" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Reduzir zoom na lupa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Aumentar zoom na lupa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zoom para selecionados" @@ -4084,19 +4071,19 @@ msgstr "Palavra-passe - Penpot" msgid "title.settings.profile" msgstr "Perfil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Convites - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Membros - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Definições - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -4168,43 +4155,43 @@ msgstr "Mostrar interações com click" msgid "viewer.header.sitemap" msgstr "Mapa do site" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Último envio com sucesso." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Alinhar horizontal ao centro (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribuir espaçamento horizontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Alinhar à esquerda (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Alinhar à direita (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Alinhar abaixo (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Alinhar ao centro verticalmente (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribuir espaçamento vertical (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Alinhar ao topo (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Adicionar biblioteca" @@ -4213,19 +4200,19 @@ msgstr "Adicionar biblioteca" msgid "workspace.assets.assets" msgstr "Recursos" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Todos os recursos" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Cores" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Adicionar cor" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Componentes" @@ -4233,21 +4220,21 @@ msgstr "Componentes" msgid "workspace.assets.components.add-component" msgstr "Adicionar componente" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Criar grupo" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Os teus itens serão nomeados automaticamente como \"nome do grupo / nome do " "item\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Eliminar" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplicar" @@ -4255,11 +4242,11 @@ msgstr "Duplicar" msgid "workspace.assets.duplicate-main" msgstr "Duplicar principal" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Editar" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filtrar" @@ -4268,15 +4255,15 @@ msgstr "Filtrar" msgid "workspace.assets.graphics" msgstr "Gráficos" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nome do grupo" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "biblioteca local" @@ -4288,15 +4275,15 @@ msgstr "Recursos não encontrados" msgid "workspace.assets.open-library" msgstr "Abrir ficheiro de biblioteca" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Renomear" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Renomear grupo" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Pesquisar recursos" @@ -4312,21 +4299,21 @@ msgstr[1] "%s itens selecionados" msgid "workspace.assets.shared-library" msgstr "Biblioteca partilhada" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 componente" msgstr[1] "%s componentes" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Ordenar" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografias" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Adicionar tipografia" @@ -4351,7 +4338,7 @@ msgstr "Espaço entre letras" msgid "workspace.assets.typography.line-height" msgstr "Altura da Linha" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4363,59 +4350,59 @@ msgstr "Estilos de texto" msgid "workspace.assets.typography.text-transform" msgstr "Transformar Texto" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Desagrupar" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Criar área" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Criar prancheta" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Unir células" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Adicionar 1 coluna à direita" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Adicionar 1 coluna à esquerda" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Eliminar coluna" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Apagar coluna e conteúdos" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Duplicar coluna" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Adicionar 1 fila abaixo" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Adicionar 1 fila acima" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Apagar fila" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Apagar fila e conteúdos" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Duplicar fila" @@ -4423,7 +4410,7 @@ msgstr "Duplicar fila" msgid "workspace.focus.focus-mode" msgstr "Modo de foco" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Foco desativado" @@ -4443,11 +4430,11 @@ msgstr "Gradiente linear" msgid "workspace.gradients.radial" msgstr "Gradiente radial" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Desativar alinhamento dinâmico" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Desativar escala proporcional" @@ -4456,23 +4443,23 @@ msgstr "Desativar escala proporcional" msgid "workspace.header.menu.disable-scale-text" msgstr "Desativar escala de texto" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Desativar ajuste às guias" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Desativar ajuste ao pixel" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Desativar ajuste às guias de régua" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Ativar alinhamento dinâmico" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Ativar escala proporcional" @@ -4481,107 +4468,107 @@ msgstr "Ativar escala proporcional" msgid "workspace.header.menu.enable-scale-text" msgstr "Ativar escalar texto" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Ajustar às guias" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Ativar ajuste ao pixel" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Ajustar às guias de régua" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Ocultar nome das pranchetas" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Ocultar guias" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Ocultar paleta de cor" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Ocultar grade de píxeis" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Ocultar réguas" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Ocultar paleta de texto" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Editar" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Ficheiro" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Ajuda e Informações" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferências" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Visualização" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Refazer" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Selecionar tudo" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Mostrar nomes das pranchetas" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Mostrar guias" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Mostrar paleta de cor" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Mostrar grade de píxeis" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Mostrar réguas" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Mostrar paleta de texto" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Alterar para tema escuro" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Mudar para tema claro" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Desfazer" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Ampliar em 100%" @@ -4597,7 +4584,7 @@ msgstr "Guardado" msgid "workspace.header.saving" msgstr "A salvar" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Partilhar" @@ -4606,11 +4593,11 @@ msgstr "Partilhar" msgid "workspace.header.unsaved" msgstr "Alterações não guardadas" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Modo de visualização (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zoom" @@ -4622,7 +4609,7 @@ msgstr "Ajustar para preencher" msgid "workspace.header.zoom-fit" msgstr "Ajustar para encaixar" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Ajustar para mostrar tudo" @@ -4630,19 +4617,19 @@ msgstr "Ajustar para mostrar tudo" msgid "workspace.header.zoom-full-screen" msgstr "Tela cheia" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Aumentar para seleção" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Editar grelha" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Sair" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Mostrar 4 opções de preenchimento de lados" @@ -4658,7 +4645,7 @@ msgstr "Feito" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Localizar" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Localizar layout em grelha" @@ -4667,10 +4654,6 @@ msgstr "Localizar layout em grelha" msgid "workspace.libraries.add" msgstr "Adicionar" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s cores" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Ainda não existem estilos de cor na tua biblioteca" @@ -4697,31 +4680,23 @@ msgstr "Cores recentes" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Complementar" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Guardar estilo de cor" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s componentes" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Biblioteca de ficheiros" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s gráficos" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTECAS NESTE FICHEIRO" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTECAS" @@ -4730,83 +4705,79 @@ msgstr "BIBLIOTECAS" msgid "workspace.libraries.library" msgstr "BIBLIOTECA" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "ATUALIZAÇÕES DE BIBLIOTECAS" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "A carregar…" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Não há bibliotecas partilhadas que precisem de atualização" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Não há resultados para \"%s\"" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Pesquisar bibliotecas partilhadas" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "BIBLIOTECAS PARTILHADAS" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Conectar biblioteca" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Múltiplas tipografias" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Desassociar todas as tipografias" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s tipografias" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Desconectar biblioteca" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Atualizar" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "ver todas as alterações" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ATUALIZAÇÕES" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Clica no botão + para adicionar interações." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Adicionar desfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Remover desfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Desfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Desfoque de grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Desfoque de seleção" @@ -4814,39 +4785,39 @@ msgstr "Desfoque de seleção" msgid "workspace.options.canvas-background" msgstr "Plano de fundo" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Recorte do conteúdo" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Componente" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Nota" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Cópia" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Criar uma nota" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Editar uma nota" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Principal" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Trocar de componente" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Ainda não existem recursos nesta biblioteca" @@ -4890,7 +4861,7 @@ msgstr "Topo" msgid "workspace.options.constraints.topbottom" msgstr "Topo e Abaixo" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" @@ -4903,17 +4874,17 @@ msgstr "Exportar" msgid "workspace.options.export-multiple" msgstr "Exportar seleção" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Exportar 1 elemento" msgstr[1] "Exportar %s elementos" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Eliminar exportação" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Sufixo" @@ -4921,7 +4892,7 @@ msgstr "Sufixo" msgid "workspace.options.exporting-complete" msgstr "Exportação completa" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "A exportar…" @@ -4933,27 +4904,27 @@ msgstr "A exportação falhou" msgid "workspace.options.exporting-object-slow" msgstr "Exportação inesperadamente lenta" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Preenchimento" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Adicionar cor de preenchimento" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Remover preenchimento" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Redimensionar para ajustar ao conteúdo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Adicionar início de fluxo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Fluxo" @@ -4962,15 +4933,15 @@ msgstr "Fluxo" msgid "workspace.options.flows.flow-start" msgstr "Início de fluxo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Início de fluxo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Automático" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Colunas" @@ -4979,7 +4950,7 @@ msgstr "Colunas" msgid "workspace.options.grid.grid-title" msgstr "Grade" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Cor" @@ -4988,15 +4959,15 @@ msgstr "Cor" msgid "workspace.options.grid.params.columns" msgstr "Colunas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Espaço" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Altura" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margem" @@ -5005,7 +4976,7 @@ msgstr "Margem" msgid "workspace.options.grid.params.rows" msgstr "Linhas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Definir como padrão" @@ -5019,155 +4990,155 @@ msgstr "Tamanho" msgid "workspace.options.grid.params.type" msgstr "Tipo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Abaixo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Esquerda" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Direita" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Esticar" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Topo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Utilizar padrão" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Largura" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Linhas" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Quadrado" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Preenchimento de grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Traço de grupo" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Adicionar guia" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Remover guia" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Guias" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Altura" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspecionar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Ação" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Após atraso" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animação" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Dissolver" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Nenhum" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Empurrar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Deslizar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "Automático" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Adicionar sobreposição de fundo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Fechar ao clicar no exterior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Fechar sobreposição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Fechar sobreposição: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Atraso" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destino" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Duração" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linear" @@ -5176,47 +5147,47 @@ msgstr "Linear" msgid "workspace.options.interaction-in" msgstr "Dentro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Cursor entra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Cursor sai" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navegar para" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navegar para: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(indefinido)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Efeito Offset" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "No Clique" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Abrir sobreposição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Abrir sobreposição: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Abrir url" @@ -5225,87 +5196,87 @@ msgstr "Abrir url" msgid "workspace.options.interaction-out" msgstr "Fora" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Inferior centro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Inferior esquerdo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Inferior direito" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manual" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Superior centro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Superior esquerdo" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Superior direito" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Posição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Preservar posição do scroll" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Ecrã anterior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relativa a" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "auto" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Alternar a sobreposição" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Alternar a sobreposição: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Ativador" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Durante o hover" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Durante a premir" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interações" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Adicionar interação" @@ -5314,67 +5285,67 @@ msgstr "Adicionar interação" msgid "workspace.options.interactions.remove-interaction" msgstr "Remover interação" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Cor" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Superexposição de cor" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Subexposição Linear (Adicionar)" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Escurecer" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Diferença" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Exclusão" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Luz direta" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Matiz" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Clarear" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminosidade" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiplicação" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Sobrepor" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturação" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Tela" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Luz indireta" @@ -5398,19 +5369,19 @@ msgstr "Camadas selecionadas" msgid "workspace.options.layout-item.advanced-ops" msgstr "Opções avançadas" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Altura.Máx" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Largura.Máx" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Altura.Min" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Largura.Min" @@ -5524,15 +5495,15 @@ msgstr "espaço entre" msgid "workspace.options.layout.top" msgstr "Topo" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Mais cores" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Mais bibliotecas de cor" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacidade" @@ -5541,27 +5512,27 @@ msgstr "Opacidade" msgid "workspace.options.position" msgstr "Posição" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Protótipo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Raio" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Inferior esquerdo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Inferior direito" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Superior esquerdo" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Superior direito" @@ -5573,7 +5544,7 @@ msgstr "Recente" msgid "workspace.options.retry" msgstr "Repetir" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotação" @@ -5581,33 +5552,33 @@ msgstr "Rotação" msgid "workspace.options.search-font" msgstr "Pesquisar fonte" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Selecionar a forma, prancheta ou grupo para arrastar uma conexão para outra " "prancheta." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Cores selecionadas" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Preenchimento de seleção" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Traço da seleção" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Adicionar sombra" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Desfoque" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Cor da sombra" @@ -5619,51 +5590,52 @@ msgstr "Sombra" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Sombra interna" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Remover sombra" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Difundir" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Sombra" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Grupo de sombras" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Seleção de sombras" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Mostrar na exportação" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Mostrar no modo de visualização" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Tamanho" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Tamanho pré-definido" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Traço" @@ -5672,7 +5644,7 @@ msgstr "Traço" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Marcador circular" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Círculo" @@ -5681,7 +5653,7 @@ msgstr "Círculo" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Marcador em diamante" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamante" @@ -5690,19 +5662,19 @@ msgstr "Diamante" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Seta de linha" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Seta" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Nenhum" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Arredondado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Quadrado" @@ -5711,7 +5683,7 @@ msgstr "Quadrado" msgid "workspace.options.stroke-cap.square-marker" msgstr "Marcador quadrado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Retângulo" @@ -5720,83 +5692,83 @@ msgstr "Retângulo" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Seta triangular" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Triângulo" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Cor do traço" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Largura do traço" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Adicionar cor de traço" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centro" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Tracejado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Pontilhado" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Interior" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Misto" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Exterior" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Remover traço" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Sólido" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Alinhar abaixo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Alinhar ao meio" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Alinhar ao topo" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Altura automática" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Largura automática" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fixo" @@ -5818,35 +5790,35 @@ msgstr "Minúsculas" msgid "workspace.options.text-options.none" msgstr "Nenhum" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Rasurado (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Alinhar ao centro" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Justificar" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Alinhar à esquerda" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Alinhar à direita" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Texto" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Grupo de texto" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Texto selecionado" @@ -5855,7 +5827,7 @@ msgstr "Texto selecionado" msgid "workspace.options.text-options.titlecase" msgstr "Capitalizar iniciais" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Sublinhado (%s)" @@ -5864,21 +5836,21 @@ msgstr "Sublinhado (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Maiúsculas" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Utiliza o botão de play no cabeçalho para iniciar a visualização do " "protótipo." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Largura" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Eixo X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y" @@ -5922,80 +5894,80 @@ msgstr "Separar nós (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Ajustar nós (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Abrir" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Descobre [mais plugins](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Sem plugins instalados" -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Precisas de ser um(a) editor(a) para usar este plugin" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "O plugin não existe ou o URL está incorreto." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Instalar" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Plugins instalados" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Gestor de plugins" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Plugins" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "ATUALIZAR ESTE PLUGIN" -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Ler os teus comentários e respostas." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Ler e modificar os teus comentários, e enviar respostas em teu nome." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Ler informações sobre as tuas bibliotecas e recursos." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Ler e modificar as tuas bibliotecas e recursos." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "O PLUGIN '%s' SOLICITA ACESSO A:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Ler as informações de perfil do utilizador atual." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Lista de plugins" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Remover plugin" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Introduz um URL de plugin" @@ -6003,19 +5975,19 @@ msgstr "Introduz um URL de plugin" msgid "workspace.plugins.success" msgstr "Plugin carregado com sucesso." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Plugins" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "AGORA NÃO" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "O PLUGIN '%s' FOI INSTALADO PARA O TEU UTILIZADOR!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "TESTAR PLUGIN" @@ -6027,7 +5999,7 @@ msgstr "Adicionar layout flex" msgid "workspace.shape.menu.add-grid" msgstr "Adicionar layout em grelha" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Adicionar layout" @@ -6063,7 +6035,7 @@ msgstr "Copiar propriedades" msgid "workspace.shape.menu.copy-text" msgstr "Copiar como texto" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Criar nota" @@ -6071,11 +6043,11 @@ msgstr "Criar nota" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Seleção para a prancheta" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Criar componente" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Criar múltiplos componentes" @@ -6083,7 +6055,7 @@ msgstr "Criar múltiplos componentes" msgid "workspace.shape.menu.cut" msgstr "Recortar" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Eliminar" @@ -6091,15 +6063,15 @@ msgstr "Eliminar" msgid "workspace.shape.menu.delete-flow-start" msgstr "Eliminar início de fluxo" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Desprender instância" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Desprender instâncias" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Diferença" @@ -6111,11 +6083,11 @@ msgstr "Duplicar" msgid "workspace.shape.menu.edit" msgstr "Editar" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Excluir" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Achatar" @@ -6148,19 +6120,19 @@ msgstr "Ir para ficheiro do componente principal" msgid "workspace.shape.menu.group" msgstr "Agrupar" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Ocultar" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Mostrar/Ocultar interface" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Interseção" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Bloquear" @@ -6168,7 +6140,7 @@ msgstr "Bloquear" msgid "workspace.shape.menu.mask" msgstr "Máscara" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Colar" @@ -6188,7 +6160,7 @@ msgstr "Remover layout flex" msgid "workspace.shape.menu.remove-grid" msgstr "Remover layout em grelha" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Remover layout" @@ -6196,11 +6168,11 @@ msgstr "Remover layout" msgid "workspace.shape.menu.rename" msgstr "Renomear" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Anular alterações" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Restaurar componente principal" @@ -6208,15 +6180,15 @@ msgstr "Restaurar componente principal" msgid "workspace.shape.menu.select-layer" msgstr "Selecionar camada" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Mostrar" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Mostrar recursos no painel" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Mostrar componente principal" @@ -6229,6 +6201,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Definir como miniatura" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformar em vector" @@ -6236,11 +6209,11 @@ msgstr "Transformar em vector" msgid "workspace.shape.menu.ungroup" msgstr "Desagrupar" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "União" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Desbloquear" @@ -6253,7 +6226,7 @@ msgstr "Retirar máscara" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Atualizar componentes principais" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Atualizar componente principal" @@ -6265,11 +6238,11 @@ msgstr "Fechar barra lateral" msgid "workspace.sidebar.expand" msgstr "Expandir barra lateral" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Histórico" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Camadas" @@ -6309,11 +6282,11 @@ msgstr "Textos" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Importar atributos do SVG" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Páginas" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Adicionar página" @@ -6325,11 +6298,11 @@ msgstr "Mapa do site" msgid "workspace.tokens.active-themes" msgstr "%s temas ativos" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Aplicado a" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Voltar à lista de temas" @@ -6341,7 +6314,7 @@ msgstr "Cor" msgid "workspace.tokens.delete-theme-title" msgstr "Eliminar tema" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Editar tema" @@ -6358,19 +6331,19 @@ msgstr "Erro: " msgid "workspace.tokens.label.theme" msgstr "Tema" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "Margens" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "Tamanho máx." -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "Tamanho mín." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Valor original: %s" @@ -6383,7 +6356,7 @@ msgstr "Raio" msgid "workspace.tokens.save-theme" msgstr "Guardar tema" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "Tamanho" @@ -6395,28 +6368,28 @@ msgstr "Tema %s" msgid "workspace.tokens.themes-list" msgstr "Lista de temas" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Descrição" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Nome" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Valor" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Ferramentas" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "O valor não é válido" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Recursos" @@ -6424,7 +6397,7 @@ msgstr "Recursos" msgid "workspace.toolbar.color-palette" msgstr "Paleta de cores (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Comentários (%s)" @@ -6631,19 +6604,19 @@ msgstr "Operação sobre %s" msgid "workspace.undo.title" msgstr "Histórico" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Ignorar" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Mais informações" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Existem atualizações nas bibliotecas partilhadas" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Atualizar" @@ -6687,11 +6660,11 @@ msgstr "A carregar..." msgid "workspace.versions.restore-warning" msgstr "Queres restaurar esta versão?" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Ações" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Histórico" diff --git a/frontend/translations/ro.po b/frontend/translations/ro.po index af5cf435d8..598947dda0 100644 --- a/frontend/translations/ro.po +++ b/frontend/translations/ro.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: AlexTECPlayz \n" -"Language-Team: Romanian " -"\n" +"Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2;\n" -"X-Generator: Weblate 5.13-dev\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : " +"(n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -181,7 +181,7 @@ msgstr "" "Sunt de acord cu [termenii și condițiile](%s) și [politica de " "confidențialitate](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Termenii serviciului" @@ -208,7 +208,7 @@ msgstr "... mărci, ilustrații, piese de marketing, etc." msgid "comments.mentions.not-found" msgstr "Nicio persoană găsită pentru @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publică" @@ -281,7 +281,7 @@ msgstr "Distribuiți prototipuri" msgid "common.share-link.view-all" msgstr "Selectează Tot" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Anulați publicarea" @@ -406,7 +406,7 @@ msgstr "Jetonul nu are dată de expirare" msgid "dashboard.add-file" msgstr "Adaugă filă" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Adăugați ca bibliotecă partajată" @@ -414,31 +414,31 @@ msgstr "Adăugați ca bibliotecă partajată" msgid "dashboard.change-email" msgstr "Schimbă adresa de e-mail" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(copiază)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Creează o nouă echipă" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Fixați această versiune" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Contul Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Șterge echipa" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Descărcați fișierul Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Descărcați fișierul standard (.svg + .json)" @@ -510,7 +510,7 @@ msgstr "Începe să creezi lucruri uimitoare" msgid "dashboard.export-binary-multi" msgstr "Descărcați %s fișiere Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exportați table ca PDF" @@ -526,7 +526,7 @@ msgstr "Exportați %s fișiere Penpot" msgid "dashboard.export-multiple.selected" msgstr "%s din %s elemente selectate" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportă" @@ -731,11 +731,11 @@ msgstr "Încărcarea datelor pe server (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Încărcarea fișierului: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Invitați persoane" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Părăsește echipa" @@ -747,7 +747,7 @@ msgstr "Biblioteci & Șabloane" msgid "dashboard.libraries-and-templates.explore" msgstr "Explorează mai multe dintre ele și află cum să contribui" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "A apărut o problemă la importarea șablonului. Șablonul nu a fost importat." @@ -779,7 +779,7 @@ msgstr "Mutați la altă echipă" msgid "dashboard.new-file" msgstr "+ Fișier nou" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Fișer nou" @@ -787,7 +787,7 @@ msgstr "Fișer nou" msgid "dashboard.new-project" msgstr "+ Proiect nou" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Proiect nou" @@ -795,11 +795,11 @@ msgstr "Proiect nou" msgid "dashboard.no-matches-for" msgstr "Nu există rezultate pentru “%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Proiectele fixate vor apărea aici" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Notificări" @@ -815,11 +815,11 @@ msgstr "Adresa ta de email este confirmată" msgid "dashboard.notifications.password-saved" msgstr "Parolă actualizată cu success!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Afișați notificările" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s membrii" @@ -851,7 +851,7 @@ msgstr "Dețineți acum această echipă." msgid "dashboard.permissions-change.viewer" msgstr "Sunteți acum un cititor în această echipă." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Fixați/Anulați fixarea" @@ -876,7 +876,7 @@ msgstr "Nu mai sunteți parte din echipa \"%s\"." msgid "dashboard.save-settings" msgstr "Salvează setările" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Căutare…" @@ -896,7 +896,7 @@ msgstr "Selectați o temă" msgid "dashboard.show-all-files" msgstr "Afișați toate fișierele" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Istoric versiuni" @@ -922,7 +922,7 @@ msgstr[2] "Fișierele dumneavoastră au fost duplicate cu succes" msgid "dashboard.success-duplicate-project" msgstr "Proiectul s-a duplicat cu succes" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Fișierul a fost mutat cu succes" @@ -934,15 +934,15 @@ msgstr "Fișerele au fost mutate cu succes" msgid "dashboard.success-move-project" msgstr "Proiectul a fost mutat cu succes" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Informațiile echipei" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Membrii echipei" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Proiectele echipei" @@ -958,7 +958,7 @@ msgstr "Rezultatele căutării" msgid "dashboard.type-something" msgstr "Scrie pentru a începe căutarea" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Anulați publicarea bibliotecii" @@ -966,27 +966,27 @@ msgstr "Anulați publicarea bibliotecii" msgid "dashboard.update-settings" msgstr "Actualizare setări" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Este activ" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Când acest hook este declanșat, se vor furniza detalii despre eveniment" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Tip de conținut" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Creați webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook creat cu succes." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhook-urile sunt o modalitate simplă de a permite altor site-uri web și " @@ -994,11 +994,11 @@ msgstr "" "Penpot. Vom trimite o solicitare POST la fiecare dintre adresele URL pe " "care le furnizați." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Apăsați butonul \"Adăugați webhook\" pentru a adăuga unul." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Niciun webhook creat până acum." @@ -1018,7 +1018,7 @@ msgstr "Email" msgid "dashboard.your-name" msgstr "Numele tău" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Contul Penpot" @@ -1034,11 +1034,11 @@ msgstr "Atenţie" msgid "ds.component-subtitle" msgstr "Componente de actualizat:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Anulează" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1082,11 +1082,11 @@ msgstr "Adresa de email este deja validată." msgid "errors.email-as-password" msgstr "Nu vă puteți folosi e-mailul ca parolă" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Adresa de email «%s» are multe rapoarte permanente de respingere." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "E-mailul «%s» a fost raportat ca spam sau respins permanent." @@ -1100,7 +1100,7 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Funcția \"%s\" nu este acceptată." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "S-a întâmplat ceva în neregulă." @@ -1133,7 +1133,7 @@ msgstr "Această invitație poate fi anulată sau expirată." msgid "errors.ldap-disabled" msgstr "Autentificarea cu LDAP este dezactivată." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Ați ajuns la cota \"%s\". Luați legătura cu serviciul de asistență." @@ -1149,7 +1149,7 @@ msgstr "Se pare că conținutul imaginii nu se potrivește cu extensia de fișie msgid "errors.media-type-not-allowed" msgstr "Se pare că aceasta nu este o imagine validă." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Profilul pe care încercați să îl invitați este dezactivat (din cauza spam " @@ -1169,7 +1169,7 @@ msgstr "Parola trebuie să conțină cel puțin 8 caractere" msgid "errors.profile-blocked" msgstr "Profilul este blocat" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Profilul tău conține adrese de email dezactivate (rapoarte spam sau " @@ -1179,17 +1179,17 @@ msgstr "" msgid "errors.registration-disabled" msgstr "Înregistrarea este dezactivată în prezent." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Nu există suficienți membri pentru a părăsi echipa, probabil că doriți să o " "ștergeți." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Membrul pe care încercați să-l atribuiți nu există." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Proprietarul nu poate părăsi echipa, trebuie să reatribuiți rolul de " @@ -1203,31 +1203,31 @@ msgstr "A apărut o eroare neașteptată." msgid "errors.unexpected-token" msgstr "Cod necunoscut" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Eroare de conexiune, URL-ul nu poate fi accesat" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL-ul nu a trecut validarea." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Ultima livrare nu a avut succes." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Eroare la validarea SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Timeout" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Eroare neașteptată la validare" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Stare neașteptată %s" @@ -1291,19 +1291,19 @@ msgstr "Am întâmpinat o eroare" msgid "inspect.attributes.blur" msgstr "Estompare" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Valoare" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1311,7 +1311,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Umple" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Descarcă imaginea sursă" @@ -1405,77 +1405,80 @@ msgstr "Solid" msgid "inspect.attributes.stroke.width" msgstr "Lățime" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografie" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Familie de Fonturi" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Dimensiune Font" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Stil Font" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Greutate Font" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Spațiere" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Înălțimea rândului" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Decorare Text" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Niciunul" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Subliniat" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Transformare Text" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Majuscule Titlu" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Minuscule" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Niciunul" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Majuscule" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Dacă doriți să aflați mai multe despre inspectorul de design, vizitați " "centrul de ajutor Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Mai multe informații despre inspector" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Selectați o formă, o placă sau un grup pentru a le inspecta proprietățile " @@ -1537,7 +1540,7 @@ msgstr "Text" msgid "inspect.tabs.info" msgstr "Info" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Comenzi rapide" @@ -1549,7 +1552,7 @@ msgstr "Acceptă" msgid "labels.access-tokens" msgstr "Jetoane acces" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Activ" @@ -1557,7 +1560,7 @@ msgstr "Activ" msgid "labels.add-custom-font" msgstr "Adăugați font personalizat" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Administrator" @@ -1565,7 +1568,7 @@ msgstr "Administrator" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Toate" @@ -1586,7 +1589,7 @@ msgstr "Momentan serverele noastre sunt în mentenanță. Revino în scurt timp. msgid "labels.bad-gateway.main-message" msgstr "Eroare de Server" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Anulează" @@ -1594,15 +1597,15 @@ msgstr "Anulează" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Închide" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Comentarii" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Comunitate" @@ -1610,7 +1613,7 @@ msgstr "Comunitate" msgid "labels.confirm-password" msgstr "Confirmă parola" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Continuă" @@ -1622,11 +1625,11 @@ msgstr "Continuă cu" msgid "labels.continue-with-penpot" msgstr "Poți continua cu un cont Penpot" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Copiați link-ul" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Creează" @@ -1646,7 +1649,7 @@ msgstr "Fonturi personalizate" msgid "labels.dashboard" msgstr "Administrare" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Șterge" @@ -1658,7 +1661,7 @@ msgstr "Șterge comentariu" msgid "labels.delete-comment-thread" msgstr "Șterge discuție" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Șterge invitație" @@ -1666,15 +1669,15 @@ msgstr "Șterge invitație" msgid "labels.delete-multi-files" msgstr "Șterge %s fișiere" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Anulați" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Drafturi" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Editează" @@ -1682,15 +1685,15 @@ msgstr "Editează" msgid "labels.edit-file" msgstr "Editează fișier" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Editor" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Expirat" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exportă" @@ -1718,7 +1721,7 @@ msgstr "Provideri de Fonturi" msgid "labels.font-variants" msgstr "Stiluri" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fonturi" @@ -1727,11 +1730,11 @@ msgstr "Fonturi" msgid "labels.freelancer" msgstr "Sunt un freelancer" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Repozitoriu Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Lasă un feedback" @@ -1739,15 +1742,15 @@ msgstr "Lasă un feedback" msgid "labels.go-back" msgstr "Întoarce-te" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Centru Ajutor" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Ascunde comentariile rezolvate" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inactiv" @@ -1769,7 +1772,7 @@ msgstr "Eroare internă" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Invitații" @@ -1777,7 +1780,7 @@ msgstr "Invitații" msgid "labels.language" msgstr "Limbă" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Biblioteci & Șabloane" @@ -1785,15 +1788,15 @@ msgstr "Biblioteci & Șabloane" msgid "labels.log-or-sign" msgstr "Conectați-vă sau înregistrați-vă" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Deconectare" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Membru" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Membri" @@ -1801,15 +1804,15 @@ msgstr "Membri" msgid "labels.new-password" msgstr "Parolă nouă" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Următor" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Sunteți la zi! Notificările de comentarii noi vor apărea aici." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Nu există invitații în așteptare." @@ -1822,7 +1825,7 @@ msgstr "Această pagină nu există sau nu ai permisiunea să o accesezi." msgid "labels.not-found.main-message" msgstr "Opa!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 fişier" @@ -1836,7 +1839,7 @@ msgstr[0] "1 planșă" msgstr[1] "%s planșe" msgstr[2] "%s de planșe" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 proiecte" @@ -1860,7 +1863,7 @@ msgstr "sau" msgid "labels.other" msgstr "Alta (specificați)" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Autor" @@ -1868,7 +1871,7 @@ msgstr "Autor" msgid "labels.password" msgstr "Parola" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "În curs" @@ -1880,11 +1883,11 @@ msgstr "Anterior" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Proiecte" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Mențiuni" @@ -1898,11 +1901,11 @@ msgstr "Reîncărcați fișierul" msgid "labels.remove" msgstr "Elimină" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Eliminați membru" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Redenumire" @@ -1910,7 +1913,7 @@ msgstr "Redenumire" msgid "labels.rename-team" msgstr "Modifică numele echipei" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Retrimite invitația" @@ -1918,11 +1921,11 @@ msgstr "Retrimite invitația" msgid "labels.retry" msgstr "Încearcă din nou" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rol" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Salvează" @@ -1950,7 +1953,7 @@ msgstr "Momentan suntem în mentenanță." msgid "labels.service-unavailable.main-message" msgstr "Serviciul nu este disponibil" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Setări" @@ -1958,11 +1961,11 @@ msgstr "Setări" msgid "labels.share-prototype" msgstr "Distribuie link" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Biblioteci distribuite" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Afișează toate comentariile" @@ -1970,7 +1973,7 @@ msgstr "Afișează toate comentariile" msgid "labels.show-comments-list" msgstr "Arată lista de comentarii" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Afișează doar comentariile mele" @@ -1982,7 +1985,7 @@ msgstr "Sketch" msgid "labels.start" msgstr "Începeți" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Stare" @@ -1990,7 +1993,7 @@ msgstr "Stare" msgid "labels.student-teacher" msgstr "Student sau profesor" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Tutoriale" @@ -2018,15 +2021,15 @@ msgstr "Încarcă fonturi personalizate" msgid "labels.uploading" msgstr "Se încarcă…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "NUMAI VIZUALIZARE" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Vizitator" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhook-uri" @@ -2034,11 +2037,11 @@ msgstr "Webhook-uri" msgid "labels.write-new-comment" msgstr "Scrie un comentariu" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(tu)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Contul tău" @@ -2115,19 +2118,19 @@ msgstr "Creați jeton" msgid "modals.create-access-token.title" msgstr "Generați jeton acces" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Creați webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Creați webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL a încărcăturii" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2173,11 +2176,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Șterge conversație" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Sunteți sigur că doriți să ștergeți această notă?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Ștergeți notă" @@ -2225,11 +2228,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Ștergere font" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Ești sigur că dorești să ștergi această pagină?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Șterge pagină" @@ -2280,29 +2283,29 @@ msgstr[0] "Se șterge fișierul" msgstr[1] "Se șterg fișierele" msgstr[2] "Se șterg fișierele" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Șterge echipă" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Ești sigur că dorești să ștergi această echipă? Toate proiectele și " "fișierele asociate acesteia vor fi permanent șterse." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Ștergere echipă în curs" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Elimină membru" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Ești sigur că dorești să elimini acest membru din echipă?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Elimină un membru al echipei" @@ -2319,51 +2322,51 @@ msgstr[2] "" "Obiectele care au fost folosite deja în aceste fișiere vor rămâne acolo " "(niciun design nu va fi stricat)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Ștergeți webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Sunteți sigur că doriți să ștergeți acest webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Ștergerea webhook-ului" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Editați webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Editați webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Trimite invitație" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-mailuri, separate prin virgulă" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Unele e-mailuri provin de la membri actuali ai echipei. Invitațiile lor nu " "vor fi trimise." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Invitați membri în echipă" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Deoarece ești singurul membru al acestei echipe, echipa va fi ștearsă " "împreună cu proiectele și fișierele sale." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Sigur doriți să părăsiți echipa %s?" @@ -2389,49 +2392,49 @@ msgstr "Selectează un membru pentru promovare" msgid "modals.leave-and-reassign.title" msgstr "Selectează un membru pentru promovare" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Părăsește echipa" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Ești sigur că dorești să părăsești această echipă?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Părăsire echipă în curs" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Suma înghiontului" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Promovează" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Dacă transferați dreptul de proprietate, vă veți schimba rolul în " "Administrator, pierzând unele permisiuni asupra acestei echipe. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "Ești sigur că dorești să promovezi acest utilizator ca deținător al echipei?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Confirmare promovare" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publicați" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Librăria dvs. este goală. Sunteți sigur că doriți să o publicați?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Publicați librărie goală" @@ -2489,21 +2492,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Actualizează componentele într-o bibliotecă partajată" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Actualizare componentă" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Anulează" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Actualizezi o componentă dintr-o colecţie distribuită. Pot fi afectate alte " "fişiere ce o folosesc." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Actualizaţi o componentă dintr-o colecţie distribuită" @@ -2511,11 +2514,11 @@ msgstr "Actualizaţi o componentă dintr-o colecţie distribuită" msgid "notifications.by-code.upgrade-version" msgstr "O versiune nouă este valabilă, vă rugăm să reîncărcați pagina" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Invitaţie trimisă cu succes" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Link de invitație copiat" @@ -2637,7 +2640,7 @@ msgstr "" "Nu uitați să includeți pe toată lumea. Dezvoltatori, designeri, manageri... " "diversitatea se adaugă :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Invitați cu rolul:" @@ -2729,621 +2732,605 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Mergi la autentificare" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Detașați" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Multiple" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Bazele" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Bord" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Vizualizator" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Spațiu de lucru" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Aliniere" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Editează" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Generic" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Generic" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Meniul principal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Modifică straturi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigație" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigație" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigație" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Panouri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Drumuri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Forme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Texte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Unelte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Comentarii" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Adaugă nod" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Aliniați jos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Aliniere la centru" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Aliniați centrul orizontal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Aliniere justificată" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Aliniați stânga" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Aliniați dreapta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Aliniați sus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Aliniați centrul vertical" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Creează tablă din selecție" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Comutare bold" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Diferența booleană" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Exclude boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Intersecție boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Uniune boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Trimite la spate" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Trimite în spate" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Aduce în față" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Aduce în față" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Ștergeți anularea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Copiază" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Creează nou" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Taie" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Micșorează" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Șterge" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Șterge nod" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Detașează component" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Curbă" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elipsă" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Tablă" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Trasează drum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Drum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Dreptunghi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplică" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Anulează" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Exportați formele" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Măriți pentru a încăpea tot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Întoarceți pe orizontală" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Întoarceți pe verticală" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Reducere dimensiune font" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Creștere dimensiune font" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Accesați schițele" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Accesați bibliotecile partajate" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Căutați" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Grup" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribuiți pe orizontală" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Arată/ascunde interfața" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Măriți" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Inserați imagine" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Comutare cursiv" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Uniți noduri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Reducere spațiere litere" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Creștere spațiere litere" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Reducere înălțime linie" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Creștere înălțime linie" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Comutare tăiere" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Faceți colț" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Faceți o curbă" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Mască" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Îmbinați nodurile" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Mutați" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Mutați jos rapid" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Mutați în stânga rapid" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Mutați în dreapta rapid" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Mutați sus rapid" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Mutați noduri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Mutați jos" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Mutați în stânga" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Mutați în dreapta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Mutați sus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Următoarea tablă" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Nu s-au găsit comenzi rapide" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Setați opacitatea la 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Setați opacitatea la 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Setați opacitatea la 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Setați opacitatea la 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Setați opacitatea la 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Setați opacitatea la 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Setați opacitatea la 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Setați opacitatea la 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Setați opacitatea la 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Setați opacitatea la 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Selector de culoare" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Accesați secțiunea de comentarii ale spectatorului" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Accesați tabloul de bord" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Mergeți la secțiunea de inspecție a vizualizatorului" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Accesați secțiunea de interacțiuni ale spectatorului" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Accesați secțiunea de interacțiuni ale spectatorului" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Accesați spațiul de lucru" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " sau " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Lipește" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Tabla anterioară" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Refaceți" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Resetați zoomul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Căutați comenzi rapide" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Selectează tot" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Selectare strat următor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Selectați strat părinte" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Selectare strat anterior" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Noduri separate" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Afișați/ascundeți grila de pixeli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Afișați/ascundeți comenzile rapide" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Fixare la noduri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Fixare la grila de pixeli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Începeți editarea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Începeți măsurarea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Opriți măsurarea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Setați miniaturile" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Comenzi rapide de la tastatură" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Comutați alinierea dinamică" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Comutați obiectele" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Comutați paleta de culori" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Comutați modul de focus" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Comutați la ecran complet" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Comutați istoricul" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Comutați straturile" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Adăugare/eliminare aspect flexibil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Blocați selecția" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Blocați proporțiile" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Comutați paleta de text" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Comutați vizibilitatea" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Comutați stilul zoomului" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Comutare subliniere" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Anulați" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Degrupați" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Demascați" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribuiți vertical" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Reducere obiectiv de zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Creștere obiectiv de zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Mărește la selecție" @@ -3395,19 +3382,19 @@ msgstr "Parolă - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Invitații -%s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Membri - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Setări - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -3479,39 +3466,39 @@ msgstr "Afişează interacţiunile la click" msgid "viewer.header.sitemap" msgstr "Harta site-ului" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Ultima livrare a fost cu succes." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Aliniază orizontal (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Introdu spaţierea orizontală (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Aliniază la stânga (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Aliniază la dreapta (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Aliniază jos (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Aliniază vertical (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Introdu spaţierea pe verticală (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Aliniază sus (%s)" @@ -3520,31 +3507,31 @@ msgstr "Aliniază sus (%s)" msgid "workspace.assets.assets" msgstr "Obiecte" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Toate obiectele" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Culori" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Componente" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Creează grup" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Obiectele vor fi numite automat ca \"nume grup / nume obiect\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Şterge" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplică" @@ -3552,7 +3539,7 @@ msgstr "Duplică" msgid "workspace.assets.duplicate-main" msgstr "Duplicare principală" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Editează" @@ -3561,15 +3548,15 @@ msgstr "Editează" msgid "workspace.assets.graphics" msgstr "Obiecte grafice" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Grup" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Nume grup" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "biblioteca locală" @@ -3581,15 +3568,15 @@ msgstr "Nu au fost găsite obiecte" msgid "workspace.assets.open-library" msgstr "Deschideți fișier librărie" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Redenumeşte" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Redenumiți grupul" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Caută obiecte" @@ -3606,7 +3593,7 @@ msgstr[2] "%s obiecte selectate" msgid "workspace.assets.shared-library" msgstr "Librărie partajată" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografii" @@ -3631,7 +3618,7 @@ msgstr "Spaţiere Litere" msgid "workspace.assets.typography.line-height" msgstr "Înălţime linie" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -3643,7 +3630,7 @@ msgstr "Stiluri de text" msgid "workspace.assets.typography.text-transform" msgstr "Transformare Text" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Degrupați" @@ -3651,7 +3638,7 @@ msgstr "Degrupați" msgid "workspace.focus.focus-mode" msgstr "Mod focus" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Focus oprit" @@ -3671,11 +3658,11 @@ msgstr "Gradient liniar" msgid "workspace.gradients.radial" msgstr "Gradient radial" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Dezactivează alinierea dinamică" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Dezactivare scară proporțională" @@ -3684,19 +3671,19 @@ msgstr "Dezactivare scară proporțională" msgid "workspace.header.menu.disable-scale-text" msgstr "Dezactivează dimensionarea textului" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Dezactivați fixarea la ghiduri" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Dezactivați fixarea la pixel" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Aliniere dinamică" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Activare scară proporțională" @@ -3705,87 +3692,87 @@ msgstr "Activare scară proporțională" msgid "workspace.header.menu.enable-scale-text" msgstr "Activează scalarea textului" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Fixare la ghiduri" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Activați fixarea la pixel" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Ascundeți numele tablelor" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Ascunde paleta de culori" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Ascundeți grila de pixeli" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Ascunde ghidul liniar" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Ascundeți paleta de fonturi" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Editați" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Fișier" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Ajutor & info" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Preferințe" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Vezi" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Refacere" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Selectează tot" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Afișați numele tablelor" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Afişează paleta de culori" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Afișați grila de pixeli" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Afişează Liniarul" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Afișați paleta de fonturi" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Anulare" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Resetați" @@ -3806,11 +3793,11 @@ msgstr "Salvare în curs" msgid "workspace.header.unsaved" msgstr "Modificări nesalvate" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Vizualizare (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zoom" @@ -3822,7 +3809,7 @@ msgstr "Umplere - Scalare pentru a umple" msgid "workspace.header.zoom-fit" msgstr "Potrivire - Scalare în jos a se potrivi" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Zoom pentru a potrivi tot" @@ -3830,7 +3817,7 @@ msgstr "Zoom pentru a potrivi tot" msgid "workspace.header.zoom-full-screen" msgstr "Ecran complet" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zoom la selecție" @@ -3843,10 +3830,6 @@ msgstr "Editare grilă" msgid "workspace.libraries.add" msgstr "Adaugă" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s culori" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Nu există stiluri de culori în librăria dvs. încă" @@ -3873,31 +3856,23 @@ msgstr "Culori recente" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Complementar" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Salvează stilul culorii" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s componente" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Bibliotecă de fișiere" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s obiecte grafice" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTECILE FIŞIERULUI" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTECI" @@ -3906,63 +3881,59 @@ msgstr "BIBLIOTECI" msgid "workspace.libraries.library" msgstr "BIBLIOTECĂ" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "ACTUALIZĂRI LIBRĂRII" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Nu există Biblioteci Distribuite ce necesită update" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Nu au fost găsite asemănări pentru “%s“" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Caută în bibliotecile distribuite" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "BIBLIOTECI DISTRIBUITE" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Tipografii multiple" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Deconectează toate tipografiile" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s tipografii" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Actualizați" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "vedeți toate schimbările" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ACTUALIZĂRI" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Faceți clic pe butonul + pentru a adăuga interacțiuni." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Estompare" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Blur pe grup" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Selecţie de blur" @@ -3970,31 +3941,31 @@ msgstr "Selecţie de blur" msgid "workspace.options.canvas-background" msgstr "Fundal canvas" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Conținutul clipului" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Componentă" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Notă" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Copiați" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Creați o notă" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Editați o notă" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Principal" @@ -4038,7 +4009,7 @@ msgstr "Sus" msgid "workspace.options.constraints.topbottom" msgstr "Sus & Jos" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" @@ -4051,14 +4022,14 @@ msgstr "Exportă" msgid "workspace.options.export-multiple" msgstr "Exportați selecția" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Exportați 1 element" msgstr[1] "Exportați %s elemente" msgstr[2] "Exportați %s elemente" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Sufix" @@ -4066,7 +4037,7 @@ msgstr "Sufix" msgid "workspace.options.exporting-complete" msgstr "Export finalizat" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Se exportă…" @@ -4078,11 +4049,11 @@ msgstr "Export eșuat" msgid "workspace.options.exporting-object-slow" msgstr "Export neașteptat de lent" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Umple" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Adăugați început flux" @@ -4091,15 +4062,15 @@ msgstr "Adăugați început flux" msgid "workspace.options.flows.flow-start" msgstr "Pornirea fluxului" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Fluxul începe" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Auto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Coloane" @@ -4108,7 +4079,7 @@ msgstr "Coloane" msgid "workspace.options.grid.grid-title" msgstr "Grilă" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Culoare" @@ -4117,15 +4088,15 @@ msgstr "Culoare" msgid "workspace.options.grid.params.columns" msgstr "Coloane" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Spaţiere" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Înălţime" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Margine" @@ -4134,7 +4105,7 @@ msgstr "Margine" msgid "workspace.options.grid.params.rows" msgstr "Rânduri" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Setează ca predefinit" @@ -4148,143 +4119,143 @@ msgstr "Mărime" msgid "workspace.options.grid.params.type" msgstr "Tip" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Jos" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Centru" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Stânga" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Dreapta" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Întinde" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Sus" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Foloseşte default" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Lăţime" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Rânduri" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Pătrat" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Umplere grup" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Conturare grup" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Înălțime" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspectați" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Acțiune" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "După întârziere" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animație" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Dizolvare" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Nimic" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Împinge" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Alunecă" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "auto" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Adăugați suprapunere de fundal" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Închideți atunci când faceți clic în exterior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Închideți suprapunerea" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Închideți suprapunerea: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Întârziere" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destinație" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Durată" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Easing" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Liniar" @@ -4293,47 +4264,47 @@ msgstr "Liniar" msgid "workspace.options.interaction-in" msgstr "În" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Intrarea mouse-ului" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Plecarea mouse-ului" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navigați la" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navigați la: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(nedefinit)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Efect de offset" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "La clic" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Deschideți suprapunerea" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Deschideți suprapunerea: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Deschideți adresa URL" @@ -4342,147 +4313,147 @@ msgstr "Deschideți adresa URL" msgid "workspace.options.interaction-out" msgstr "Afară" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Centru jos" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Stânga jos" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Dreapta jos" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Centru" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manual" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Centru sus" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Stânga sus" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Dreapta sus" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Poziție" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Păstrați poziția derulării" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Ecranul anterior" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relativ la" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "sine" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Comutare suprapunere" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Comutați suprapunerea: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Declanșator" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "În timp ce plutește" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "În timp ce este apăsat" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interacțiuni" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Culoare" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Arderea culorii" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Evitare culoare" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Întunecat" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Diferență" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Excludere" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Lumină Puternică" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Nuanță" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Luminat" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminozitate" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiplică" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Strat" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Saturaţie" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Screen" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Lumină slabă" @@ -4506,19 +4477,19 @@ msgstr "Layere selectate" msgid "workspace.options.layout-item.advanced-ops" msgstr "Opțiuni avansate" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Înălțime maximă" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Lățime maximă" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Înălțime minimă" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Lățime minimă" @@ -4632,15 +4603,15 @@ msgstr "spațiu între" msgid "workspace.options.layout.top" msgstr "Sus" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Mai multe culori" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Mai multe culori de bibliotecă" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacitate" @@ -4649,27 +4620,27 @@ msgstr "Opacitate" msgid "workspace.options.position" msgstr "Poziţie" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototip" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Rază" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Stânga jos" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Dreapta jos" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Stânga sus" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Dreapta sus" @@ -4681,7 +4652,7 @@ msgstr "Recente" msgid "workspace.options.retry" msgstr "Reîncercați" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotaţie" @@ -4689,27 +4660,27 @@ msgstr "Rotaţie" msgid "workspace.options.search-font" msgstr "Căutați font" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Selectează o formă, o planşă sau grupează pentru a conecta o altă planşă." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Culori selectate" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Umplere selecție" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Contur selecție" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Estompare" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Culoare umbră" @@ -4721,47 +4692,48 @@ msgstr "Umbră proiectată" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Umbră interioară" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Accentuare" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Umbră" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Umbră grup" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Umbre de selecție" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Afișați în exporturi" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Afișare în modul de vizualizare" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Mărime" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Dimensiuni presetate" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Contur" @@ -4770,7 +4742,7 @@ msgstr "Contur" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Marcator cerc" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Cerc" @@ -4779,7 +4751,7 @@ msgstr "Cerc" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Marcator diamant" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamant" @@ -4788,19 +4760,19 @@ msgstr "Diamant" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Săgeată linie" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Săgeată" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Nimic" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Rotund" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Pătrat" @@ -4809,7 +4781,7 @@ msgstr "Pătrat" msgid "workspace.options.stroke-cap.square-marker" msgstr "Marcator pătrat" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Dreptunghi" @@ -4818,75 +4790,75 @@ msgstr "Dreptunghi" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Săgeată triunghi" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Triunghi" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Culoare contur" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Lățimea conturului" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Centru" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Întrerupt" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Punctat" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Interior" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Mixed" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Exterior" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Solid" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Aliniază jos" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Aliniază la mijloc" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Aliniază sus" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Înălţime auto" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Lăţime auto" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fix" @@ -4908,35 +4880,35 @@ msgstr "Minuscule" msgid "workspace.options.text-options.none" msgstr "Nici unul" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Barat (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Aliniază centru" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Justifică" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Aliniază la stânga" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Aliniază la dreapta" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Grupează text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Selecţie text" @@ -4945,7 +4917,7 @@ msgstr "Selecţie text" msgid "workspace.options.text-options.titlecase" msgstr "Majuscule titlu" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Subliniază (%s)" @@ -4954,19 +4926,19 @@ msgstr "Subliniază (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Majuscule" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Foloseşte butonul play din header pentru a porni vizualizarea prototip." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Lăţime" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Axa X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Axa Y" @@ -5030,7 +5002,7 @@ msgstr "Trimite în urmă" msgid "workspace.shape.menu.copy" msgstr "Copiază" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Creați notă" @@ -5038,11 +5010,11 @@ msgstr "Creați notă" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Selecție la planșă" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Creează componentă" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Creați componente multiple" @@ -5050,7 +5022,7 @@ msgstr "Creați componente multiple" msgid "workspace.shape.menu.cut" msgstr "Taie" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Şterge" @@ -5058,15 +5030,15 @@ msgstr "Şterge" msgid "workspace.shape.menu.delete-flow-start" msgstr "Ștergeți începutul fluxului" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Detaşează instanţă" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Detașați instanțele" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Diferență" @@ -5078,11 +5050,11 @@ msgstr "Duplică" msgid "workspace.shape.menu.edit" msgstr "Editează" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Excludeți" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Aplatizați" @@ -5115,19 +5087,19 @@ msgstr "Mergi la componenta principală" msgid "workspace.shape.menu.group" msgstr "Grupează" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Ascunde" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Afișați/ Ascundeți UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Intersecție" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Blochează" @@ -5135,7 +5107,7 @@ msgstr "Blochează" msgid "workspace.shape.menu.mask" msgstr "Maschează" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Lipeşte" @@ -5147,11 +5119,11 @@ msgstr "Drum" msgid "workspace.shape.menu.remove-flex" msgstr "Îndepărtați aspect flexibil" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Resetează suprascrierile" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Restaurați componenta principală" @@ -5159,15 +5131,15 @@ msgstr "Restaurați componenta principală" msgid "workspace.shape.menu.select-layer" msgstr "Selectați stratul" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Afişează" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Afișați în panoul de obiecte" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Afişează componenta principală" @@ -5180,6 +5152,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Setați ca miniatură" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Transformați în drum" @@ -5187,11 +5160,11 @@ msgstr "Transformați în drum" msgid "workspace.shape.menu.ungroup" msgstr "Degrupează" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Uniune" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Deblochează" @@ -5204,7 +5177,7 @@ msgstr "Demaschează" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Actualizați componentele principale" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Actualizaţi principala componentă" @@ -5216,11 +5189,11 @@ msgstr "Restrângeți bara laterală" msgid "workspace.sidebar.expand" msgstr "Extindeți bara laterală" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Istoric" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Layere" @@ -5260,7 +5233,7 @@ msgstr "Texte" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Atribute SVG importate" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Pagini" @@ -5268,7 +5241,7 @@ msgstr "Pagini" msgid "workspace.sitemap" msgstr "Harta site-ului" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Obiecte" @@ -5276,7 +5249,7 @@ msgstr "Obiecte" msgid "workspace.toolbar.color-palette" msgstr "Paletă de culori (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Comentarii (%s)" @@ -5466,19 +5439,19 @@ msgstr "Operaţiune terminată %s" msgid "workspace.undo.title" msgstr "Istoric" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Renunţă" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Mai multe informații" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Există actualizări în bibliotecile distribuite" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Actualizează" diff --git a/frontend/translations/ru.po b/frontend/translations/ru.po index 90025284f4..c0efd016ce 100644 --- a/frontend/translations/ru.po +++ b/frontend/translations/ru.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: The_BadUser \n" -"Language-Team: Russian " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Vint Prox \n" +"Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -179,7 +179,7 @@ msgstr "" "Я согласен с [условиями обслуживания](%s) и [политикой " "конфиденциальности](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Условия использования" @@ -202,7 +202,7 @@ msgstr "Рабочая эл. почта" msgid "branding-illustrations-marketing-pieces" msgstr "...брендинг, иллюстрации, маркетинговые материалы и т.д." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Опубликовать" @@ -274,7 +274,7 @@ msgstr "Поделиться прототипами" msgid "common.share-link.view-all" msgstr "Выбрать все" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Снять с публикации" @@ -397,7 +397,7 @@ msgstr "Токен не имеет срока действия" msgid "dashboard.add-file" msgstr "Добавить файл" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Добавить как общую библиотеку" @@ -405,31 +405,31 @@ msgstr "Добавить как общую библиотеку" msgid "dashboard.change-email" msgstr "Изменить эл. почту" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(копия)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Создать новую команду" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Закрепить эту версию" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Ваш Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Удалить команду" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Скачать файл Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Скачать стандартный файл (.svg + .json)" @@ -485,7 +485,7 @@ msgstr "Библиотек пока нет." msgid "dashboard.export-binary-multi" msgstr "Скачать файлы Penpot (.penpot) (%s)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Экспорт кадров в PDF" @@ -501,7 +501,7 @@ msgstr "Экспорт файлов Penpot (%s)" msgid "dashboard.export-multiple.selected" msgstr "Выбрано %s из %s элементов" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Экспорт" @@ -684,11 +684,11 @@ msgstr "Загрузка данных на сервер (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Загрузка файла: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Пригласить людей" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Покинуть команду" @@ -700,7 +700,7 @@ msgstr "Библиотеки и шаблоны" msgid "dashboard.libraries-and-templates.explore" msgstr "Узнайте больше о них и о том, как внести свой вклад" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Возникла проблема с импортом шаблона. Шаблон не был импортирован." @@ -732,7 +732,7 @@ msgstr "Перевести в другую команду" msgid "dashboard.new-file" msgstr "+ Новый файл" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Новый файл" @@ -740,7 +740,7 @@ msgstr "Новый файл" msgid "dashboard.new-project" msgstr "+ Новый проект" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Новый проект" @@ -748,11 +748,11 @@ msgstr "Новый проект" msgid "dashboard.no-matches-for" msgstr "Совпадений для “%s“ не найдено" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Закреплённые проекты будут здесь" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Уведомления" @@ -764,7 +764,7 @@ msgstr "Ваш адрес эл. почты был успешно обновлё msgid "dashboard.notifications.email-verified-successfully" msgstr "Ваш адрес эл. почты был успешно подтверждён" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Настройки уведомлений обновлены" @@ -772,11 +772,11 @@ msgstr "Настройки уведомлений обновлены" msgid "dashboard.notifications.password-saved" msgstr "Пароль успешно сохранён!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Просмотреть уведомления" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "Участников: %s" @@ -808,7 +808,7 @@ msgstr "Теперь вы владелец этой команды." msgid "dashboard.permissions-change.viewer" msgstr "Теперь вы наблюдатель в этой команде." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Закрепить/Открепить" @@ -841,7 +841,7 @@ msgstr "Снять статус общей библиотеки" msgid "dashboard.save-settings" msgstr "Сохранить настройки" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Поиск…" @@ -921,7 +921,7 @@ msgstr "Уведомления" msgid "dashboard.show-all-files" msgstr "Показать все файлы" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "История версий" @@ -945,7 +945,7 @@ msgstr[1] "Ваши файлы были успешно продублирова msgid "dashboard.success-duplicate-project" msgstr "Ваш проект продублирован" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Ваш файл успешно перемещён" @@ -957,15 +957,15 @@ msgstr "Ваши файлы успешно перемещены" msgid "dashboard.success-move-project" msgstr "Ваш проект перемещён" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "О команде" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Участники команды" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Командные проекты" @@ -981,7 +981,7 @@ msgstr "Результаты поиска" msgid "dashboard.type-something" msgstr "Введите для поиска" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Снять библиотеку с публикации" @@ -989,38 +989,38 @@ msgstr "Снять библиотеку с публикации" msgid "dashboard.update-settings" msgstr "Обновить настройки" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Активен" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Когда этот хук сработает, будут доставлены подробные сведения о событии" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Тип контента" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Создать вебхук" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Вебхук успешно создан." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Вебхуки - это простой способ уведомлять другие веб-сайты и приложения о тех " "или иных событиях в Penpot. Мы отправим POST-запрос на каждый из указанных " "вами URL-адресов." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Нажмите кнопку «Добавить вебхук», чтобы добавить его." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Вебхуки пока не созданы." @@ -1040,7 +1040,7 @@ msgstr "Эл. почта" msgid "dashboard.your-name" msgstr "Ваше имя" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Ваш Penpot" @@ -1056,11 +1056,11 @@ msgstr "Внимание" msgid "ds.component-subtitle" msgstr "Компоненты для обновления:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Отмена" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Oк" @@ -1112,11 +1112,11 @@ msgstr "Нельзя указывать в качестве пароля адр msgid "errors.email-domain-not-allowed" msgstr "Домен не разрешён" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Эл. почта «%s» постоянно недоступна." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "Эл. почта «%s» была отмечена как спам или постоянно недоступна." @@ -1137,7 +1137,7 @@ msgstr "" "функциями файла, который вы пытаетесь открыть. Прежде чем файл можно будет " "открыть, необходимо применить миграцию для «%s»." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Что-то пошло не так." @@ -1165,7 +1165,7 @@ msgstr "Возможно, это приглашение отменено или msgid "errors.ldap-disabled" msgstr "Вход c LDAP отключён." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Вы достигли указанного значения «%s». Обратитесь в службу поддержки." @@ -1181,7 +1181,7 @@ msgstr "Формат медиа не соответует расширению msgid "errors.media-type-not-allowed" msgstr "Неверное медиа." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "Невозможно пригласить адресата с недоступным адресом электронной почты." @@ -1203,7 +1203,7 @@ msgstr "Недопустимые данные в буфере обмена" msgid "errors.profile-blocked" msgstr "Профиль заблокирован" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "Ваш адрес электронной почты не доступен." @@ -1215,17 +1215,17 @@ msgstr "Регистрация сейчас отключена." msgid "errors.team-feature-mismatch" msgstr "Обнаружена несовместимая функция «%s»" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Недостаточно участников, чтобы покинуть команду, вероятно, вы хотите её " "удалить." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Участник, которого вы пытаетесь назначить, не существует." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Нужно переназначить роль владельца перед тем, как покинуть команду." @@ -1245,31 +1245,31 @@ msgstr "Ошибка проверки" msgid "errors.version-not-supported" msgstr "Файл имеет несовместимый номер версии" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Ошибка подключения, URL недоступен" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL-адрес не проходит проверку." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Последняя доставка не удалась." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Ошибка при проверке SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Время вышло" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Неожиданная ошибка при проверке" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Неожиданный статус %s" @@ -1333,19 +1333,19 @@ msgstr "Произошла ошибка" msgid "inspect.attributes.blur" msgstr "Размытие" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Значение" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1353,7 +1353,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Заливка" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Скачать оригинал" @@ -1447,81 +1447,84 @@ msgstr "Сплошная" msgid "inspect.attributes.stroke.width" msgstr "Толщина" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Текст" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Гарнитура" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Размер" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Шрифт" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Толщина шрифта" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Трекинг" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Интерлиньяж" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Оформление" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Нет" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Подчёркнутый" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Регистр" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Регистр Заголовка" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Нижний регистр" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Какой есть" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Не установлено" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Верхний регистр" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Если вы хотите узнать больше о осмотре дизайна, посетите справочный центр " "Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Подробнее об осмотре" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Выберите фигуру, доску или группу, чтобы просмотреть свойства и код" @@ -1581,7 +1584,7 @@ msgstr "Текст" msgid "inspect.tabs.info" msgstr "Информация" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Сочетания клавиш" @@ -1593,7 +1596,7 @@ msgstr "Принять" msgid "labels.access-tokens" msgstr "Токены доступа" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Действующий" @@ -1601,7 +1604,7 @@ msgstr "Действующий" msgid "labels.add-custom-font" msgstr "Добавить произвольный шрифт" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Администратор" @@ -1609,7 +1612,7 @@ msgstr "Администратор" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Все" @@ -1630,7 +1633,7 @@ msgstr "Возможны технические работы. Пожалуйст msgid "labels.bad-gateway.main-message" msgstr "Bad Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Отмена" @@ -1638,15 +1641,15 @@ msgstr "Отмена" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Закрыть" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Комментарии" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Сообщество" @@ -1654,7 +1657,7 @@ msgstr "Сообщество" msgid "labels.confirm-password" msgstr "Подтвердите пароль" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Продолжить" @@ -1666,11 +1669,11 @@ msgstr "Продолжить с" msgid "labels.continue-with-penpot" msgstr "Вы можете продолжить с аккаунтом Penpot" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Копировать ссылку" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Создать" @@ -1690,7 +1693,7 @@ msgstr "Произвольные шрифты" msgid "labels.dashboard" msgstr "Панель управления" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Удалить" @@ -1702,7 +1705,7 @@ msgstr "Удалить комментарий" msgid "labels.delete-comment-thread" msgstr "Удалить обсуждение" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Удалить приглашение" @@ -1719,15 +1722,15 @@ msgstr "Разработка" msgid "labels.director" msgstr "Директор" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Отказаться" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Черновики" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Редактировать" @@ -1735,7 +1738,7 @@ msgstr "Редактировать" msgid "labels.edit-file" msgstr "Редактировать" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Редактор" @@ -1744,11 +1747,11 @@ msgstr "Редактор" msgid "labels.event" msgstr "Событие" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Истекло" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Экспорт" @@ -1776,7 +1779,7 @@ msgstr "Поставщики шрифтов" msgid "labels.font-variants" msgstr "Начертания" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Шрифты" @@ -1790,11 +1793,11 @@ msgstr "Генеральный директор или основатель" msgid "labels.freelancer" msgstr "Фрилансер" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Репозиторий на Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Оставить отзыв" @@ -1806,15 +1809,15 @@ msgstr "Назад" msgid "labels.graphic-design" msgstr "Графический дизайн" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Помощь" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Скрыть решённые комментарии" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Недействующий" @@ -1834,7 +1837,7 @@ msgstr "Внутренняя ошибка" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Приглашения" @@ -1842,7 +1845,7 @@ msgstr "Приглашения" msgid "labels.language" msgstr "Язык" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Библиотеки и шаблоны" @@ -1850,7 +1853,7 @@ msgstr "Библиотеки и шаблоны" msgid "labels.log-or-sign" msgstr "Войти или зарегистрироваться" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Выйти" @@ -1858,11 +1861,11 @@ msgstr "Выйти" msgid "labels.marketing" msgstr "Маркетинг" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Участник" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Участники" @@ -1870,17 +1873,17 @@ msgstr "Участники" msgid "labels.new-password" msgstr "Новый пароль" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Далее" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "" "Вы ничего не пропустили! Здесь будут появляться уведомления о новых " "комментариях." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Нет ожидающих приглашений." @@ -1897,7 +1900,7 @@ msgstr "Ой!" msgid "labels.notifications" msgstr "Уведомления" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "Файл" @@ -1909,7 +1912,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "Кадр" msgstr[1] "Кадры (%s)" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "Проект" @@ -1936,7 +1939,7 @@ msgstr "Другое (укажите)" msgid "labels.other-short" msgstr "Другое" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Владелец" @@ -1944,7 +1947,7 @@ msgstr "Владелец" msgid "labels.password" msgstr "Пароль" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Ожидание" @@ -1964,11 +1967,11 @@ msgstr "Управление продуктом" msgid "labels.profile" msgstr "Профиль" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Проекты" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Примечания к выпуску" @@ -1982,11 +1985,11 @@ msgstr "Перезагрузить файл" msgid "labels.remove" msgstr "Удалить" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Удалить участника" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Переименовать" @@ -1994,7 +1997,7 @@ msgstr "Переименовать" msgid "labels.rename-team" msgstr "Переименовать команду" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Снова отправить приглашение" @@ -2002,15 +2005,15 @@ msgstr "Снова отправить приглашение" msgid "labels.retry" msgstr "Заново" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Роль" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Сохранить" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Поиск" @@ -2038,7 +2041,7 @@ msgstr "Мы проводим диагностику наших систем." msgid "labels.service-unavailable.main-message" msgstr "Сервис недоступен" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Настройки" @@ -2050,11 +2053,11 @@ msgstr "Поделиться" msgid "labels.share-prototype" msgstr "Поделиться ссылкой" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Библиотеки" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Все комментарии" @@ -2062,11 +2065,11 @@ msgstr "Все комментарии" msgid "labels.show-comments-list" msgstr "Показать список комментариев" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Показать только упоминания" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Только мои" @@ -2078,7 +2081,7 @@ msgstr "Sketch" msgid "labels.start" msgstr "Начать" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Состояние" @@ -2096,7 +2099,7 @@ msgstr "Руководитель группы" msgid "labels.team-member" msgstr "Член команды" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Руководства" @@ -2124,15 +2127,15 @@ msgstr "Загрузить произвольные шрифты" msgid "labels.uploading" msgstr "Загрузка…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Только просмотр" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Наблюдатель" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Вебхуки" @@ -2140,11 +2143,11 @@ msgstr "Вебхуки" msgid "labels.write-new-comment" msgstr "Написать комментарий" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(вы)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Ваш аккаунт" @@ -2153,23 +2156,23 @@ msgstr "Ваш аккаунт" msgid "labels.youtube" msgstr "YouTube" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Выбрать изображение" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Градиент" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Изображение" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "изобр." -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Сохранять соотношение сторон" @@ -2187,7 +2190,7 @@ msgstr "Загрузка изображения…" msgid "media.radial" msgstr "Радиальный" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Сплошной" @@ -2262,19 +2265,19 @@ msgstr "Создать токен" msgid "modals.create-access-token.title" msgstr "Сгенерировать токен доступа" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Создать вебхук" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Создать вебхук" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Ссылка полезной нагрузки" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://пример.com/postreceive" @@ -2320,11 +2323,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Удалить обсуждение" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Вы уверены, что хотите удалить эту аннотацию?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Удалить аннотацию" @@ -2372,11 +2375,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Удаление шрифта" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Вы уверены, что хотите удалить эту страницу?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Удаление страницы" @@ -2422,29 +2425,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Удаление файла" msgstr[1] "Удаление файлов" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Удалить команду" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Вы уверены, что хотите удалить эту команду? Все проекты и файлы этой " "команды также будут безвозвратно удалены." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Удаление команды" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Удалить участника" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Вы уверены, что хотите удалить этого участника из команды?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Удалить участника команды" @@ -2458,51 +2461,51 @@ msgstr[1] "" "Ресурсы, которые уже использовались в этих файлах, останутся там (дизайн не " "будет нарушен)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Удалить вебхук" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Вы уверены, что хотите удалить этот вебхук?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Удаление вебхука" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Изменить вебхук" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Изменить вебхук" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Отправить приглашение" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Эл. почты, разделённые запятой" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Некоторые электронные письма отправлены от текущих членов команды. Их " "приглашения не будут отправлены." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Пригласить участников в команду" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Так как вы единственный участник этой команды, она будет удалена вместе с " "проектами и файлами." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Вы уверены, что хотите покинуть команду %s?" @@ -2530,15 +2533,15 @@ msgstr "Выберите участника для назначения" msgid "modals.leave-and-reassign.title" msgstr "Прежде чем вы уйдёте" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Покинуть команду" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Вы уверены, что хотите покинуть эту команду?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Выход из команды" @@ -2560,39 +2563,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Переместить библиотеку" msgstr[1] "Переместить библиотеки" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Величина сдвига" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Передача прав собственности" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Если вы передадите права собственности, вы измените свою роль на " "администратора, потеряв некоторые права доступа в этой команде. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Вы текущий владелец этой команды. Вы уверены, что хотите сделать %s новым " "владельцем команды?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Новый владелец команды" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Опубликовать" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Ваша библиотека пуста. Вы уверены, что хотите опубликовать её?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Опубликовать пустую библиотеку" @@ -2647,21 +2650,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Обновить компоненты в общей библиотеке" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Обновить" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Отменить" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Вы собираетесь обновить компонент в общей библиотеке. Это может повлиять на " "другие файлы, которые её используют." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Обновить компонент в общей библиотеке" @@ -2675,11 +2678,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Доступна новая версия, обновите страницу" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Приглашение успешно отправлено" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Ссылка на приглашение скопирована" @@ -2831,7 +2834,7 @@ msgstr "" "Никого не забудьте. Разработчики, дизайнеры, менеджеры... разнообразие " "развивает :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Пригласить с ролью:" @@ -3036,653 +3039,637 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Перейти к входу" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Отсоединить" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Смешаный" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Выбрать элементы, использующие этот стиль" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Основное" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Панель управления" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Просмотрщик" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Рабочая область" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Выравнивание" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Редактировать" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Общее" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Общее" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Главное меню" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Изменить слои" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Навигация" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Навигация" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Навигация" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Панели" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Пути" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Фигуры" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Тексты" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Инструменты" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Увеличение" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Увеличение" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Комментарии" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Добавить узел" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Выровнять по нижнему краю" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Выровнять по центру" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Выровнять по центру по горизонтали" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Выровнять по ширине" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Выровнять по левому краю" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Выровнять по правому краю" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Выровнять по верхнему краю" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Выровнять по центру по вертикали" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Создать доску из выбора" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Переключить толщину" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Логическая разница" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Логическое исключение" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Логическое пересечение" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Логическое объединение" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Переместить на задний план" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Переместить назад" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Перенести вперёд" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Вынести на передний план" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Очистить отмену" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Скопировать" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Создать новый" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Вырезать" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Отдалить" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Удалить" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Удалить узел" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Отсоединить компонент" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Кривая" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Эллипс" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Доска" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Нарисовать контур" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Контур" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Прямоугольник" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Текст" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Дублировать" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Отмена" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Экспорт фигур" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Увеличить, чтобы вместить все" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Отразить по горизонтали" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Отразить по вертикали" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Уменьшить размер шрифта" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Увеличить размер шрифта" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Перейти к черновикам" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Перейти к общим библиотекам" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Поиск" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Группа" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Распределить горизонтально" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Показать/скрыть интерфейс" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Приблизить" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Вставить изображение" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Переключить курсив" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Соединение узлов" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Уменьшить межбуквенный интервал" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Увеличить междустрочный интервал" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Уменьшить высоту строки" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Увеличить высоту строки" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Переключить междустрочность" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Сделать угол" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Сделать изгиб" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Маска" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Объединить узлы" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Переместить" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Быстрое перемещение вниз" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Быстрое перемещение влево" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Быстрое перемещение вправо" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Быстрое перемещение вверх" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Переместить узел" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Переместить вниз" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Переместить влево" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Переместить вправо" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Переместить вверх" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Следующая доска" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Ярлыки не найдены" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Установить непрозрачность на 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Установить непрозрачность на 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Установить непрозрачность на 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Установить непрозрачность на 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Установить непрозрачность на 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Установить непрозрачность на 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Установить непрозрачность на 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Установить непрозрачность на 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Установить непрозрачность на 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Установить непрозрачность на 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Выбор цвета" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Перейти в раздел комментариев" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Перейти в панель управления" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Перейти в раздел осмотра" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Перейти в раздел взаимодействия" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Перейти в раздел взаимодействия" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Перейти к рабочей области" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " или " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Вставить" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Предыдущая доска" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Вернуть" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Сбросить масштаб" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Масштаб" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Поиск ярлыков" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Выбрать все" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Выбрать следующий слой" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Выбрать родительский слой" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Выбрать предыдущий слой" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Отдельные узлы" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Показать/скрыть пиксельную сетку" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Показать/скрыть горячие клавиши" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Привязать к узлам" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Привязать к пиксельной сетке" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Начать редактирование" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Начать измерение" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Остановить измерение" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Установить миниатюры" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Горячие клавиши" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Переключить динамическое выравнивание" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Переключить ресурсы" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Переключить палитру цветов" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Переключить режим фокуса" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Переключить полноэкранный режим" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Показать/скрыть направляющие" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Переключить историю" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Переключить слои" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Добавить/удалить макет гибкости" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Добавить/удалить макет сетки" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Запереть/Отпереть" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Запереть пропорции" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Показать/скрыть линейки" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Привязать к направляющим" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Привязать к направляющим линейки" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Переключить текстовую палитру" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Сменить тему" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Показать/скрыть" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Переключить стиль масштабирования" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Переключить подчёркивание" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Отменить" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Разгруппировать" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Убрать маску" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Распределить вертикально" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Уменьшить зум-объектив" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Увеличить зум-объектив" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Приблизить выбранное" @@ -3738,19 +3725,19 @@ msgstr "Пароль - Penpot" msgid "title.settings.profile" msgstr "Профиль - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Приглашения - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Участники - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Настройки - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Вебхуки - %s - Penpot" @@ -3822,39 +3809,39 @@ msgstr "Показывать взаимодействия по клику" msgid "viewer.header.sitemap" msgstr "План сайта" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Последняя доставка прошла успешно." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Выровнять по горизонтали (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Распределить горизонтальное пространство (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Выровнять по левому краю (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Выровнять по правому краю (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Выровнять по нижнему краю (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Выровнять по вертикали (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Распределить вертикальное пространство (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Выровнять по верхнему краю (%s)" @@ -3863,33 +3850,33 @@ msgstr "Выровнять по верхнему краю (%s)" msgid "workspace.assets.assets" msgstr "Ресурсы" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Все ресурсы" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Цвета" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Компоненты" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Создать группу" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "" "Вашим элементам будет автоматически присвоено название «название " "группы/название элемента»" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Удалить" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Дублировать" @@ -3897,11 +3884,11 @@ msgstr "Дублировать" msgid "workspace.assets.duplicate-main" msgstr "Дублировать главное" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Редактировать" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Фильтр" @@ -3910,15 +3897,15 @@ msgstr "Фильтр" msgid "workspace.assets.graphics" msgstr "Графика" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Группа" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Имя группы" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "локальная библиотека" @@ -3930,15 +3917,15 @@ msgstr "Ресурсы не найдены" msgid "workspace.assets.open-library" msgstr "Открыть файл библиотеки" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Переименовать" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Переименовать группу" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Поиск ресурсов" @@ -3954,17 +3941,17 @@ msgstr[1] "Выбраны ресурсы (%s)" msgid "workspace.assets.shared-library" msgstr "Общая библиотека" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 компонент" msgstr[1] "%s компонентов" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Сортировка" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Типографика" @@ -3989,7 +3976,7 @@ msgstr "Кернинг" msgid "workspace.assets.typography.line-height" msgstr "Интерлиньяж" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4001,59 +3988,59 @@ msgstr "Стиль текста" msgid "workspace.assets.typography.text-transform" msgstr "Регистр" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Разгруппировать" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Создать область" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Создать доску" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Объединить ячейки" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Добавить 1 столбец справа" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Добавить 1 столбец слева" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Удалить столбец" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Удалить столбец и фигуры" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Дублировать столбец" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Добавить 1 строку ниже" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Добавить 1 строку выше" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Удалить строку" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Удалить строку и фигуры" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Дублировать строку" @@ -4061,7 +4048,7 @@ msgstr "Дублировать строку" msgid "workspace.focus.focus-mode" msgstr "Режим фокусировки" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Фокусировка выключена" @@ -4081,11 +4068,11 @@ msgstr "Линейный градиент" msgid "workspace.gradients.radial" msgstr "Радиальный градиент" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Отключить активное выравнивание" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Отключить пропорциональное масштабирование" @@ -4094,23 +4081,23 @@ msgstr "Отключить пропорциональное масштабиро msgid "workspace.header.menu.disable-scale-text" msgstr "Отключить масштабирование текста" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Отключить привязку к направляющим" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Отключить привязку к пикселю" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Отключить привязку к направляющим линейки" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Включить активное выравнивание" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Включить пропорциональный масштаб" @@ -4119,51 +4106,51 @@ msgstr "Включить пропорциональный масштаб" msgid "workspace.header.menu.enable-scale-text" msgstr "Включить масштабирование текста" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Привязка к направляющим" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Включить привязку к пикселю" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Привязка к направляющим линейки" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Скрыть имена кадров" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Скрыть направляющие" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Скрыть палитру цветов" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Скрыть сетку пикселей" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Скрыть линейки" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Скрыть палитру шрифтов" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Изменить" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Файл" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Помощь и информация" @@ -4172,59 +4159,59 @@ msgstr "Помощь и информация" msgid "workspace.header.menu.option.power-up" msgstr "Расширьте свой план" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Предпочтения" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Вид" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Вернуть" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Выбрать все" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Показать имена кадров" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Показать направляющие" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Показать палитру цветов" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Показать пиксельную сетку" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Показать линейки" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Показать палитру шрифтов" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Переключить на тёмную тему" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Переключить на светлую тему" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Отменить" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Сброс" @@ -4245,11 +4232,11 @@ msgstr "Сохранение" msgid "workspace.header.unsaved" msgstr "Есть несохранённые изменения" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Открыть предпросмотр (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Масштаб" @@ -4261,7 +4248,7 @@ msgstr "Заполнение - Масштаб заполнения" msgid "workspace.header.zoom-fit" msgstr "Подогнать - масштабировать до необходимого размера" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Масштабировать, чтобы всё вместилось" @@ -4269,19 +4256,19 @@ msgstr "Масштабировать, чтобы всё вместилось" msgid "workspace.header.zoom-full-screen" msgstr "На весь экран" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Масштабировать до выбранного" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Изменить сетку" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Выход" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Настроить внутренний отступ по отдельности" @@ -4297,7 +4284,7 @@ msgstr "Готово" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Разместить" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Размещение макета сетки" @@ -4306,10 +4293,6 @@ msgstr "Размещение макета сетки" msgid "workspace.libraries.add" msgstr "Добавить" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s цветов" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "В вашей библиотеке ещё нет цветовых стилей" @@ -4336,31 +4319,23 @@ msgstr "Недавние цвета" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Дополнительный цвет RGB" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Сохранить стиль цвета" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s компонентов" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Библиотека файлов" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s графики" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "БИБЛИОТЕКИ В ЭТОМ ФАЙЛЕ" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "БИБЛИОТЕКИ" @@ -4369,75 +4344,71 @@ msgstr "БИБЛИОТЕКИ" msgid "workspace.libraries.library" msgstr "БИБЛИОТЕКА" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "ОБНОВЛЕНИЯ БИБЛИОТЕКИ" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Загрузка…" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Нет общих библиотек, требующих обновления" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Совпадений для \"%s\" не найдено" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Искать общие библиотеки" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "ОБЩИЕ БИБЛИОТЕКИ" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Подключить библиотеку" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Несколько типографик" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Отвязать все типографики" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "Типографики (%s)" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Отключить библиотеку" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Обновить" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "смотреть все изменения" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ОБНОВЛЕНИЯ" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Нажмите кнопку \"+\" для добавления интерактива." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Размытие" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Групповое размытие" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Выборка размытия" @@ -4445,39 +4416,39 @@ msgstr "Выборка размытия" msgid "workspace.options.canvas-background" msgstr "Фон холста" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Зажать содержимое" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Компонент" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Аннотация" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Копировать" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Создать аннотацию" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Изменить аннотацию" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Главный" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Заменить компонент" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "В этой библиотеке ещё нет ресурсов" @@ -4521,7 +4492,7 @@ msgstr "Верх" msgid "workspace.options.constraints.topbottom" msgstr "Верх и низ" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Дизайн" @@ -4534,13 +4505,13 @@ msgstr "Экспорт" msgid "workspace.options.export-multiple" msgstr "Экспорт выбранного" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Экспорт 1 элемента" msgstr[1] "Экспорт %s элементов" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Суффикс" @@ -4548,7 +4519,7 @@ msgstr "Суффикс" msgid "workspace.options.exporting-complete" msgstr "Экспорт завершён" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Экспортирование…" @@ -4560,15 +4531,15 @@ msgstr "Экспорт не удался" msgid "workspace.options.exporting-object-slow" msgstr "Неожиданно медленный экспорт" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Заливка" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Добавить начало потока" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Поток" @@ -4577,15 +4548,15 @@ msgstr "Поток" msgid "workspace.options.flows.flow-start" msgstr "Начало потока" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Начала потоков" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Авто" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Колонки" @@ -4594,7 +4565,7 @@ msgstr "Колонки" msgid "workspace.options.grid.grid-title" msgstr "Сетка" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Цвет" @@ -4603,15 +4574,15 @@ msgstr "Цвет" msgid "workspace.options.grid.params.columns" msgstr "Колонки" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Желоб" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Высота" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Поле" @@ -4620,7 +4591,7 @@ msgstr "Поле" msgid "workspace.options.grid.params.rows" msgstr "Строки" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Установить по умолчанию" @@ -4634,147 +4605,147 @@ msgstr "Размер" msgid "workspace.options.grid.params.type" msgstr "Тип" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Низ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Центр" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Левый" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Правый" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Растягивать" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Верх" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Использовать значение по умолчанию" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Строки" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Квадрат" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Заливка для группы" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Обводка для группы" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Направляющие" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Высота" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Осмотр" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Действие" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "После задержки" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Анимация" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Растворение" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Ничего" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Толчок" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Слайд" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "авто" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Добавить фоновое наложение" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Закрывать при нажатии снаружи" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Закрыть наложение" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Закрыть наложение: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Задержка" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Место назначения" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Длительность" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Поведение" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ease" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Ease in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Ease in out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Ease out" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Линейно" @@ -4783,47 +4754,47 @@ msgstr "Линейно" msgid "workspace.options.interaction-in" msgstr "Внутри" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Наведение мыши" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Отведение мыши" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "мс" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Перейти к" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Перейти к: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(не задано)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Эффект смещения" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "При клике" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Открыть наложение" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Открыть наложение: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Открыть ссылку" @@ -4832,147 +4803,147 @@ msgstr "Открыть ссылку" msgid "workspace.options.interaction-out" msgstr "Снаружи" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Снизу по центру" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Снизу слева" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Снизу справа" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "По центру" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Вручную" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Сверху по центру" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Сверху слева" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Сверху справа" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Позиция" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Сохранить положение прокрутки" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Предыдущий экран" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Относительно" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "само" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Переключить наложение" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Переключить наложение: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Триггер" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "Ссылка" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "При наведении" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "При нажатии" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Интерактив" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Цвет" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Затемнение основы" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Осветление основы" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Затемнение" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Разница" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Исключение" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Жёсткий свет" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Цветовой тон" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Замена светлым" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Яркость" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Умножение" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Нормально" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Наложение" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Насыщенность" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Экран" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Мягкий свет" @@ -4996,19 +4967,19 @@ msgstr "Выделенные слои" msgid "workspace.options.layout-item.advanced-ops" msgstr "Дополнительные параметры" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Макс. высота" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Макс. ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Мин. высота" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Мин. ширина" @@ -5122,15 +5093,15 @@ msgstr "пространство между" msgid "workspace.options.layout.top" msgstr "Сверху" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Больше цветов" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Больше цветов библиотеки" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Непрозрачность" @@ -5139,27 +5110,27 @@ msgstr "Непрозрачность" msgid "workspace.options.position" msgstr "Позиция" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Прототип" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Радиус" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Снизу слева" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Снизу справа" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Сверху слева" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Сверху справа" @@ -5171,7 +5142,7 @@ msgstr "Последние" msgid "workspace.options.retry" msgstr "Повторить" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Вращение" @@ -5179,27 +5150,27 @@ msgstr "Вращение" msgid "workspace.options.search-font" msgstr "Искать шрифт" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Выберите фигуру, кадр или группу для соединения с другим кадром." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Выбранные цвета" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Заливка выбранного" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Обводка выбранного" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Размытие" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Цвет тени" @@ -5211,47 +5182,48 @@ msgstr "Отбрасывание тени" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Внутренняя тень" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Распространение" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Тень" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Групповая тень" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Выборочные тени" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Показать в экспорте" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Показать в режиме просмотра" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Размер" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Предустановки размеров" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Обводка" @@ -5260,7 +5232,7 @@ msgstr "Обводка" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Круговой маркер" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Круг" @@ -5269,7 +5241,7 @@ msgstr "Круг" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Алмазный маркер" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Алмаз" @@ -5278,19 +5250,19 @@ msgstr "Алмаз" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Линия со стрелкой" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Стрелка" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Ничего" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Круг" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Квадрат" @@ -5299,7 +5271,7 @@ msgstr "Квадрат" msgid "workspace.options.stroke-cap.square-marker" msgstr "Квадратный маркер" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Прямоугольник" @@ -5308,75 +5280,75 @@ msgstr "Прямоугольник" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Треугольная стрела" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Треугольник" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Цвет обводки" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Толщина обводки" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Центр" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Пунктирный" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Точечный" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Внутрь" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Смешаный" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Наружу" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Сплошной" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Выровнять низ" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Выравнивание по центру" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Выравнивание по верхнему краю" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "Слева направо" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "Справа налево" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Автовысота" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Автоширина" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Фиксированно" @@ -5398,35 +5370,35 @@ msgstr "Нижний регистр" msgid "workspace.options.text-options.none" msgstr "Не задано" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Перечеркнутый (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Выравнивание по центру" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Выравнивание по ширине" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Выравнивание по левому краю" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Выравнивание по правому краю" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Текст" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Текст группы" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Выбранный текст" @@ -5435,7 +5407,7 @@ msgstr "Выбранный текст" msgid "workspace.options.text-options.titlecase" msgstr "Слова с заглавной буквы" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Подчеркнутый (%s)" @@ -5444,19 +5416,19 @@ msgstr "Подчеркнутый (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Верхний регистр" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Нажмите кнопку воспроизведения вверху для показа прототипа." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Ось X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Ось Y" @@ -5500,48 +5472,48 @@ msgstr "Разделить узлы (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Прилипать узлами (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Открыть" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Откройте для себя [больше плагинов](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Плагины ещё не установлены" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Манифест плагина неверен." -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Плагин не существует или его URL-адрес неверен." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Установить" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Установленные плагины" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Менеджер плагинов" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Плагины" -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Список плагинов" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Введите URL-адрес плагина" @@ -5549,7 +5521,7 @@ msgstr "Введите URL-адрес плагина" msgid "workspace.plugins.success" msgstr "Плагин загружен правильно." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Плагины" @@ -5573,7 +5545,7 @@ msgstr "Перенести назад" msgid "workspace.shape.menu.copy" msgstr "Скопировать" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Создать аннотацию" @@ -5581,11 +5553,11 @@ msgstr "Создать аннотацию" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Выделенное в кадр" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Создать компонент" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Создать несколько компонентов" @@ -5593,7 +5565,7 @@ msgstr "Создать несколько компонентов" msgid "workspace.shape.menu.cut" msgstr "Вырезать" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Удалить" @@ -5601,15 +5573,15 @@ msgstr "Удалить" msgid "workspace.shape.menu.delete-flow-start" msgstr "Удалить начало потока" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Отсоединить экземпляр" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Отсоединить экземпляры" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Разница" @@ -5621,11 +5593,11 @@ msgstr "Дублировать" msgid "workspace.shape.menu.edit" msgstr "Редактировать" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Исключить" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Flatten" @@ -5658,19 +5630,19 @@ msgstr "Перейти к основному файлу компонента" msgid "workspace.shape.menu.group" msgstr "Группа" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Скрыть" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Показать/скрыть UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Пересечь" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Заблокировать" @@ -5678,7 +5650,7 @@ msgstr "Заблокировать" msgid "workspace.shape.menu.mask" msgstr "Маска" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Вставить" @@ -5694,11 +5666,11 @@ msgstr "Удалить макет гибкости" msgid "workspace.shape.menu.remove-grid" msgstr "Удалить макет сетки" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Сбросить переопределения" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Восстановить основной компонент" @@ -5706,15 +5678,15 @@ msgstr "Восстановить основной компонент" msgid "workspace.shape.menu.select-layer" msgstr "Выбрать слой" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Показать" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Показать на панели ресурсов" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Показать основной компонент" @@ -5727,6 +5699,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Сделать миниатюрой" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Преобразовать в контур" @@ -5734,11 +5707,11 @@ msgstr "Преобразовать в контур" msgid "workspace.shape.menu.ungroup" msgstr "Разгруппировать" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Суммировать" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Paзблокировать" @@ -5751,7 +5724,7 @@ msgstr "Убрать маску" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Обновить основные компоненты" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Обновить основной компонент" @@ -5763,11 +5736,11 @@ msgstr "Свернуть боковую панель" msgid "workspace.sidebar.expand" msgstr "Расширить боковую панель" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "История" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Слои" @@ -5807,7 +5780,7 @@ msgstr "Тексты" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Импортированные атрибуты SVG" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Страницы" @@ -5819,7 +5792,7 @@ msgstr "Карта сайта" msgid "workspace.tokens.save-theme" msgstr "Сохранить тему" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Ресурсы" @@ -5827,7 +5800,7 @@ msgstr "Ресурсы" msgid "workspace.toolbar.color-palette" msgstr "Палитра цветов (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Комментарии (%s)" @@ -6030,19 +6003,19 @@ msgstr "Работа над %s" msgid "workspace.undo.title" msgstr "История" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Отклонить" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Дополнительная информация" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Обнаружены обновления общих библиотек" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Обновить" @@ -6050,11 +6023,11 @@ msgstr "Обновить" msgid "workspace.versions.button.save" msgstr "Сохранить версию" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Действия" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "История" diff --git a/frontend/translations/sr.po b/frontend/translations/sr.po index 385d4a0329..eb12100a90 100644 --- a/frontend/translations/sr.po +++ b/frontend/translations/sr.po @@ -1,16 +1,17 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Црнобог <68vuletic@gmail.com>\n" -"Language-Team: Serbian " -"\n" +"Language-Team: Serbian \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.13-dev\n" +"Plural-Forms: nplurals=3; plural=" +"(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? " +"1 : 2);\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -176,7 +177,7 @@ msgstr "Решење отвореног кода за дизајн и израд msgid "auth.terms-and-privacy-agreement" msgstr "Слажем се са [условима коришћења](%s) и [политиком приватности](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Услови коришћења" @@ -199,7 +200,7 @@ msgstr "Радна е-пошта" msgid "branding-illustrations-marketing-pieces" msgstr "...брендирање, илустрације, маркетиншки комади, итд." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Објави" @@ -272,7 +273,7 @@ msgstr "Дели прототипе" msgid "common.share-link.view-all" msgstr "Изабери све" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Опозови објављивање" @@ -391,7 +392,7 @@ msgstr "Токен ће истећи на %s" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "Токен нема датум истека" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Додај као дељену библиотеку" @@ -399,27 +400,27 @@ msgstr "Додај као дељену библиотеку" msgid "dashboard.change-email" msgstr "Промените е-пошту" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(копија)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Направите нови тим" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Ваш Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Избришите тим" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Преузмите Penpot датотеку (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Преузмите стандардну датотеку (.svg + .json)" @@ -435,7 +436,7 @@ msgstr "Дуплирај %s датотека" msgid "dashboard.export-binary-multi" msgstr "Преузмите % Penpot датотека (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Извезите табле као PDF" @@ -451,7 +452,7 @@ msgstr "Извези Penpot %s датотека" msgid "dashboard.export-multiple.selected" msgstr "%s од %s елемената изабрано" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Извези" @@ -631,11 +632,11 @@ msgstr "Отпремање података на сервер (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Отпремање датотеке: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Позовите људе" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Напустите тим" @@ -647,7 +648,7 @@ msgstr "Библиотеке и шаблони" msgid "dashboard.libraries-and-templates.explore" msgstr "Истражите више њих и знајте како да допринесете" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Дошло је до проблема при увозу шаблона. Шаблон није увезен." @@ -679,7 +680,7 @@ msgstr "Премести у други тим" msgid "dashboard.new-file" msgstr "+ Нова датотека" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Нова датотека" @@ -687,7 +688,7 @@ msgstr "Нова датотека" msgid "dashboard.new-project" msgstr "+ Нови пројекат" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Нови пројекат" @@ -695,7 +696,7 @@ msgstr "Нови пројекат" msgid "dashboard.no-matches-for" msgstr "Нема подударања за \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Закачени пројекти ће се појавити овде" @@ -711,7 +712,7 @@ msgstr "Ваша адреса е-поште је успешно верифико msgid "dashboard.notifications.password-saved" msgstr "Лозинка је успешно сачувана!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s чланова" @@ -727,7 +728,7 @@ msgstr "Опције" msgid "dashboard.password-change" msgstr "Промените лозинку" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Прикачи/Откачи" @@ -748,7 +749,7 @@ msgstr "Уклони као дељену библиотеку" msgid "dashboard.save-settings" msgstr "Сачувај подешавања" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Претражи…" @@ -790,7 +791,7 @@ msgstr[2] "Ваше датотеке су успешно дуплиране" msgid "dashboard.success-duplicate-project" msgstr "Ваш пројекат је успешно дуплиран" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Ваша датотека је успешно премештена" @@ -802,15 +803,15 @@ msgstr "Ваше датотеке су успешно премештене" msgid "dashboard.success-move-project" msgstr "Ваш пројекат је успешно премештен" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Информације о тиму" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Чланови тима" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Тимски пројекти" @@ -826,7 +827,7 @@ msgstr "Резултати претраге" msgid "dashboard.type-something" msgstr "Унесите за резултате претраге" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Опозови објављивање библиотеке" @@ -834,38 +835,38 @@ msgstr "Опозови објављивање библиотеке" msgid "dashboard.update-settings" msgstr "Ажурирајте подешавања" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Је активно" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Када се ова кука покрене биће испоручени детаљи догађаја" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Тип садржаја" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Креирајте веб-куку" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Веб-кука је успешно креирана." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Веб-куке су једноставан начин да омогућите другим веб-сајтовима и " "апликацијама да буду обавештени када се одређени догађаји догоде у " "Penpot-у. Послаћемо POST захтев на сваку од URL адреса које наведете." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Притисните дугме „Додај веб-куку“ да бисте је додали." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "До сада није направљена ниједана веб-кука." @@ -885,7 +886,7 @@ msgstr "Е-пошта" msgid "dashboard.your-name" msgstr "Ваше име" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Ваш Penpot" @@ -901,11 +902,11 @@ msgstr "Пажња" msgid "ds.component-subtitle" msgstr "Компоненте за ажурирање:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Откажите" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Уреду" @@ -957,11 +958,11 @@ msgstr "Не можете да користите своју е-пошту ка msgid "errors.email-domain-not-allowed" msgstr "Домен није дозвољен" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Е-пошта «%s» има много сталних извештаја о одбијању." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "Е-пошта «%s» је пријављеа као непожељана или трајно одбијена." @@ -982,7 +983,7 @@ msgstr "" "датотеке коју покушавате да отворите. Миграције за \"%s\" морају бити " "примењене пре него што се датотека може отворити." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Нешто погрешно се десило." @@ -1002,7 +1003,7 @@ msgstr "Ова позивница је можда отказана или ист msgid "errors.ldap-disabled" msgstr "LDAP аутентификација је онемогућена." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Достигли сте квоту од '%s'. Контактирајте подршку." @@ -1018,7 +1019,7 @@ msgstr "Чини се да садржај слике не одговара ек msgid "errors.media-type-not-allowed" msgstr "Чини се да ово није исправна слика." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Профил који сте позвали има искључене поруке е-поште (извештаји о нежељеној " @@ -1042,7 +1043,7 @@ msgstr "Неважећи подаци у међуспремнику" msgid "errors.profile-blocked" msgstr "Налог је блокиран" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Ваш профил има искључене поруке е-поште (извештаји о нежељеној пошти или " @@ -1056,15 +1057,15 @@ msgstr "Регистрација је тренутно онемогућена." msgid "errors.team-feature-mismatch" msgstr "Откривена је некомпатибилна функција \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "Нема довољно чланова за напуштање тима, вероватно желите да га избришете." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Члан којег покушавате да доделите не постоји." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Власник не може да напусти тим, морате да пренесете улогу власника." @@ -1084,31 +1085,31 @@ msgstr "Грешка при валидацији" msgid "errors.version-not-supported" msgstr "Датотека има некомпатибилан број верзије" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Грешка у вези, URL није доступан" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL не пролази валидацију." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Последња испорука није успела." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Грешка при SSL валидацији." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Време је истекло" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Неочекивана грешка при валидацији" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Неочекивани статус %s" @@ -1172,19 +1173,19 @@ msgstr "Дошло је до грешке" msgid "inspect.attributes.blur" msgstr "Замућење" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Вредност" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1192,7 +1193,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Попуњење" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Преузмите изворну слику" @@ -1286,81 +1287,84 @@ msgstr "Чврсто" msgid "inspect.attributes.stroke.width" msgstr "Ширина" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Типографија" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Породица фонта" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Величина фонта" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Стил фонта" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Тежина фонта" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Размак између слова" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Висина линије" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Декорација текста" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Ништа" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Подвачење" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Трансформација текста" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Насловно слово" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Мала слова" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Ништа" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Без вредности" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Велико слово" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Ако желите да сазнате више о прегледу дизајна, посетите Помоћни центар " "Penpot-а" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Више информација о прегледу" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Изаберите облик, таблу или групу да бисте прегледали њихова својства и код" @@ -1420,7 +1424,7 @@ msgstr "Текст" msgid "inspect.tabs.info" msgstr "Инфо" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Пречице" @@ -1432,7 +1436,7 @@ msgstr "Прихвати" msgid "labels.access-tokens" msgstr "Токени за приступ" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Активно" @@ -1440,7 +1444,7 @@ msgstr "Активно" msgid "labels.add-custom-font" msgstr "Додај прилагођени фонт" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Админ" @@ -1448,7 +1452,7 @@ msgstr "Админ" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Све" @@ -1471,7 +1475,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Лош Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Откажите" @@ -1479,15 +1483,15 @@ msgstr "Откажите" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Затвори" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Коментари" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Заједница" @@ -1495,7 +1499,7 @@ msgstr "Заједница" msgid "labels.confirm-password" msgstr "Потврди лозинку" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Настави" @@ -1507,11 +1511,11 @@ msgstr "Настави са" msgid "labels.continue-with-penpot" msgstr "Можете наставити са Penpot налогом" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Копирај везу" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Створи" @@ -1531,7 +1535,7 @@ msgstr "Прилагођени фонтови" msgid "labels.dashboard" msgstr "Управљачка табла" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Избришите" @@ -1543,7 +1547,7 @@ msgstr "Избришите коментар" msgid "labels.delete-comment-thread" msgstr "Избришите дискусију" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Избришите позивницу" @@ -1560,15 +1564,15 @@ msgstr "Развој" msgid "labels.director" msgstr "Директор" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Одбаци" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Нацрти" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Уреди" @@ -1576,7 +1580,7 @@ msgstr "Уреди" msgid "labels.edit-file" msgstr "Уреди датотеку" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Уредник" @@ -1585,11 +1589,11 @@ msgstr "Уредник" msgid "labels.event" msgstr "Догађај" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Истекло" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Извези" @@ -1617,7 +1621,7 @@ msgstr "Добављачи фонтова" msgid "labels.font-variants" msgstr "Стилови" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Фонтови" @@ -1631,11 +1635,11 @@ msgstr "Извршни директор или оснивач" msgid "labels.freelancer" msgstr "Фриленсер" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Github репозиторијум" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Оставите повратне информације" @@ -1647,15 +1651,15 @@ msgstr "Иди назад" msgid "labels.graphic-design" msgstr "Графички дизајн" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Центар за помоћ" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Сакриј решене коментаре" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Неактиван" @@ -1677,7 +1681,7 @@ msgstr "Унутрашња гершка" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Позивнице" @@ -1685,7 +1689,7 @@ msgstr "Позивнице" msgid "labels.language" msgstr "Језик" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Библиотеке и шаблони" @@ -1693,7 +1697,7 @@ msgstr "Библиотеке и шаблони" msgid "labels.log-or-sign" msgstr "Пријава или регистрација" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Одјава" @@ -1701,11 +1705,11 @@ msgstr "Одјава" msgid "labels.marketing" msgstr "Маркетинг" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Члан" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Чланови" @@ -1713,15 +1717,15 @@ msgstr "Чланови" msgid "labels.new-password" msgstr "Нова лозинка" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Даље" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Све сте прегледали! Нова обавештења о коментарима ће се појавити овде." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Нема позивница на чекању." @@ -1734,7 +1738,7 @@ msgstr "Ова страница можда не постоји или немат msgid "labels.not-found.main-message" msgstr "Упс!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "датотека" @@ -1748,7 +1752,7 @@ msgstr[0] "табла" msgstr[1] "%s табле" msgstr[2] "%s табли" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "пројекат" @@ -1776,7 +1780,7 @@ msgstr "Друго (навести)" msgid "labels.other-short" msgstr "Друго" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Власник" @@ -1784,7 +1788,7 @@ msgstr "Власник" msgid "labels.password" msgstr "Лозинка" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "На чекању" @@ -1804,11 +1808,11 @@ msgstr "Управљање производима" msgid "labels.profile" msgstr "Налог" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Пројекти" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Напомене о издању" @@ -1822,11 +1826,11 @@ msgstr "Поново учитај датотеку" msgid "labels.remove" msgstr "Уколни" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Уклони члана" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Преименуј" @@ -1834,7 +1838,7 @@ msgstr "Преименуј" msgid "labels.rename-team" msgstr "Преименуј тим" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Поново пошаљите позивницу" @@ -1842,15 +1846,15 @@ msgstr "Поново пошаљите позивницу" msgid "labels.retry" msgstr "Покушај поново" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Улога" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Сачувај" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Претражи" @@ -1878,7 +1882,7 @@ msgstr "Тренутно вршимо програмско одржавање н msgid "labels.service-unavailable.main-message" msgstr "Услуга недоступна" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Подешавања" @@ -1890,11 +1894,11 @@ msgstr "Дели" msgid "labels.share-prototype" msgstr "Дели прототип" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Библиотеке" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Прикажи све коментаре" @@ -1902,7 +1906,7 @@ msgstr "Прикажи све коментаре" msgid "labels.show-comments-list" msgstr "Прикажи листу кометара" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Покажите само своје коментаре" @@ -1914,7 +1918,7 @@ msgstr "Sketch" msgid "labels.start" msgstr "Почните" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Стање" @@ -1932,7 +1936,7 @@ msgstr "Вођа тима" msgid "labels.team-member" msgstr "Члан тима" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Туторијали" @@ -1960,15 +1964,15 @@ msgstr "Отпреми прилагођене фонтове" msgid "labels.uploading" msgstr "Отпремање…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Само за преглед" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Прегледник" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Веб-куке" @@ -1976,11 +1980,11 @@ msgstr "Веб-куке" msgid "labels.write-new-comment" msgstr "Напиши нови коментар" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(ти)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Ваш налог" @@ -1989,23 +1993,23 @@ msgstr "Ваш налог" msgid "labels.youtube" msgstr "YouTube" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Изаберите слику" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Градијент" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Слика" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Задржите однос ширине и висине" @@ -2023,7 +2027,7 @@ msgstr "Учитавање слике…" msgid "media.radial" msgstr "Радијалан" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Чврст" @@ -2098,19 +2102,19 @@ msgstr "Направи токен" msgid "modals.create-access-token.title" msgstr "Генериши нови токен за приступ" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Направи веб-куку" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Направи веб-куку" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "URL оптерећења" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2156,11 +2160,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Избришите разговор" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Да ли сте сигурни да желите да избришете ову напомену?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Избришите напомену" @@ -2208,11 +2212,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Брисање фонта" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Да ли сте сигурни да желите да обришете ову страницу?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Избришите страницу" @@ -2263,29 +2267,29 @@ msgstr[0] "Брисање датотеке" msgstr[1] "Брисање датотека" msgstr[2] "Брисање датотека" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Избришите тим" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Да ли сте сигурни да желите да обришете овај тим? Сви пројекти и датотеке " "повезани са тимом биће трајно обрисани." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Брисање тима" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Избришите члана" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Да ли сте сигурни да желите да избришете овог члана из тима?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Избришите члана тима" @@ -2302,51 +2306,51 @@ msgstr[2] "" "Средства која су већ коришћена у овој датотеци ће остати тамо (ниједан " "дизајн неће бити покварен)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Избришите веб-куку" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Да ли сте сигурни да желите да избришете ову веб-куку?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Брисање веб-куке" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Уреди веб-куку" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Уреди веб-куку" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Пошаљи позивницу" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Е-поште, раздвојене зарезима" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Неки е-поште су од тренутних чланова тима. Њихове позивнице неће бити " "послате." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Позовите чланове у тим" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Пошто сте једини члан овог тима, тим ће бити избрисан заједно са пројектима " "и датотекама." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Да ли сте сигурни да желите да напустите тим %s?" @@ -2374,15 +2378,15 @@ msgstr "Изаберите члана за унапређње" msgid "modals.leave-and-reassign.title" msgstr "Пре него што напустите" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Напустите тим" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Да ли сте сигурни да желите да напустите овај тим?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Напуштање тима" @@ -2407,39 +2411,39 @@ msgstr[0] "Премести библиотеку" msgstr[1] "Преместите библиотеке" msgstr[2] "Преместите библиотеке" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Гурните износ" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Пренесите власништво" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Ако пренесете власништво, променићете своју улогу у администратора, чиме " "ћете изгубити неке дозволе над овим тимом. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Ви сте тренутни власник овог тима. Да ли сте сигурни да желите да %s буде " "нови власник тима?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Нови власник тима" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Објавите" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Ваша библиотека је празна. Да ли сте сигурни да желите да је објавите?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Објавите празну библиотеку" @@ -2497,21 +2501,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Ажурирајте компоненте у дељеној библиотеци" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Ажурирајте" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Откажите" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Управо ћете ажурирати компоненту у дељеној библиотеци. Ово може утицати на " "друге датотеке које га користе." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Ажурирајте компоненту у дељеној библиотеци" @@ -2519,11 +2523,11 @@ msgstr "Ажурирајте компоненту у дељеној библио msgid "notifications.by-code.upgrade-version" msgstr "Доступна је нова верзија, молимо Вас да освежите страницу" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Позивница је успешно послата" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Веза за позивницу је копирана" @@ -2675,7 +2679,7 @@ msgstr "" "Не заборавите да укључите све. Програмере, дизајнере, менаџере... " "различитост се збраја :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Позовите са улогом:" @@ -2878,653 +2882,637 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Идите на пријаву" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Одвоји" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Мешано" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Изаберите ставке користећи овај стил" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Основе" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Управљачка табла" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Прегледач" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Радни простор" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Поравнање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Уреди" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Опште" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Опште" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Главни мени" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Измените слојеве" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Навигација" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Навигација" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Навигација" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Панели" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Путање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Облици" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Текстови" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Алатке" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Увећање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Увећање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Коментари" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Додај чвор" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Поравнај на дно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Поравнај по центру" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Поравнај по центру водоравно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Поравнај по ширини" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Поравнај на лево" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Поравнај на десно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Поравнај по врху" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Поравнај по центру усправно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Направите таблу из избора" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Укључите подебљано" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Boolean разлика" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Boolean изузми" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Boolean пресек" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Boolean унија" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Пошаљи позади" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Пошаљи назад" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Изнесите напред" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Изнесите на предњи део" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Очисти отказивање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Копирај" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Направи ново" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Исеци" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Умањи" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Избриши" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Избриши чвор" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Одвојите компоненту" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Кривина" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Елипса" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Табла" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Нацртај путању" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Путања" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Правоугаоник" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Текст" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Дуплирај" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Откажи" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Извезите облике" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Увећај да све стане" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Окрени водоравно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Окрени усправно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Смањите величину фонта" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Повећајте величину фонта" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Иди на нацрте" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Иди на дељене библиотеке" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Претражи" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Групирај" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Распореди водоравно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Прикажи / Сакриј интерфејс" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Увећај" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Уметни слику" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Укључи курзив" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Придружи чворове" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Смањи размак између слова" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Повећај размак између слова" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Смањење висине линије" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Повећај висину линије" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Укључи прелазну линију" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Направи угао" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Направи кривину" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Маска" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Спаји чворове" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Премести" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Премести доле брзо" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Премести лево брзо" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Премести десно брзо" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Премести горе брзо" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Премести чвор" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Премести доле" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Премести лево" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Премести десно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Премести горе" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Следећа табла" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Нису пронађене пречице" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Подеси непрозирност на 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Подеси непрозирност на 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Подеси непрозирност на 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Подеси непрозирност на 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Подеси непрозирност на 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Подеси непрозирност на 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Подеси непрозирност на 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Подеси непрозирност на 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Подеси непрозирност на 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Подеси непрозирност на 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Бирач боја" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Иди на одељак за коментаре гледалаца" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Иди на управљачку таблу" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Иди на одељак за преглед гледалаца" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Иди на одељак интеракције са гледаоцима" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Иди на одељак интеракције са гледаоцима" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Иди на радни простор" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " или " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Налепи" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Претходна табла" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Поврати" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Врати увећање на почетне вредности" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Размера" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Претражи пречице" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Изабери све" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Изабери следећи слој" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Изабери родитељски слој" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Изабери претходни слој" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Раздвоји чворове" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Прикажи / Сакриј мрежу пиксела" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Прикажи / Сакриј пречице" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Залепи на чворове" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Залепи на мрежу пиксела" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Започни уређивање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Започни мерење" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Заустави мерење" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Подеси сличице" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Пречице на тастатури" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Укључи динамичко поравнање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Укључи средства" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Укључи палету боја" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Укључи режим фокуса" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Режим целог екрана" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Прикажи / Сакриј вођице" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Укључи историју" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Укључи слојеве" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Додај / уклони флексибилни распоред" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Додај/уклони мрежни распоред" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Закључај / Откључај" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Закључај пропорције" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Прикажи / Сакриј лењире" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Залепи за вођице" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Залепи на линије за поравнања" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Укљичи палету текста" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Промени тему" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Прикажи / Сакриј" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Укљичи стил увећања" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Укљичи подвачење" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Опозови" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Разгрупиши" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Демаскирај" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Распореди усправно" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Смањи увећање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Увећај увећање" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Увећај на изабрано" @@ -3576,19 +3564,19 @@ msgstr "Лозинка - Penpot" msgid "title.settings.profile" msgstr "Налог - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Позивнице - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Чланови - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Подешавања - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Веб-куке - %s - Penpot" @@ -3660,39 +3648,39 @@ msgstr "Прикажи интеракције на клик" msgid "viewer.header.sitemap" msgstr "Мапа сајта" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Последња испорука је била успешна." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Поравнај на водоравну средину (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Распореди водоравни размак (%с)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Поравнај на лево (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Поравнај на десно (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Поравнај по дну (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Поравнај на усправну средину (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Распореди усправни размак (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Поравнај по врху (%s)" @@ -3701,31 +3689,31 @@ msgstr "Поравнај по врху (%s)" msgid "workspace.assets.assets" msgstr "Средства" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Сва средства" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Боје" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Компоненте" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Направите групу" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Ваше ставке ће бити аутоматски именоване као \"име групе / име ставке“" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Избирши" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Дуплирај" @@ -3733,11 +3721,11 @@ msgstr "Дуплирај" msgid "workspace.assets.duplicate-main" msgstr "Дуплирај главно" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Уреди" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Филтер" @@ -3746,15 +3734,15 @@ msgstr "Филтер" msgid "workspace.assets.graphics" msgstr "Графика" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Група" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Име групе" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "локална библиотека" @@ -3766,15 +3754,15 @@ msgstr "Нема пронађених средстава" msgid "workspace.assets.open-library" msgstr "Отворите датотеку библиотеке" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Преименуј" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Преименуј гурпу" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Претражите средства" @@ -3791,18 +3779,18 @@ msgstr[2] "%s изабраних ставки" msgid "workspace.assets.shared-library" msgstr "Дељена библиотека" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "компонента" msgstr[1] "%s компоненте" msgstr[2] "%s компоненти" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Сортирај" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Тиупографије" @@ -3827,7 +3815,7 @@ msgstr "Размак између слова" msgid "workspace.assets.typography.line-height" msgstr "Висина линије" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -3839,59 +3827,59 @@ msgstr "Стилови текста" msgid "workspace.assets.typography.text-transform" msgstr "Трансформација текста" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Разгрупиши" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Направи област" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Направи таблу" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Споји ћелије" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Додај 1 колону десно" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Додај 1 колону лево" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Избирши колону" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Избриши колоне и облике" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Дуплирај колону" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Додај 1 ред испод" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Додај 1 ред изнад" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Избриши ред" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Избриши редове и облике" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Дуплирај ред" @@ -3899,7 +3887,7 @@ msgstr "Дуплирај ред" msgid "workspace.focus.focus-mode" msgstr "Режим фокуса" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Искључи фокус" @@ -3919,11 +3907,11 @@ msgstr "Линеарни градијент" msgid "workspace.gradients.radial" msgstr "Радијални градијент" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Онемогућите динамичко поравнање" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Онемогући пропорционалну размеру" @@ -3932,23 +3920,23 @@ msgstr "Онемогући пропорционалну размеру" msgid "workspace.header.menu.disable-scale-text" msgstr "Онемогући размеру текста" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Искључи лепљење на вођице" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Искључи лепљење на пиксел" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Искључи лепљење на линије за поравнања" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Омогућите динамичко поравнање" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Омогући пропорционалну скалу" @@ -3957,107 +3945,107 @@ msgstr "Омогући пропорционалну скалу" msgid "workspace.header.menu.enable-scale-text" msgstr "Омогући размеру текста" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Заклепи на вођице" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Омогући лепљење на пиксел" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Залепи на линије за поравнања" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Сакриј имена табли" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Сакриј вођице" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Сакриј палету боја" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Сакриј мрежу пиксела" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Сакриј лењире" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Сакриј палету фонтова" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Уреди" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Датотека" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Помоћ и информације" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Поставке" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Поглед" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Поврати" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Изабери све" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Прикажи имена табли" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Прикажи вођице" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Прикажи палету боја" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Прикажи мрежу пиксела" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Прикажи лењире" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Прикажи палету фонтова" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Пребаците се на тамну тему" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Пребаците се на светлу тему" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Опозови" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Почни поново" @@ -4078,11 +4066,11 @@ msgstr "Чување" msgid "workspace.header.unsaved" msgstr "Несачуване промене" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Режим прегледа (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Увећај" @@ -4094,7 +4082,7 @@ msgstr "Попуњавање - Размера за попуњавање" msgid "workspace.header.zoom-fit" msgstr "Прилагоди - Смањи да се уклопи" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Увећај да се све уклопи" @@ -4102,19 +4090,19 @@ msgstr "Увећај да се све уклопи" msgid "workspace.header.zoom-full-screen" msgstr "Цели екран" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Увећај на изабрано" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Уреди мрежу" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Изађи" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Прикажи опције за 4-страни padding" @@ -4130,7 +4118,7 @@ msgstr "Готово" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Пронађи" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Пронађи распоред мреже" @@ -4139,10 +4127,6 @@ msgstr "Пронађи распоред мреже" msgid "workspace.libraries.add" msgstr "Додај" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s боја" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "У вашој библиотеци још увек нема стилова боја" @@ -4169,31 +4153,23 @@ msgstr "Недавне боје" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Додатна РГБ боја" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Сачувајте стил боја" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s компоненти" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Библиотека датотека" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s графика" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "БИБЛИОТЕКЕ У ОВОЈ ДАТОТЕЦИ" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "БИБЛИОТЕКЕ" @@ -4202,75 +4178,71 @@ msgstr "БИБЛИОТЕКЕ" msgid "workspace.libraries.library" msgstr "БИБЛИОТЕКА" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "АЖУРИРАЊА БИБЛИОТЕКЕ" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Учитавање…" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Нема дељених библиотека које треба ажурирати" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Нема резултата за %s" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Претражите заједничке библиотеке" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "ДЕЉЕНЕ БИБЛИОТЕКЕ" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Повежите библиотеку" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Више типографија" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Прекините везу са свим типографијама" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s типографија" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Прекините везу са библиотеком" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Ажурирај" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "види све промене" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "АЖУРИРАЊА" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Кликните на + дугме да бисте додали интеракције." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Замућење" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Групно замућење" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Замућење избора" @@ -4278,39 +4250,39 @@ msgstr "Замућење избора" msgid "workspace.options.canvas-background" msgstr "Позадина платна" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Ограничите садржај" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Компонента" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Напомена" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Копирај" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Направи напомену" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Уреди напомену" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Главно" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Замени компоненту" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "У овој библиотеци још увек нема средстава" @@ -4354,7 +4326,7 @@ msgstr "Врх" msgid "workspace.options.constraints.topbottom" msgstr "Врх и Дно" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Дизајн" @@ -4367,14 +4339,14 @@ msgstr "Извоз" msgid "workspace.options.export-multiple" msgstr "Избор извоза" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Извоз 1 елемента" msgstr[1] "Извоз %s елемента" msgstr[2] "Извоз %s елементата" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Суфикс" @@ -4382,7 +4354,7 @@ msgstr "Суфикс" msgid "workspace.options.exporting-complete" msgstr "Извоз је завршен" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Извоз…" @@ -4394,15 +4366,15 @@ msgstr "Извоз није успео" msgid "workspace.options.exporting-object-slow" msgstr "Извоз је неочекивано спор" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Попуни" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Додајте почетак протока" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Проток" @@ -4411,15 +4383,15 @@ msgstr "Проток" msgid "workspace.options.flows.flow-start" msgstr "Почетак протока" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Проток почиње" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Ауто" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "колоне" @@ -4428,7 +4400,7 @@ msgstr "колоне" msgid "workspace.options.grid.grid-title" msgstr "Мрежа" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Боја" @@ -4437,15 +4409,15 @@ msgstr "Боја" msgid "workspace.options.grid.params.columns" msgstr "Колоне" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Гутер (Gutter)" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Висина" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Маргина" @@ -4454,7 +4426,7 @@ msgstr "Маргина" msgid "workspace.options.grid.params.rows" msgstr "Редови" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Постави као подразумевано" @@ -4468,147 +4440,147 @@ msgstr "Величина" msgid "workspace.options.grid.params.type" msgstr "Врста" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Дно" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Средина" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Лево" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Десно" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Прошири" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Врх" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Користи подразумевао" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Редови" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Квадрат" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Попуни за групу" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Контура групе" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Вођице" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Висина" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Преглед" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Акција" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "После одлагања" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Анимација" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Раствори" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Ништа" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Гурни" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Клизање" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "ауто" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Додај позадински оквир" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Затвори када се кликне изван" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Затвори оквир" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Затвори оквир: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Кашњење" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Одредиште" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Трајање" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Олакшавање" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Олакшање" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Глатки улазак" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Глатко улазак и излазак" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Глатки излазак" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Линијски" @@ -4617,47 +4589,47 @@ msgstr "Линијски" msgid "workspace.options.interaction-in" msgstr "у" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "При уласку миша" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "При изласку миша" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "мс" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Иди на" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Иди на: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(није постављено)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Ефекат померања" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "На клик" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Отвори оквир" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Отвори оквир: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Отори URL" @@ -4666,147 +4638,147 @@ msgstr "Отори URL" msgid "workspace.options.interaction-out" msgstr "Излаз" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Доња средина" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Доле лево" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Доле десно" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Средина" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Ручно" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Горња средина" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Горе лево" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Горе десно" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Положај" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Задржи положај скроловања" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Претходни екран" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "У односу на" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "себе" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Укључи оквир" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Укључи оквир: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Окидач" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Током лебдења" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Током притиска" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Интеракције" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Боја" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Изгоревање боје" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Избегавање боја" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Потамни" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Разлика" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Искључење" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Тешко светло" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Нијанса" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Посветли" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Осветљење" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Помножи" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Нормално" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Оквир" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Засићеност" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Екран" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Меко светло" @@ -4830,19 +4802,19 @@ msgstr "Изабрани слојеви" msgid "workspace.options.layout-item.advanced-ops" msgstr "Напредна подешавања" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Макс.Висина" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Макс.Ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Мин.Висина" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Мин.Ширина" @@ -4956,15 +4928,15 @@ msgstr "простор између" msgid "workspace.options.layout.top" msgstr "Врх" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Више боја" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Више боја библиотеке" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Непрозирност" @@ -4973,27 +4945,27 @@ msgstr "Непрозирност" msgid "workspace.options.position" msgstr "Положај" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Прототип" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Радијус" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Доле лево" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Доле десно" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Горе лево" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Горе десно" @@ -5005,7 +4977,7 @@ msgstr "Недавно" msgid "workspace.options.retry" msgstr "Покушајте поново" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Ротација" @@ -5013,27 +4985,27 @@ msgstr "Ротација" msgid "workspace.options.search-font" msgstr "Претражите фонт" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Изаберите облик, таблу или групу да бисте превукли везу на другу таблу." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Изабране боје" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Попуна избора" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Избор контуре" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Замућење" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Боја сенке" @@ -5045,47 +5017,48 @@ msgstr "Бацање сенке" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Унутрашња сенка" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Ширење" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Сенка" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Групна сенка" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Избор сенки" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Прикажи у извозу" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Прикажи у режиму приказа" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Величина" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Унапред подешене величине" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Контура" @@ -5094,7 +5067,7 @@ msgstr "Контура" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Кружни маркер" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Круг" @@ -5103,7 +5076,7 @@ msgstr "Круг" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Дијамантски маркер" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Дијамант" @@ -5112,19 +5085,19 @@ msgstr "Дијамант" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Линија са стрелицом" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Стрелица" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Ништа" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Забољено" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Квадратно" @@ -5133,7 +5106,7 @@ msgstr "Квадратно" msgid "workspace.options.stroke-cap.square-marker" msgstr "Квадратни маркер" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Правоугаоник" @@ -5142,75 +5115,75 @@ msgstr "Правоугаоник" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Троугласта стрелицa" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Троугао" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Боја контуре" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Ширина контуре" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Средина" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Испрекидана" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Тачкаста" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Унутрашња" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Мешана" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Спољашња" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Чврста" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Поравнај по дну" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Поравнај по средини" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Поравнај по врху" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Ауто висина" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Ауто ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Фиксно" @@ -5232,35 +5205,35 @@ msgstr "Мала слова" msgid "workspace.options.text-options.none" msgstr "Ништа" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Прелазна линија (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Поравнај по средини" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Оправдај" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Поравнај на лево" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Поравнај на десно" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Текст" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Групни текст" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Текст избора" @@ -5269,7 +5242,7 @@ msgstr "Текст избора" msgid "workspace.options.text-options.titlecase" msgstr "Насловно слово" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Подвачење (%s)" @@ -5278,21 +5251,21 @@ msgstr "Подвачење (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Велико слово" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Користите дугме за репродукцију у заглављу да бисте покренули приказ " "прототипа." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X оса" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y оса" @@ -5336,39 +5309,39 @@ msgstr "Раздвоји чворове (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Залепи чворове (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Отвори" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Још увек нема инсталираних додатака" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Додатак не постоји или URL није исправан." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Инсталирај" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Инсталирани додаци" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Управљач додатака" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Додаци" -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Листа додатака" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Напишите URL додатка" @@ -5376,7 +5349,7 @@ msgstr "Напишите URL додатка" msgid "workspace.plugins.success" msgstr "Додатак је исправно учитан." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Додаци" @@ -5400,7 +5373,7 @@ msgstr "Пошаљи назад" msgid "workspace.shape.menu.copy" msgstr "Копирај" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Направи напомену" @@ -5408,11 +5381,11 @@ msgstr "Направи напомену" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Избор на табли" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Направи компоненту" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Направи више компоненти" @@ -5420,7 +5393,7 @@ msgstr "Направи више компоненти" msgid "workspace.shape.menu.cut" msgstr "Исеци" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Избриши" @@ -5428,15 +5401,15 @@ msgstr "Избриши" msgid "workspace.shape.menu.delete-flow-start" msgstr "Избриши почетак протока" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Раздвоји инстанцу" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Раздвоји инстанце" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Разлика" @@ -5448,11 +5421,11 @@ msgstr "Дуплицирај" msgid "workspace.shape.menu.edit" msgstr "Уреди" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Изузми" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Изравнај" @@ -5485,19 +5458,19 @@ msgstr "Идите на датотеку главне компоненте" msgid "workspace.shape.menu.group" msgstr "Групиши" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Сакриј" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Прикажи / Сакриј интерфејс" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Раскрсница" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Закључај" @@ -5505,7 +5478,7 @@ msgstr "Закључај" msgid "workspace.shape.menu.mask" msgstr "Маскирај" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Залепи" @@ -5521,11 +5494,11 @@ msgstr "Уклоните флексибилни распоред" msgid "workspace.shape.menu.remove-grid" msgstr "Уклоните распоред мреже" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Врати преиначења на подразумеване вредности" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Врати главну компоненту" @@ -5533,15 +5506,15 @@ msgstr "Врати главну компоненту" msgid "workspace.shape.menu.select-layer" msgstr "Изабери слој" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Прикажи" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Прикажи на панелу са средствима" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Прикажи главну компоненту" @@ -5554,6 +5527,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Постави као сличицу" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Претвори у путanju" @@ -5561,11 +5535,11 @@ msgstr "Претвори у путanju" msgid "workspace.shape.menu.ungroup" msgstr "Разгрупиши" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Унија" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Откључај" @@ -5578,7 +5552,7 @@ msgstr "Демаскирај" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Ажурирај главне компоненте" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Ажурирајте главну компоненту" @@ -5590,11 +5564,11 @@ msgstr "Скупи бочну траку" msgid "workspace.sidebar.expand" msgstr "Прошири бочну траку" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Историја" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Слојеви" @@ -5634,7 +5608,7 @@ msgstr "Текстови" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Увезена SVG својства" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Странице" @@ -5642,7 +5616,7 @@ msgstr "Странице" msgid "workspace.sitemap" msgstr "Мапа сајта" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Средства" @@ -5650,7 +5624,7 @@ msgstr "Средства" msgid "workspace.toolbar.color-palette" msgstr "Палета боја (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Коментари (%s)" @@ -5853,19 +5827,19 @@ msgstr "Операција над %s" msgid "workspace.undo.title" msgstr "Историја" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Одбаци" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Више информација" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Постоје ажурирања у дељеним библиотекама" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Ажурирај" diff --git a/frontend/translations/sv.po b/frontend/translations/sv.po index a80247192c..dc4ef30650 100644 --- a/frontend/translations/sv.po +++ b/frontend/translations/sv.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Henrik Allberg \n" -"Language-Team: Swedish " -"\n" +"Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -176,7 +176,7 @@ msgstr "Den öppna källkodslösningen för design och prototyper." msgid "auth.terms-and-privacy-agreement" msgstr "Jag godkänner [terms of service](%s) och [privacy policy](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Användarvillkor" @@ -203,7 +203,7 @@ msgstr "...varumärkesbyggande, illustrationer, marknadsföringsmaterial, etc." msgid "comments.mentions.not-found" msgstr "Inga personer hittades för @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Publicera" @@ -275,7 +275,7 @@ msgstr "Dela prototyper" msgid "common.share-link.view-all" msgstr "Markera allt" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Avpublicera" @@ -396,7 +396,7 @@ msgstr "Token kommer att förfalla den %" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "Token har inget förfallodatum" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Lägg till som delat bibliotek" @@ -404,31 +404,31 @@ msgstr "Lägg till som delat bibliotek" msgid "dashboard.change-email" msgstr "Ändra e-post" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopia)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Skapa nytt team" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Nåla fast denna version" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Ditt Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Radera team" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Ladda ner Penpot-fil (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Ladda ner standardfil (.svg + .json)" @@ -484,7 +484,7 @@ msgstr "Inga bibliotek än." msgid "dashboard.export-binary-multi" msgstr "Ladda ner % Penpot-filer (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Exportera tavla som PDF" @@ -500,7 +500,7 @@ msgstr "Exportera Penpot %s filer" msgid "dashboard.export-multiple.selected" msgstr "%s av %s objekt markerade" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Exportera" @@ -698,11 +698,11 @@ msgstr "Laddar upp data till server (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Laddar upp fil: %" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Bjud in personer" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Lämna teamet" @@ -714,7 +714,7 @@ msgstr "Bibliotek & mallar" msgid "dashboard.libraries-and-templates.explore" msgstr "Ta reda på mer om dem och hur du kan bidra" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Problem när mallen importerades. Mallen importerades inte." @@ -746,7 +746,7 @@ msgstr "Flytta till andra team" msgid "dashboard.new-file" msgstr "+ Ny fil" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Ny fil" @@ -754,7 +754,7 @@ msgstr "Ny fil" msgid "dashboard.new-project" msgstr "+ Nytt projekt" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Nytt projekt" @@ -762,11 +762,11 @@ msgstr "Nytt projekt" msgid "dashboard.no-matches-for" msgstr "Inga träffar hittades för ”%s”" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Fastklistrade projekt visas här" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Notifieringar" @@ -778,7 +778,7 @@ msgstr "Din e-postadress har uppdaterats" msgid "dashboard.notifications.email-verified-successfully" msgstr "Din e-postadress har verifierats" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Notifieringsinställningar uppdaterade" @@ -786,11 +786,11 @@ msgstr "Notifieringsinställningar uppdaterade" msgid "dashboard.notifications.password-saved" msgstr "Lösenordet sparat!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Visa notifieringar" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s medlemmar" @@ -822,7 +822,7 @@ msgstr "Du är nu ägare till detta team." msgid "dashboard.permissions-change.viewer" msgstr "Du är nu en tittare i det här teamet." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Klistra fast/Lossa" @@ -859,7 +859,7 @@ msgstr "Du är inte längre en del av teamet ”%s”." msgid "dashboard.save-settings" msgstr "Spara inställningar" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Sök…" @@ -939,7 +939,7 @@ msgstr "Notifieringar" msgid "dashboard.show-all-files" msgstr "Visa alla filer" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Versionshistorik" @@ -963,7 +963,7 @@ msgstr[1] "Dina filer har duplicerats" msgid "dashboard.success-duplicate-project" msgstr "Ditt projekt har duplicerats" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Din fil har flyttats" @@ -975,15 +975,15 @@ msgstr "Dina filer har flyttats" msgid "dashboard.success-move-project" msgstr "Ditt projekt har flyttats" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Team info" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Teammedlemmar" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Teamprojekt" @@ -999,7 +999,7 @@ msgstr "Sökresultat" msgid "dashboard.type-something" msgstr "Skriv för att söka i resultatet" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Avpublicera biblioteket" @@ -1007,50 +1007,50 @@ msgstr "Avpublicera biblioteket" msgid "dashboard.update-settings" msgstr "Uppdatera inställningarna" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Inga gränser för kreativitet" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Gratis Penpot" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Är aktiv" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "När denna hook triggas kommer händelsedetaljer att sändas" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Du kan bara ta bort eller ändra webhooks som du har skapat." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Innehållstyp" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Skapa webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook skapades." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Webhooks är ett enkelt sätt att låta andra webbplatser och appar bli " "meddelade när vissa händelser inträffar i Penpot. Vi skickar en " "POST-begäran till var och en av de webbadresser du anger." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Tryck på knappen \"Lägg till webhook\" för att lägga till en." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Det finns inga webhooks." @@ -1070,7 +1070,7 @@ msgstr "E-post" msgid "dashboard.your-name" msgstr "Ditt namn" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Ditt Penpot" @@ -1086,15 +1086,15 @@ msgstr "Observera" msgid "ds.component-subtitle" msgstr "Komponenter att uppdatera:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Tillåt" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Avbryt" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1146,11 +1146,11 @@ msgstr "Du kan inte använda e-postadressen som lösenord" msgid "errors.email-domain-not-allowed" msgstr "Domänen är inte tillåten" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "E-postmeddelandet «%s» har genererat många returmeddelanden." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "" "E-postmeddelandet ”%s” har rapporterats som skräppost eller permanenta " @@ -1166,11 +1166,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Funktionen \"%s\" stöds inte." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "Får innehålla högst 1 tecken." - #, unused msgid "errors.field-min-length" msgstr "Måste innehålla minst 1 tecken." @@ -1187,7 +1182,7 @@ msgstr "" "aktiverade funktionerna och funktionerna i den fil du försöker öppna. " "Migreringar för ”%s” måste tillämpas innan filen kan öppnas." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Något fel har inträffat." @@ -1220,11 +1215,11 @@ msgstr "Denna inbjudan kan vara avbruten eller har upphört att gälla." msgid "errors.ldap-disabled" msgstr "LDAP-autentisering är inaktiverad." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Du har nått \"%s\" kvoten. Kontakta supporten." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Det maximala (%s) antalet e-postmeddelanden som kan bjudas in i en enda " @@ -1242,7 +1237,7 @@ msgstr "Det verkar som om innehållet i bilden inte stämmer överens med filtil msgid "errors.media-type-not-allowed" msgstr "Det här är inte en giltig bild." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Den profil du bjuder in har e-postmeddelanden som är avstängda " @@ -1270,7 +1265,7 @@ msgstr "Ogiltiga data i urklipp" msgid "errors.profile-blocked" msgstr "Profilen är blockerad" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "Din profil har e-post avstängd (spamrapporter eller många returmeddelanden)." @@ -1282,17 +1277,17 @@ msgstr "Registreringen är för närvarande inaktiverad." msgid "errors.team-feature-mismatch" msgstr "Upptäckt av inkompatibel funktion '%s'" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Otillräckligt med medlemmar för att lämna teamet, du vill förmodligen ta " "bort det." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Medlemmen du försöker tilldela finns inte." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Ägare kan inte lämna teamet, du måste tilldela ägarrollen till någon annan." @@ -1312,31 +1307,31 @@ msgstr "Valideringsfel" msgid "errors.version-not-supported" msgstr "Filen har ett inkompatibelt versionsnummer" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Anslutningsfel, URL:en är inte tillgänglig" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "Valideringsfel av URL:en." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Den sista leveransen lyckades inte." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Fel på SSL validering." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Timeout" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Oväntat fel vid validering" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Oväntad status %" @@ -1401,19 +1396,19 @@ msgstr "Ett fel har inträffat" msgid "inspect.attributes.blur" msgstr "Oskärpa" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Värde" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1421,7 +1416,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Fylla" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Ladda ner källbilden" @@ -1515,79 +1510,82 @@ msgstr "Ifylld" msgid "inspect.attributes.stroke.width" msgstr "Bredd" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Typografi" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Teckensnittsfamilj" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Teckenstorlek" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Teckensnitt" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Teckensnittsvikt" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Teckenavstånd" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Radavstånd" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Textdekorering" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Ingen" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Understrykning" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Texttransformation" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Versalbörjan" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Gemener" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Ingen" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Oinställt" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Versaler" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "Om du vill veta mer om designinspektion kan du besöka Penpots hjälpcenter" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Mer information om inspektion" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Välj en form, ett tavla eller en grupp för att inspektera deras egenskaper " @@ -1649,7 +1647,7 @@ msgstr "Text" msgid "inspect.tabs.info" msgstr "Info" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Genvägar" @@ -1661,11 +1659,11 @@ msgstr "Acceptera" msgid "labels.access-tokens" msgstr "Accesstokens" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Aktiv" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Lägg till" @@ -1673,11 +1671,11 @@ msgstr "Lägg till" msgid "labels.add-custom-font" msgstr "Lägg till teckensnitt" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Lägger till..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Admin" @@ -1685,7 +1683,7 @@ msgstr "Admin" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Allt" @@ -1708,7 +1706,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Bad Gateway" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Avbryt" @@ -1716,11 +1714,11 @@ msgstr "Avbryt" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Stäng" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Dra ihop" @@ -1732,11 +1730,11 @@ msgstr "Kommentar" msgid "labels.comment.mark-as-solved" msgstr "Markera som löst" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Kommentarer" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Community" @@ -1744,7 +1742,7 @@ msgstr "Community" msgid "labels.confirm-password" msgstr "Bekräfta lösenordet" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Fortsätt" @@ -1756,7 +1754,7 @@ msgstr "Fortsätt med" msgid "labels.continue-with-penpot" msgstr "Du kan fortsätta med ett Penpot-konto" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Kopiera länk" @@ -1764,7 +1762,7 @@ msgstr "Kopiera länk" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Skapa" @@ -1784,7 +1782,7 @@ msgstr "Anpassade teckensnitt" msgid "labels.dashboard" msgstr "Översiktsvy" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Radera" @@ -1796,7 +1794,7 @@ msgstr "Radera kommentar" msgid "labels.delete-comment-thread" msgstr "Radera tråd" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Ta bort inbjudan" @@ -1813,15 +1811,15 @@ msgstr "Utveckling" msgid "labels.director" msgstr "Direktör" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Kassera" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Utkast" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Redigera" @@ -1829,7 +1827,7 @@ msgstr "Redigera" msgid "labels.edit-file" msgstr "Redigera fil" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Redaktör" @@ -1838,11 +1836,11 @@ msgstr "Redaktör" msgid "labels.event" msgstr "Evenemang" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Löpt ut" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Exportera" @@ -1870,7 +1868,7 @@ msgstr "Teckensnittsleverantör" msgid "labels.font-variants" msgstr "Stilar" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Teckensnitt" @@ -1884,11 +1882,11 @@ msgstr "VD eller Grundare" msgid "labels.freelancer" msgstr "Frilansare" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Github repo" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Ge feedback" @@ -1900,19 +1898,19 @@ msgstr "Gå tillbaka" msgid "labels.graphic-design" msgstr "Grafisk design" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Hjälpcenter" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Dölj åtgärdade kommentarer" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Importera" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Inaktiv" @@ -1934,7 +1932,7 @@ msgstr "Internt fel" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Inbjudningar" @@ -1942,7 +1940,7 @@ msgstr "Inbjudningar" msgid "labels.language" msgstr "Språk" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Bibliotek & mallar" @@ -1958,7 +1956,7 @@ msgstr "Logga in eller registrera dig" msgid "labels.login" msgstr "Logga in" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Logga ut" @@ -1966,11 +1964,11 @@ msgstr "Logga ut" msgid "labels.marketing" msgstr "Marknadsföring" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Medlem" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Medlemmar" @@ -1978,15 +1976,15 @@ msgstr "Medlemmar" msgid "labels.new-password" msgstr "Nytt lösenord" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Nästa" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Du har kommit ikapp! Nya meddelanden om kommentarer visas här." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Inga pågående inbjudningar." @@ -2005,7 +2003,7 @@ msgstr "Oops!" msgid "labels.notifications" msgstr "Notifieringar" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 fil" @@ -2017,7 +2015,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 tavla" msgstr[1] "%s tavlor" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 projekt" @@ -2036,7 +2034,7 @@ msgstr "Gammalt lösenord" msgid "labels.only-yours" msgstr "Endast din" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Alternativ" @@ -2052,7 +2050,7 @@ msgstr "Annat (ange)" msgid "labels.other-short" msgstr "Andra" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Ägare" @@ -2060,7 +2058,7 @@ msgstr "Ägare" msgid "labels.password" msgstr "Lösenord" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Pågående" @@ -2084,11 +2082,11 @@ msgstr "Produktledning" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projekt" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Releaseinformation" @@ -2102,11 +2100,11 @@ msgstr "Ladda om fil" msgid "labels.remove" msgstr "Ta bort" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Ta bort medlem" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Byt namn" @@ -2134,7 +2132,7 @@ msgstr "nytt svar" msgid "labels.reply.thread" msgstr "Svara" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Skicka inbjudan igen" @@ -2146,15 +2144,15 @@ msgstr "Återställ" msgid "labels.retry" msgstr "Försök igen" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Roll" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Spara" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Sök" @@ -2182,11 +2180,11 @@ msgstr "Vi utför schemalagt underhåll av våra system." msgid "labels.service-unavailable.main-message" msgstr "Tjänsten är inte tillgänglig" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Uppsättningar" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Inställningar" @@ -2198,11 +2196,11 @@ msgstr "Dela" msgid "labels.share-prototype" msgstr "Dela prototyp" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Bibliotek" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Visa alla kommentarer" @@ -2210,11 +2208,11 @@ msgstr "Visa alla kommentarer" msgid "labels.show-comments-list" msgstr "Visa kommentarslista" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Visa bara dina omnämnanden" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Visa bara dina kommentarer" @@ -2226,7 +2224,7 @@ msgstr "Koncept" msgid "labels.start" msgstr "Start" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Status" @@ -2248,7 +2246,7 @@ msgstr "Teammedlem" msgid "labels.themes" msgstr "Teman" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Självstudier" @@ -2276,15 +2274,15 @@ msgstr "Ladda upp teckensnitt" msgid "labels.uploading" msgstr "Laddar upp…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Enbart visning" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Visare" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2292,11 +2290,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "Skriv ny kommentar" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(du)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Ditt konto" @@ -2305,23 +2303,23 @@ msgstr "Ditt konto" msgid "labels.youtube" msgstr "YouTube" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Välj bild" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Gradient" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Bild" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Behåll aspektförhållandet" @@ -2339,7 +2337,7 @@ msgstr "Laddar bild…" msgid "media.radial" msgstr "Radiell" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Fylld" @@ -2415,19 +2413,19 @@ msgstr "Skapa token" msgid "modals.create-access-token.title" msgstr "Generera accesstoken" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Skapa webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Skapa webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Payload URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2473,11 +2471,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Radera konversation" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Är du säker på att du vill radera anteckningen?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Radera anteckningen" @@ -2525,11 +2523,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Ta bort teckensnitt" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Är du säker på att du vill ta bort den här sidan?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Radera sida" @@ -2575,29 +2573,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Raderar fil" msgstr[1] "Raderar filer" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Radera team" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Är du säker på att du vill ta bort det här teamet? Alla projekt och filer " "som är kopplade till teamet raderas permanent." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Ta bort team" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Ta bort medlemmar" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Är du säker på att du vill ta bort den här medlemmen från teamet?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Ta bort teammedlem" @@ -2611,57 +2609,57 @@ msgstr[1] "" "Tillgångar som redan har använts i dessa filer kommer att finnas kvar där " "(ingen design kommer att förstöras)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Ta bort webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Är du säker på att du vill ta bort denna webhook?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Raderar webhook" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Redigera webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Redigera webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Skicka inbjudan" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-post, kommaseparerad" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Vissa e-postmeddelanden är från nuvarande teammedlemmar. Deras inbjudningar " "kommer inte att skickas." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Du kan bjuda in medlemmar till teamet så att de får tillgång till den här " "filen och alla teamets filer." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Bjud in teammedlemmar till teamet" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Eftersom du är den enda medlemmen i det här teamet raderas teamet " "tillsammans med sina projekt och filer." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Är du säker på att du vill lämna %s teamet?" @@ -2689,15 +2687,15 @@ msgstr "Välj en medlem att befordra" msgid "modals.leave-and-reassign.title" msgstr "Innan du lämnar" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Lämna teamet" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Är du säker på att du vill lämna teamet?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Lämnar teamet" @@ -2719,39 +2717,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Flytta biblioteket" msgstr[1] "Flytta biblioteken" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Knuffmängd" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Överför ägandet" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Om du överför ägandet kommer du att ändra din roll till Admin och förlora " "vissa behörigheter över det här teamet. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Du är den nuvarande ägaren av detta team. Är du säker på att du vill göra " "%s till den nya ägaren av teamet?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Ny teamägare" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Publicera" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Ditt bibliotek är tomt. Är du säker på att du vill publicera den?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Publicera tomt bibliotek" @@ -2807,21 +2805,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Uppdaterar komponenter i ett delat bibliotek" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Uppdatera" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Avbryt" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Du håller på att uppdatera komponenter i ett delat bibliotek. Detta kan " "påverka andra filer som använder den." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Uppdatera en komponent i ett delat bibliotek" @@ -2933,11 +2931,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "En ny version är tillgänglig, uppdatera sidan" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Inbjudan skickades" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Inbjudningslänken kopierades" @@ -3087,7 +3085,7 @@ msgstr "" "Kom ihåg att inkludera alla. Utvecklare, designers, chefer... mångfald gör " "skillnad :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Bjud in med rollen:" @@ -3307,665 +3305,649 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Gå till Logga in" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Separera" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Mixad" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Ta bort färg" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Välj objekt med denna stil" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Grundläggande" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Översiktsvy" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Visare" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Arbetsyta" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Justering" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Redigera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Allmän" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Allmän" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Huvudmeny" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Redigera lager" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Navigation" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Paneler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Banor" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Former" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Texter" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Verktyg" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Kommentarer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Lägg till nod" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Justera botten" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Justera centrum" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Justera centrum horisontellt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Justera text till båda marginalerna" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Justera vänster" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Justera höger" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Justera toppen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Justera centrum vertikalt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Skapa tavla från markering" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Växla mellan fetstil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Boolesk skillnad" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Boolean exkluderar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Boolean korsning" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Booleansk union" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Flytta längst bak" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Flytta bakåt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Flytta framåt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Flytta längst fram" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Ångra rensa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopiera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Kopiera länk till urklipp" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Skapa ny" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Klipp ut" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Zooma ut" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Radera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Radera nod" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Separera komponent" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Kurva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Ellips" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Tavla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Rita bana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Bana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Rektangel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Duplicera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Avbryt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Exportera former" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Zooma för att få plats med alla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Vänd horisontellt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Vänd vertikalt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Minska teckenstorleken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Öka teckenstorleken" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Gå till utkast" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Gå till delade bibliotek" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Sök" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Grupp" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Distribuera horisontellt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Visa / dölja UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Zooma in" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Infoga bild" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Växla mellan kursiv stil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Sammanfoga noder" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Minska bokstavsavståndet" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Öka bokstavsavståndet" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Minska radhöjden" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Öka radhöjden" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Växla mellan linje igenom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Gör ett hörn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Gör en kurva" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Mask" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Sammanfoga noder" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Flytta" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Flytta ner snabbt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Flytta vänster snabbt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Flytta höger snabbt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Flytta upp snabbt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Flytta nod" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Flytta ner" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Flytta vänster" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Flytta höger" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Flytta upp" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Nästa tavla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Inga genvägar hittades" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Ställ in opacitet på 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Ställ in opacitet på 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Ställ in opacitet på 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Ställ in opacitet på 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Ställ in opacitet på 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Ställ in opacitet på 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Ställ in opacitet på 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Ställ in opacitet på 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Ställ in opacitet på 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Ställ in opacitet på 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Färgväljare" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Gå till visarens kommentarsektion" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Gå till översiktsvyn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Gå till visarens inspektionssektion" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Gå till visarens interaktionssektion" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Gå till visarens interaktionssektion" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Gå till arbetsytan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " eller " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Klistra in" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Föregående tavla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Återställ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Byt namn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Nollställ zoomen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Skala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Sök genvägar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Markera allt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Välj nästa lager" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Välj överordnat lager" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Välj föregående lager" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Separera noder" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Visa / dölj pixelrutnät" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Visa / dölj genvägar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Fäst vid noder" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Fäst till pixelrutnät" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Börja redigera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Starta mätningen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Stoppa mätningen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Ställ in miniatyrbilder" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Snabbkommandon" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Växla dynamisk justering" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Växla tillgångar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Växla färgpalett" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Växla fokusläge" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Växla till helskärm" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Visa / dölj guidelinjer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Växla historia" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Växla lager" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Lägg till/ta bort flex layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Lägg till/ta bort grid-layout" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Lås / lås upp" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Lås proportioner" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Visa / dölja linjaler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Fäst till guidelinjer" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Fäst till linjaler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Växla textpalett" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Ändra tema" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Visa / dölj" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Växla zoomstil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Växla understrykning" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Ångra" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Avgruppera" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Avmaska" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Distribuera vertikalt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Minskning av zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Ökning av zoom" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Zooma in markerad" @@ -4021,19 +4003,19 @@ msgstr "Lösenord - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Inbjudningar - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Medlemmar - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Inställningar - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -4105,43 +4087,43 @@ msgstr "Visa interaktioner på klick" msgid "viewer.header.sitemap" msgstr "Översiktsplan" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Senaste leveransen lyckades." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Justera horisontellt centrum (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Distribuera horisontellt avstånd (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Justera vänster (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Justera höger (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Justera botten (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Justera vertikalt centrum (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Distribuera vertikalt avstånd (%)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Justera toppen (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Lägg till bibliotek" @@ -4150,19 +4132,19 @@ msgstr "Lägg till bibliotek" msgid "workspace.assets.assets" msgstr "Tillgångar" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Alla tillgångar" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Färger" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Lägg till färg" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Komponenter" @@ -4170,19 +4152,19 @@ msgstr "Komponenter" msgid "workspace.assets.components.add-component" msgstr "Lägg till komponent" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Skapa en grupp" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Dina objekt kommer att namnges automatiskt som \"gruppnamn / objektnamn\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Radera" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Duplicera" @@ -4190,11 +4172,11 @@ msgstr "Duplicera" msgid "workspace.assets.duplicate-main" msgstr "Duplicera huvudarbetsytan" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Redigera" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filter" @@ -4203,23 +4185,23 @@ msgstr "Filter" msgid "workspace.assets.graphics" msgstr "Grafik" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Rutnätsvy" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Grupp" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Gruppnamn" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Listvy" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "lokala bibliotek" @@ -4231,15 +4213,15 @@ msgstr "Inga tillgångar hittades" msgid "workspace.assets.open-library" msgstr "Öppna bibliotek fil" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Byt namn" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Byt namn på gruppen" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Sök tillgångar" @@ -4255,21 +4237,21 @@ msgstr[1] "%s objekt markerade" msgid "workspace.assets.shared-library" msgstr "Delat bibliotek" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 komponent" msgstr[1] "%s komponenter" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Sortera" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Typografi" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Lägg till teckenssnitt" @@ -4294,7 +4276,7 @@ msgstr "Teckenavstånd" msgid "workspace.assets.typography.line-height" msgstr "Radavstånd" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4306,59 +4288,59 @@ msgstr "Textstilar" msgid "workspace.assets.typography.text-transform" msgstr "Texttransformation" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Avgruppera" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Skapa område" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Skapa tavla" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Sammanfoga celler" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Lägg till 1 kolumn till höger" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Lägg till 1 kolumn till vänster" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Radera kolumn" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Ta bort kolumn och former" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Duplicera kolumn" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Lägg till 1 rad nedanför" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Lägg till 1 rad ovanför" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Ta bort rad" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Ta bort rad och former" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Duplicera rad" @@ -4366,7 +4348,7 @@ msgstr "Duplicera rad" msgid "workspace.focus.focus-mode" msgstr "Fokusläge" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Fokusera av" @@ -4386,11 +4368,11 @@ msgstr "Linjär gradient" msgid "workspace.gradients.radial" msgstr "Radiell gradient" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Inaktivera dynamisk justering" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Inaktivera proportionell skala" @@ -4399,23 +4381,23 @@ msgstr "Inaktivera proportionell skala" msgid "workspace.header.menu.disable-scale-text" msgstr "Inaktivera skala text" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Inaktivera fäst till guidelinjer" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Inaktivera fäst till pixelrutnät" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Inaktivera fäst till linjaler" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Aktivera dynamisk justering" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Aktivera proportionell skalning" @@ -4424,51 +4406,51 @@ msgstr "Aktivera proportionell skalning" msgid "workspace.header.menu.enable-scale-text" msgstr "Aktivera textskalning" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Fäst till guidelinjer" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Aktivera fäste till pixelrutnät" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Fäst till linjaler" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Dölj tavelnamn" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Dölj guidelinjer" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Dölj färgpalett" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Dölj pixelrutnät" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Dölj linjaler" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Dölj teckensnittspaletten" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Redigera" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Fil" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Hjälp & info" @@ -4477,59 +4459,59 @@ msgstr "Hjälp & info" msgid "workspace.header.menu.option.power-up" msgstr "Starta upp dina plan" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Inställningar" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Visa" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Återställ" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Markera allt" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Visa kartnamn" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Visa guidelinjer" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Visa färgpalett" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Visa pixelrutnät" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Visa linjaler" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Visa teckensnittpalett" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Växla till mörkt tema" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Växla till ljust tema" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Ångra" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Återställ" @@ -4545,7 +4527,7 @@ msgstr "Sparad" msgid "workspace.header.saving" msgstr "Sparar" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Dela" @@ -4554,11 +4536,11 @@ msgstr "Dela" msgid "workspace.header.unsaved" msgstr "Osparade ändringar" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Visningsläge (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Zoom" @@ -4570,7 +4552,7 @@ msgstr "Fylla - Skala för att fylla" msgid "workspace.header.zoom-fit" msgstr "Anpassa - Skala ner för att passa" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Zooma för att få plats med alla" @@ -4578,19 +4560,19 @@ msgstr "Zooma för att få plats med alla" msgid "workspace.header.zoom-full-screen" msgstr "Helskärm" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Zooma in markerad" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Redigera grid" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Avsluta" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Visa padding-inställningar för 4 sidor" @@ -4606,7 +4588,7 @@ msgstr "Klart" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Lokalisera" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Lokalisera rutnätslayout" @@ -4615,10 +4597,6 @@ msgstr "Lokalisera rutnätslayout" msgid "workspace.libraries.add" msgstr "Lägg till" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s färger" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Du har inga färgstilar i ditt bibliotek" @@ -4645,43 +4623,35 @@ msgstr "Nyligen använda färger" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB komplementerande" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Spara färgstil" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s komponenter" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Eller lägg till några av dessa för att prova:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "Det finns inga delade bibliotek i ditt team, du kan leta efter" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "några mallar här" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Filbibliotek" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s grafik" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BIBLIOTEK I DENNA FIL" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "BIBLIOTEK" @@ -4690,11 +4660,11 @@ msgstr "BIBLIOTEK" msgid "workspace.libraries.library" msgstr "BIBLIOTEK" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "BIBLIOTEKUPDATERINGAR" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Laddar…" @@ -4703,79 +4673,75 @@ msgstr "Laddar…" msgid "workspace.libraries.more-templates" msgstr "Du kan titta efter " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Det finns inga delade bibliotek som behöver uppdateras" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Inga träffar hittades för ”%s”" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Sök delade bibliotek" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "DELADE BIBLIOTEK" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Anslut bibliotek" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Flera typografier" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Avlänka alla typografier" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s typografier" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Koppla från biblioteket" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Uppdatera" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "se alla ändringar" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "UPDATERINGAR" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Klicka på + knappen för att lägga till interaktioner." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Lägg till oskärpa" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Ta bort oskärpa" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Oskärpa" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Grupposkärpa" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Oskärpemarkering" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Växla oskärpa" @@ -4783,39 +4749,39 @@ msgstr "Växla oskärpa" msgid "workspace.options.canvas-background" msgstr "Canvas bakgrund" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Innehåll i urklipp" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Komponent" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Anteckning" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Kopiera" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Skapa en anteckning" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Redigera en anteckning" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Huvuddel" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Växla komponent" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Det finns inga tillgångar i detta bibliotek" @@ -4859,7 +4825,7 @@ msgstr "Topp" msgid "workspace.options.constraints.topbottom" msgstr "Topp & Botten" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Design" @@ -4872,21 +4838,21 @@ msgstr "Exportera" msgid "workspace.options.export-multiple" msgstr "Exportera markerade" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Exportera 1 element" msgstr[1] "Exportera %s element" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Lägg till export" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Ta bort export" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Suffix" @@ -4894,7 +4860,7 @@ msgstr "Suffix" msgid "workspace.options.exporting-complete" msgstr "Exporten lyckades" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Exporterar…" @@ -4906,23 +4872,23 @@ msgstr "Exporten misslyckades" msgid "workspace.options.exporting-object-slow" msgstr "Exporten oväntat långsam" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Fylla" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Lägg till fyllningsfärg" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Ta bort fyllningsfärg" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Lägg till flödesstart" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Flöde" @@ -4931,19 +4897,19 @@ msgstr "Flöde" msgid "workspace.options.flows.flow-start" msgstr "Flödesstart" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Flödet startar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Ta bort flöde" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Auto" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Kolumner" @@ -4952,7 +4918,7 @@ msgstr "Kolumner" msgid "workspace.options.grid.grid-title" msgstr "Rutnät" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Färg" @@ -4961,15 +4927,15 @@ msgstr "Färg" msgid "workspace.options.grid.params.columns" msgstr "Kolumner" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Mellanrum" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Höjd" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Marginal" @@ -4978,7 +4944,7 @@ msgstr "Marginal" msgid "workspace.options.grid.params.rows" msgstr "Rader" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Sätt som standard" @@ -4992,159 +4958,159 @@ msgstr "Storlek" msgid "workspace.options.grid.params.type" msgstr "Typ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Botten" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Center" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Vänster" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Höger" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Stretcha" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Topp" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Använd standard" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Bredd" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Rader" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Kvadrat" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Gruppfyllning" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Gruppera fet" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Lägg till guide" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Ta bort guide" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Guidelinjer" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Växla guide" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Höjd" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Inspektion" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Åtgärd" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Efter fördröjning" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Animering" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Lös upp" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Ingen" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Täck" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Sida" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "auto" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Lägg till bakgrundsöverlagring" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Stäng när du klickar utanför" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Stäng överlagring" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Stäng överlagring: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Fördröj" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Destination" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Varaktighet" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Rörelsemönster" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Mjuk start snabb" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Mjuk start" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Mjuk start och avslut" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Mjukt avslut" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Linjär" @@ -5153,47 +5119,47 @@ msgstr "Linjär" msgid "workspace.options.interaction-in" msgstr "I" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Musmarkören kommer in" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Musmarkören lämnar" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Navigera till" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Navigera till: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(inte inställd)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Förskjutningseffekt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "På klick" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Öppna överlagring" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Öppna överlagring: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Öppna URL" @@ -5202,87 +5168,87 @@ msgstr "Öppna URL" msgid "workspace.options.interaction-out" msgstr "Ut" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Botten centrum" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Vänster botten" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Höger botten" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Center" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Manuell" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Topp centrum" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Topp vänster" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Topp höger" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Position" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Bevara scroll position" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Föregående skärm" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Relativ till" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "själv" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Växla överlagring" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Växla överlagring: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Utlösare" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "När du håller muspekaren över" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "När du trycker" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Interaktioner" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Lägg till interaktion" @@ -5291,67 +5257,67 @@ msgstr "Lägg till interaktion" msgid "workspace.options.interactions.remove-interaction" msgstr "Ta bort interaktion" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Färg" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Efterbelys färg" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Färgskugga" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Mörkare" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Differens" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Uteslutning" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Skarpt ljus" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Nyans" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Ljusare" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Luminiscens" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Multiplicera" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Täcka över" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Mättnad" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Raster" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Mjukt ljus" @@ -5370,7 +5336,7 @@ msgstr "Gruppera lager" msgid "workspace.options.layer-options.title.multiple" msgstr "Markerade lager" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Växla lagersynlighet" @@ -5379,19 +5345,19 @@ msgstr "Växla lagersynlighet" msgid "workspace.options.layout-item.advanced-ops" msgstr "Avancerade alternativ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Max.höjd" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Max.bredd" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.höjd" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.bredd" @@ -5505,15 +5471,15 @@ msgstr "utrymme mellan" msgid "workspace.options.layout.top" msgstr "Topp" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Fler färger" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Fler biblioteksfärger" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opacitet" @@ -5522,35 +5488,35 @@ msgstr "Opacitet" msgid "workspace.options.position" msgstr "Position" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototyp" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Radie" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Vänster botten" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Höger botten" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Topp vänster" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Topp höger" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Dra ihop oberoende radie" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Visa oberoende radie" @@ -5562,7 +5528,7 @@ msgstr "Nyligen" msgid "workspace.options.retry" msgstr "Försök igen" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Rotering" @@ -5570,31 +5536,31 @@ msgstr "Rotering" msgid "workspace.options.search-font" msgstr "Sök teckensnitt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Välj en form, tavla eller grupp för att dra en anslutning till andra kartor." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Markerade färger" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Fyllning inom markering" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Markeringskontur" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Lägg till skugga" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Oskärpa" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Skuggfärg" @@ -5606,55 +5572,56 @@ msgstr "Släpskugga" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Innerskugga" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Ta bort skugga" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Spridning" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Skugga" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Gruppskugga" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Urvalda skuggor" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Växla skugga" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Visa i exporter" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Visa i visningsläge" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Storlek" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Storleksinställningar" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Fet" @@ -5663,7 +5630,7 @@ msgstr "Fet" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Cirkelmarkör" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Cirkel" @@ -5672,7 +5639,7 @@ msgstr "Cirkel" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Diamantmarkör" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Diamant" @@ -5681,19 +5648,19 @@ msgstr "Diamant" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Linjepil" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Pil" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Ingen" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Runda" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Kvadrat" @@ -5702,7 +5669,7 @@ msgstr "Kvadrat" msgid "workspace.options.stroke-cap.square-marker" msgstr "Kvadratmarkör" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Rektangel" @@ -5711,83 +5678,83 @@ msgstr "Rektangel" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Triangelpil" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Triangel" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Konturfärg" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Konturbredd" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Lägg till streckfärg" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Center" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Streckad" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Prickad" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Inuti" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Mixad" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Utanför" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Ta bort streckfärg" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Fylld" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Justera botten" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Justera mitten" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Justera toppen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Autohöjd" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Autobredd" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Fast" @@ -5809,35 +5776,35 @@ msgstr "Gemener" msgid "workspace.options.text-options.none" msgstr "Ingen" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Genomstruken (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Justera center" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Rättfärdiga" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Justera vänster" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Justera höger" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Text" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Grupptext" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Markerad text" @@ -5846,7 +5813,7 @@ msgstr "Markerad text" msgid "workspace.options.text-options.titlecase" msgstr "Versalbörjan" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Understruken (%s)" @@ -5855,19 +5822,19 @@ msgstr "Understruken (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Versaler" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Använd spelknappen i sidhuvudet för att köra prototypvisaren." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Bredd" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X axel" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y axel" @@ -5911,109 +5878,109 @@ msgstr "Separera noder (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Fästnoder (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Öppna" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Upptäck [fler plugins](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Inga plugins installerade" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Pluginmanifestet är felaktigt." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Du måste vara redaktör för att kunna använda detta plugin" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Pluginen finns inte eller är URL:en fel." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Installera" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Installerade plugins" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Pluginhanterare" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Plugins" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "UPPDATERA DETTA PLUGIN" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "Detta plugin har ändrats sedan du senast öppnade det. Det vill nu också få " "tillgång till:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Starta nedladdning av filer." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Läs dina kommentarer och svar." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Läs och modifiera dina kommentarer och svara i ditt namn." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Läs innehållet i filer som användarna har tillgång till." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Läs och ändra innehållet i filer som användarna har tillgång till." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Observera att detta plugin har skapats av en extern part, så se till att du " "litar på den innan du ger åtkomst. Din datasekretess och säkerhet är " "viktiga för oss. Om du har några frågor, vänligen kontakta support." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Läs dina bibliotek och tillgångar." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Läs och modifiera dina bibliotek och tillgångar." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "'%s' PLUGIN ÖNSKAR TILLGÅNG TILL:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Läs den aktuella användarens profilinformation." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Lista på plugins" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Ta bort plugin" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Skriv in plugin URL" @@ -6021,26 +5988,26 @@ msgstr "Skriv in plugin URL" msgid "workspace.plugins.success" msgstr "Pluginen laddades." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Plugins" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "INTE NU" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Vill du ta en titt? Det kommer att öppnas i ett nytt utkast för ditt " "nuvarande team. (Om inte, kan du alltid hitta det i de installerade plugins " "för alla filer.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "'%s' PLUGIN ÄR INSTALLERAD FÖR DIN ANVÄNDARE!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "TESTA PLUGIN" @@ -6052,7 +6019,7 @@ msgstr "Lägg till flex layout" msgid "workspace.shape.menu.add-grid" msgstr "Lägg till grid layout" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Lägg till layout" @@ -6088,7 +6055,7 @@ msgstr "Kopiera/Klistra in som ..." msgid "workspace.shape.menu.copy-props" msgstr "Kopiera egenskaper" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Skapa anteckning" @@ -6096,11 +6063,11 @@ msgstr "Skapa anteckning" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Markering till tavla" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Skapa komponent" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Skapa flera komponenter" @@ -6108,7 +6075,7 @@ msgstr "Skapa flera komponenter" msgid "workspace.shape.menu.cut" msgstr "Klipp ut" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Radera" @@ -6116,15 +6083,15 @@ msgstr "Radera" msgid "workspace.shape.menu.delete-flow-start" msgstr "Ta bort flödesstart" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Koppla från instans" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Koppla från instanser" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Skillnad" @@ -6136,11 +6103,11 @@ msgstr "Duplicera" msgid "workspace.shape.menu.edit" msgstr "Redigera" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Exkludera" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Platta ut" @@ -6173,19 +6140,19 @@ msgstr "Gå till huvudkomponentfil" msgid "workspace.shape.menu.group" msgstr "Grupp" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Dölj" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Via / Dölj UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Intersektion" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Lås" @@ -6193,7 +6160,7 @@ msgstr "Lås" msgid "workspace.shape.menu.mask" msgstr "Mask" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Klistra in" @@ -6213,7 +6180,7 @@ msgstr "Ta bort flex layout" msgid "workspace.shape.menu.remove-grid" msgstr "Ta bort grid layout" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Ta bort layout" @@ -6221,11 +6188,11 @@ msgstr "Ta bort layout" msgid "workspace.shape.menu.rename" msgstr "Byt namn" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Återställ standardvärden" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Återställ huvudkomponent" @@ -6233,15 +6200,15 @@ msgstr "Återställ huvudkomponent" msgid "workspace.shape.menu.select-layer" msgstr "Välj lager" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Visa" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Visa i tillgångspanelen" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Visa huvudkomponent" @@ -6254,6 +6221,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Ställ in som miniatyrbild" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Gör om till bana" @@ -6261,11 +6229,11 @@ msgstr "Gör om till bana" msgid "workspace.shape.menu.ungroup" msgstr "Avgruppera" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Sammanfoga" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Lås upp" @@ -6278,7 +6246,7 @@ msgstr "Avmaska" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Uppdatera huvudkomponenter" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Uppdatera huvudkomponent" @@ -6290,11 +6258,11 @@ msgstr "Minimera sidonavigation" msgid "workspace.sidebar.expand" msgstr "Expandera sidonavigation" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Historia" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Lager" @@ -6334,11 +6302,11 @@ msgstr "Texter" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Importerade SVG attribut" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Sidor" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Lägg till sida" @@ -6355,7 +6323,7 @@ msgstr "%s aktiva teman" msgid "workspace.tokens.add set" msgstr "Lägg till uppsättning" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Tillbaka till temalista" @@ -6363,15 +6331,15 @@ msgstr "Tillbaka till temalista" msgid "workspace.tokens.create-new-theme" msgstr "Skapa ditt första tema nu." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Skapa ett." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Skapa en ny %s token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Ta bort token" @@ -6379,15 +6347,15 @@ msgstr "Ta bort token" msgid "workspace.tokens.delete-theme-title" msgstr "Ta bort tema" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Duplicera token" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Redigera token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Redigera tema" @@ -6395,11 +6363,7 @@ msgstr "Redigera tema" msgid "workspace.tokens.edit-themes" msgstr "Redigera teman" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Redigera token" - -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Ange %s tokennamn" @@ -6412,11 +6376,11 @@ msgstr "Gruppering av Token Set stöds inte." msgid "workspace.tokens.no-active-theme" msgstr "Inget tema aktiverat" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Det finns inga uppsättningar definierade. Skapa ett först." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Det finns inga uppsättningar." @@ -6428,12 +6392,12 @@ msgstr "Det finns inga teman." msgid "workspace.tokens.no-themes-currently" msgstr "Du har för närvarande inga teman." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Originalvärde: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Lösta värden: " @@ -6442,11 +6406,11 @@ msgstr "Lösta värden: " msgid "workspace.tokens.save-theme" msgstr "Spara tema" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Välj uppsättning." -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "" "Definiera vilka tokenuppsättningar som ska användas som en del av detta " @@ -6461,24 +6425,24 @@ msgstr "Token set är inte aktivt" msgid "workspace.tokens.theme-name" msgstr "Tema %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Beskrivning" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Namn" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Värde" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Verktyg" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Tillgångar" @@ -6486,7 +6450,7 @@ msgstr "Tillgångar" msgid "workspace.toolbar.color-palette" msgstr "Färgpalett (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Kommentarer (%s)" @@ -6693,19 +6657,19 @@ msgstr "Körning över %s" msgid "workspace.undo.title" msgstr "Historia" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Avfärda" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Mer info" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Det finns uppdateringar i delade bibliotek" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Uppdatera" @@ -6765,11 +6729,11 @@ msgstr "Vill du återställa den här versionen?" msgid "workspace.versions.snapshot-menu" msgstr "Öppna snapshot-menyn" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Åtgärder" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Historik" diff --git a/frontend/translations/ta.po b/frontend/translations/ta.po index 7fd2e61ea6..e05958e391 100644 --- a/frontend/translations/ta.po +++ b/frontend/translations/ta.po @@ -144,7 +144,7 @@ msgstr "ஒரு கணக்கை உருவாக்கவும்" msgid "auth.sidebar-tagline" msgstr "வடிவமைப்பு மற்றும் முன்மாதிரிக்கான திறந்த மூல தீர்வு." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "சேவை விதிமுறைகள்" @@ -152,7 +152,7 @@ msgstr "சேவை விதிமுறைகள்" msgid "auth.verification-email-sent" msgstr "சரிபார்ப்பு மின்னஞ்சலை அனுப்பியுள்ளோம் இந்த முகவரிக்கு" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "வெளியிடுங்கள்" diff --git a/frontend/translations/th.po b/frontend/translations/th.po index 8c44cc1e02..cf3b0a5c01 100644 --- a/frontend/translations/th.po +++ b/frontend/translations/th.po @@ -164,7 +164,7 @@ msgstr "โซลูชันโอเพนซอร์สสำหรับก msgid "auth.terms-and-privacy-agreement" msgstr "ฉันยอมรับ [ข้อกำหนดการให้บริการ](%s)และ[นโยบายความเป็นส่วนตัว](%s)" -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "เงื่อนไขการให้บริการ" @@ -339,27 +339,27 @@ msgstr "โทเคนนี้ไม่มีวันหมดอายุ" msgid "dashboard.change-email" msgstr "เปลี่ยนอีเมล" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(คัดลอก)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "สร้างทีมใหม่" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Penpot ของคุณ" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "ลบทีม" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "ดาวน์โหลดไฟล์ Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "ดาวน์โหลดไฟล์มาตรฐาน (.svg + .json)" @@ -407,7 +407,7 @@ msgstr "ยังไม่มีไลบรารี" msgid "dashboard.export-binary-multi" msgstr "ดาวน์โหลด %s ไฟล์ Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "ส่งออกบอร์ดเป็น PDF" @@ -419,7 +419,7 @@ msgstr "ส่งออกเป็น PDF" msgid "dashboard.export-multi" msgstr "ส่งออก %s ไฟล์ Penpot" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "ส่งออก" @@ -515,7 +515,7 @@ msgstr "กำลังอัปโหลดข้อมูลไปยังเ msgid "dashboard.import.progress.upload-media" msgstr "กำลังอัปโหลดไฟล์: %s" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "ออกจากทีม" @@ -523,7 +523,7 @@ msgstr "ออกจากทีม" msgid "dashboard.libraries-and-templates" msgstr "ไลบรารีและเทมเพลต" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "พบปัญหาในการนำเข้าเทมเพลต เทมเพลตนี้จึงไม่ถูกนำเข้า" @@ -555,7 +555,7 @@ msgstr "ย้ายไปยังทีมอื่น" msgid "dashboard.new-file" msgstr "+ สร้างไฟล์ใหม่" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "สร้างไฟล์ใหม่" @@ -563,7 +563,7 @@ msgstr "สร้างไฟล์ใหม่" msgid "dashboard.new-project" msgstr "+ สร้างโปรเจกต์ใหม่" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "สร้างโปรเจกต์ใหม่" @@ -603,7 +603,7 @@ msgstr "คุณเป็นเจ้าของในทีมนี้แล msgid "dashboard.save-settings" msgstr "บันทึกการตั้งค่า" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "ค้นหา…" @@ -619,15 +619,15 @@ msgstr "เลือกธีม" msgid "dashboard.show-all-files" msgstr "แสดงไฟล์ทั้งหมด" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "ข้อมูลของทีม" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "สมาชิกของทีม" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "โปรเจกต์ของทีม" @@ -643,15 +643,15 @@ msgstr "ผลการค้นหา" msgid "dashboard.update-settings" msgstr "อัปเดตการตั้งค่า" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "ประเภทเนื้อหา" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "สร้าง Webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "สร้าง Webhook แล้ว" @@ -671,15 +671,15 @@ msgstr "อีเมล" msgid "dashboard.your-name" msgstr "ชื่อของคุณ" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Penpot ของคุณ" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "อนุญาต" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "ยกเลิก" @@ -691,11 +691,6 @@ msgstr "อีเมลถูกใช้ไปแล้ว" msgid "errors.email-domain-not-allowed" msgstr "โดเมนนี้ไม่ได้รับอนุญาต" -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "ต้องมีไม่เกิน 1 ตัวอักษร" - #, unused msgid "errors.field-min-length" msgstr "ต้องมีอย่างน้อย 1 ตัวอักษร" @@ -749,11 +744,11 @@ msgstr "เงา" msgid "inspect.attributes.stroke.width" msgstr "ความกว้าง" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "ขนาดฟอนต์" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "ระยะห่างระหว่างตัวอักษร" @@ -769,7 +764,7 @@ msgstr "บอร์ด" msgid "inspect.tabs.code.selected.svg-raw" msgstr "SVG" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "ชุมชน" @@ -777,7 +772,7 @@ msgstr "ชุมชน" msgid "labels.confirm-password" msgstr "ยืนยันรหัสผ่าน" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "คัดลอกลิงก์" @@ -797,15 +792,15 @@ msgstr "ฟอนต์ที่กำหนดเอง" msgid "labels.dashboard" msgstr "แดชบอร์ด" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "แก้ไข" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "เอดิเตอร์" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "ส่งออก" @@ -813,7 +808,7 @@ msgstr "ส่งออก" msgid "labels.figma" msgstr "Figma" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "ฟอนต์" @@ -825,7 +820,7 @@ msgstr "กราฟิกดีไซน์" msgid "labels.language" msgstr "ภาษา" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "ไลบรารีและเทมเพลต" @@ -833,15 +828,15 @@ msgstr "ไลบรารีและเทมเพลต" msgid "labels.loading" msgstr "กำลังโหลด…" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "ลงชื่อออก" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "สมาชิก" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "สมาชิก" @@ -857,7 +852,7 @@ msgstr "รหัสผ่านเดิม" msgid "labels.or" msgstr "หรือ" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "เจ้าของ" @@ -869,6 +864,6 @@ msgstr "รหัสผ่าน" msgid "labels.profile" msgstr "โปรไฟล์" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "โปรเจกต์" diff --git a/frontend/translations/tr.po b/frontend/translations/tr.po index 876dadb612..ccbf2131a6 100644 --- a/frontend/translations/tr.po +++ b/frontend/translations/tr.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" -"Last-Translator: Merih Güz \n" -"Language-Team: Turkish " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Çağlar Yeşilyurt \n" +"Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -68,7 +68,7 @@ msgstr "Oturum aç" #: src/app/main/ui/auth/login.cljs:285 msgid "auth.login-tagline" msgstr "" -"Penpot, tasarım ve kod işbirliği için özgür ve açık kaynaklı tasarım " +"Penpot, tasarım ve kod iş birliği için özgür ve açık kaynaklı tasarım " "aracıdır" #: src/app/main/ui/auth/login.cljs:222 @@ -177,7 +177,7 @@ msgstr "Tasarım ve prototipleme için açık-kaynak çözüm." msgid "auth.terms-and-privacy-agreement" msgstr "[Hizmet koşullarını](%s) ve [gizlilik politikasını](%s) kabul ediyorum." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Hizmet şartları" @@ -200,7 +200,7 @@ msgstr "İş e-postası" msgid "branding-illustrations-marketing-pieces" msgstr "...marka çalışması, çizimler, pazarlama materyalleri, vb." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Yayınla" @@ -272,7 +272,7 @@ msgstr "Prototipleri paylaş" msgid "common.share-link.view-all" msgstr "Tümünü Seç" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Yayından kaldır" @@ -324,23 +324,23 @@ msgstr "Arayüz İncelemesi" #: src/app/main/ui/settings/access_tokens.cljs:103 msgid "dashboard.access-tokens.copied-success" -msgstr "Belirteç kopyalandı" +msgstr "Token kopyalandı" #: src/app/main/ui/settings/access_tokens.cljs:189 msgid "dashboard.access-tokens.create" -msgstr "Yeni belirteç oluştur" +msgstr "Yeni token oluştur" #: src/app/main/ui/settings/access_tokens.cljs:64 msgid "dashboard.access-tokens.create.success" -msgstr "Erişim belirteci başarıyla oluşturuldu." +msgstr "Erişim tokeni başarıyla oluşturuldu." #: src/app/main/ui/settings/access_tokens.cljs:286 msgid "dashboard.access-tokens.empty.add-one" -msgstr "Bir belirteç oluşturmak için \"Yeni belirteç oluştur\" düğmesine basın." +msgstr "Bir token oluşturmak için \"Yeni token oluştur\" düğmesine basın." #: src/app/main/ui/settings/access_tokens.cljs:285 msgid "dashboard.access-tokens.empty.no-access-tokens" -msgstr "Şu ana kadar hiç belirteciniz yok." +msgstr "Şu ana kadar hiç tokeniniz yok." #: src/app/main/ui/settings/access_tokens.cljs:135 msgid "dashboard.access-tokens.expiration-180-days" @@ -376,24 +376,24 @@ msgstr "Süresiz" #: src/app/main/ui/settings/access_tokens.cljs:184 msgid "dashboard.access-tokens.personal" -msgstr "Kişisel erişim belirteçleri" +msgstr "Kişisel erişim tokenleri" #: src/app/main/ui/settings/access_tokens.cljs:185 msgid "dashboard.access-tokens.personal.description" msgstr "" -"Kişisel erişim belirteçleri, oturum açma/parola kimlik doğrulama " -"sistemimize alternatif olarak işlev görür ve bir uygulamanın dahili Penpot " -"API'sine erişmesine izin vermek için kullanılabilir" +"Kişisel erişim tokenleri, oturum açma/parola kimlik doğrulama sistemimize " +"alternatif olarak işlev görür ve bir uygulamanın dahili Penpot API'sine " +"erişmesine izin vermek için kullanılabilir" #: src/app/main/ui/settings/access_tokens.cljs:142 msgid "dashboard.access-tokens.token-will-expire" -msgstr "Belirtecin süresi %s tarihinde sona erecek" +msgstr "Tokenin süresi %s tarihinde sona erecek" #: src/app/main/ui/settings/access_tokens.cljs:143 msgid "dashboard.access-tokens.token-will-not-expire" -msgstr "Belirtecin sona erme tarihi yok" +msgstr "Tokenin sona erme tarihi yok" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Paylaşılan Kütüphane olarak ekle" @@ -401,27 +401,27 @@ msgstr "Paylaşılan Kütüphane olarak ekle" msgid "dashboard.change-email" msgstr "E-posta adresini değiştir" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(kopya)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Yeni takım oluştur" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Penpot'un" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Takımı sil" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Penpot dosyasını indir (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Standart dosyayı indir (.svg + .json)" @@ -437,7 +437,7 @@ msgstr "%s dosyanın kopyasını oluştur" msgid "dashboard.export-binary-multi" msgstr "%s Penpot dosyasını indir (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Çalışma yüzeylerini PDF olarak dışa aktar" @@ -453,7 +453,7 @@ msgstr "Penpot %s dosyalarını dışa aktar" msgid "dashboard.export-multiple.selected" msgstr "%s / %s öge seçildi" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Dışa aktar" @@ -633,11 +633,11 @@ msgstr "Veriler sunucuya yükleniyor (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Dosya yükleniyor: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "İnsanları davet et" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Takımdan ayrıl" @@ -649,7 +649,7 @@ msgstr "Kütüphaneler ve Şablonlar" msgid "dashboard.libraries-and-templates.explore" msgstr "Daha fazlasını keşfedin ve nasıl katkıda bulunacağınızı öğrenin" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Şablon içe aktarılırken bir sorun oluştu. Şablon içe aktarılmadı." @@ -681,7 +681,7 @@ msgstr "Başka takıma taşı" msgid "dashboard.new-file" msgstr "+ Yeni Dosya" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Yeni Dosya" @@ -689,7 +689,7 @@ msgstr "Yeni Dosya" msgid "dashboard.new-project" msgstr "+ Yeni Proje" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Yeni Proje" @@ -697,7 +697,7 @@ msgstr "Yeni Proje" msgid "dashboard.no-matches-for" msgstr "\"%s\" için sonuç bulunamadı" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Sabitlenmiş projeler burada görünür" @@ -713,7 +713,7 @@ msgstr "E-posta adresin başarıyla doğrulandı" msgid "dashboard.notifications.password-saved" msgstr "Parola başarıyla kaydedildi!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s üye" @@ -729,7 +729,7 @@ msgstr "Seçenekler" msgid "dashboard.password-change" msgstr "Parola değiştir" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Sabitle/Sabitleme" @@ -750,7 +750,7 @@ msgstr "Paylaşılan Kütüphane olarak sil" msgid "dashboard.save-settings" msgstr "Ayarları kaydet" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Ara…" @@ -790,7 +790,7 @@ msgstr[1] "Dosyalarınız başarıyla kopyalandı" msgid "dashboard.success-duplicate-project" msgstr "Projenin kopyası başarıyla oluşturuldu" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Dosyan başarıyla taşındı" @@ -802,15 +802,15 @@ msgstr "Dosyaların başarıyla taşındı" msgid "dashboard.success-move-project" msgstr "Projen başarıyla taşındı" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Takım bilgisi" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Takım üyeleri" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Takım projeleri" @@ -826,7 +826,7 @@ msgstr "Arama sonuçları" msgid "dashboard.type-something" msgstr "Aramak için yazın" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Kütüphaneyi Yayından Kaldır" @@ -834,38 +834,38 @@ msgstr "Kütüphaneyi Yayından Kaldır" msgid "dashboard.update-settings" msgstr "Ayarları güncelle" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Etkin" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Bu kanca tetiklendiğinde olay ayrıntıları iletilecektir" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "İçerik türü" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Web kancası oluştur" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Web kancası başarıyla oluşturuldu." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Web kancaları, Penpot'ta belirli olaylar gerçekleştiğinde diğer web " "sitelerinin ve uygulamaların bilgilendirilmesine izin vermenin basit bir " "yoludur. Belirttiğiniz URL'lerin her birine bir POST isteği göndereceğiz." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Bir tane eklemek için \"Web kancası ekle\" düğmesine basın." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "Şimdiye kadar web kancası oluşturulmadı." @@ -885,7 +885,7 @@ msgstr "E-posta" msgid "dashboard.your-name" msgstr "Adın" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Penpot'un" @@ -901,15 +901,15 @@ msgstr "Dikkat" msgid "ds.component-subtitle" msgstr "Güncellenecek bileşenler:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "İzin ver" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "İptal" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Tamam" @@ -961,11 +961,11 @@ msgstr "E-postanızı parola olarak kullanamazsınız" msgid "errors.email-domain-not-allowed" msgstr "Etki alanına izin verilmiyor" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "«%s» adresi için çok fazla geri dönme raporu var." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "«%s» e-postasının spam veya kalıcı olarak geri döndüğü bildirildi." @@ -979,11 +979,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "'%s' özelliği desteklenmiyor." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "En fazla 1 karakter içermelidir." - #, unused msgid "errors.field-min-length" msgstr "En az 1 karakter içermelidir." @@ -1000,7 +995,7 @@ msgstr "" "arasında bir uyumsuzluk var gibi görünüyor. Dosyanın açılabilmesi için önce " "'%s' için geçişlerin uygulanması gerekiyor." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Bir şeyler ters gitti." @@ -1033,7 +1028,7 @@ msgstr "Bu davet iptal edilmiş veya süresi dolmuş olabilir." msgid "errors.ldap-disabled" msgstr "LDAP ile oturum açma devre dışı bırakıldı." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "'%s' sınırına ulaştınız. Destek ile iletişime geçin." @@ -1049,7 +1044,7 @@ msgstr "Görselin içeriği, dosya uzantısı ile eşleşmiyor gibi görünüyor msgid "errors.media-type-not-allowed" msgstr "Geçerli bir görsel gibi görünmüyor." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Davet ettiğiniz profilin e-posta adresine ait çok fazla geri dönme raporu " @@ -1073,7 +1068,7 @@ msgstr "Panoda geçersiz veri" msgid "errors.profile-blocked" msgstr "Profil engellendi" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Profilinizde sessize alınmış e-postalar var (spam raporları veya yüksek " @@ -1087,15 +1082,15 @@ msgstr "Kayıt olma şu anda devre dışı." msgid "errors.team-feature-mismatch" msgstr "Uyumsuz '%s' özelliği algılandı" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "Takımdan ayrılmak için yeterli üye yok, onu silmek isteyebilirsiniz." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Atamaya çalıştığınız üye mevcut değil." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Sahip takımdan ayrılamaz, sahip rolünü yeniden atamanız gerekir." @@ -1115,31 +1110,31 @@ msgstr "Doğrulama Hatası" msgid "errors.version-not-supported" msgstr "Dosyanın uyumsuz bir sürüm numarası var" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Bağlantı hatası, URL'ye erişilemiyor" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL doğrulamayı geçemiyor." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Son iletim başarılı olmadı." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "SSL doğrulamasında hata." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Zaman aşımı" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Doğrulamada beklenmeyen hata" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Beklenmeyen durum %s" @@ -1203,19 +1198,19 @@ msgstr "Bir hata oluştu" msgid "inspect.attributes.blur" msgstr "Bulanıklık" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "Değer" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1223,7 +1218,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Doldur" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Kaynak görselini indir" @@ -1317,81 +1312,84 @@ msgstr "Düz" msgid "inspect.attributes.stroke.width" msgstr "Genişlik" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Tipografi" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Yazı Tipi Ailesi" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Yazı Tipi Boyutu" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Yazı Tipi Biçimi" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Yazı Tipi Kalınlığı" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Harf Aralığı" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Satır Yüksekliği" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Metin Süsleme" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Hiçbiri" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Altı Çizili" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Metin Dönüşümü" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "İlk Harfleri Büyük" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Küçük Harf" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Hiçbiri" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Ayarlanmadı" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Büyük Harf" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Tasarım incelemesi hakkında daha fazla bilgi edinmek istiyorsanız Penpot " "yardım merkezini ziyaret edin" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "İnceleme hakkında daha fazla bilgi" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "" "Özelliklerini ve kodunu incelemek için bir şekil, çalışma yüzeyi veya grup " @@ -1453,7 +1451,7 @@ msgstr "Metin" msgid "inspect.tabs.info" msgstr "Bilgi" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Kısayollar" @@ -1463,9 +1461,9 @@ msgstr "Kabul et" #: src/app/main/ui/settings/sidebar.cljs:123 msgid "labels.access-tokens" -msgstr "Erişim belirteçleri" +msgstr "Erişim tokenleri" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Etkin" @@ -1473,7 +1471,7 @@ msgstr "Etkin" msgid "labels.add-custom-font" msgstr "Özel yazı tipi ekle" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Yönetici" @@ -1481,7 +1479,7 @@ msgstr "Yönetici" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Hepsi" @@ -1504,7 +1502,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Hatalı Ağ Geçidi" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "İptal" @@ -1512,15 +1510,15 @@ msgstr "İptal" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Kapat" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Yorumlar" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Topluluk" @@ -1528,7 +1526,7 @@ msgstr "Topluluk" msgid "labels.confirm-password" msgstr "Parolayı onayla" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Devam et" @@ -1540,7 +1538,7 @@ msgstr "İle devam et" msgid "labels.continue-with-penpot" msgstr "Penpot hesabıyla devam edebilirsiniz" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Bağlantıyı kopyala" @@ -1548,7 +1546,7 @@ msgstr "Bağlantıyı kopyala" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Oluştur" @@ -1568,7 +1566,7 @@ msgstr "Özel yazı tipleri" msgid "labels.dashboard" msgstr "Denetim paneli" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Sil" @@ -1580,7 +1578,7 @@ msgstr "Yorumu sil" msgid "labels.delete-comment-thread" msgstr "Mesaj dizisini sil" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Daveti sil" @@ -1597,15 +1595,15 @@ msgstr "Geliştirici" msgid "labels.director" msgstr "Yönetici" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "At" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Taslak" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Düzenle" @@ -1613,7 +1611,7 @@ msgstr "Düzenle" msgid "labels.edit-file" msgstr "Dosya düzenle" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Düzenleyici" @@ -1622,11 +1620,11 @@ msgstr "Düzenleyici" msgid "labels.event" msgstr "Etkinlik" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Süresi doldu" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Dışa aktar" @@ -1654,7 +1652,7 @@ msgstr "Yazı tipi sağlayıcıları" msgid "labels.font-variants" msgstr "Biçimler" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Yazı tipleri" @@ -1668,11 +1666,11 @@ msgstr "Kurucu/Başkan Yardımcısı" msgid "labels.freelancer" msgstr "Serbest çalışıyorum" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Github deposu" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Geri bildirimde bulun" @@ -1684,15 +1682,15 @@ msgstr "Geri dön" msgid "labels.graphic-design" msgstr "Grafik tasarımı" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Yardım Merkezi" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" -msgstr "Çözülmüş yorumları gizle" +msgstr "Çözülen yorumları gizle" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Etkin değil" @@ -1714,7 +1712,7 @@ msgstr "İç Hata" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Davetler" @@ -1722,7 +1720,7 @@ msgstr "Davetler" msgid "labels.language" msgstr "Dil" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Kütüphaneler ve Şablonlar" @@ -1738,7 +1736,7 @@ msgstr "Oturum açın veya kaydolun" msgid "labels.login" msgstr "Oturum aç" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Oturumu kapat" @@ -1746,11 +1744,11 @@ msgstr "Oturumu kapat" msgid "labels.marketing" msgstr "Pazarlama" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Üye" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Üyeler" @@ -1758,15 +1756,15 @@ msgstr "Üyeler" msgid "labels.new-password" msgstr "Yeni parola" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Sonraki" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Hepsini bitirdiniz! Yeni yorum bildirimleri burada görünecektir." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "Bekleyen davetiye yok." @@ -1779,7 +1777,7 @@ msgstr "Bu sayfa mevcut olmayabilir veya erişim izniniz olmayabilir." msgid "labels.not-found.main-message" msgstr "Oops!" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "1 dosya" @@ -1791,7 +1789,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1 çalışma yüzeyi" msgstr[1] "%s çalışma yüzeyi" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 proje" @@ -1822,7 +1820,7 @@ msgstr "Diğer (lütfen belirtiniz)" msgid "labels.other-short" msgstr "Diğer" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Sahip" @@ -1830,7 +1828,7 @@ msgstr "Sahip" msgid "labels.password" msgstr "Parola" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Bekliyor" @@ -1850,11 +1848,11 @@ msgstr "Ürün veya Proje yöneticisi" msgid "labels.profile" msgstr "Profil" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Projeler" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Sürüm notları" @@ -1868,11 +1866,11 @@ msgstr "Dosyayı yeniden yükle" msgid "labels.remove" msgstr "Kaldır" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Üyeyi kaldır" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Yeniden adlandır" @@ -1880,7 +1878,7 @@ msgstr "Yeniden adlandır" msgid "labels.rename-team" msgstr "Takımı yeniden adlandır" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Daveti yeniden gönder" @@ -1888,15 +1886,15 @@ msgstr "Daveti yeniden gönder" msgid "labels.retry" msgstr "Yeniden dene" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Rol" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Kaydet" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Ara" @@ -1924,7 +1922,7 @@ msgstr "Sistemlerimizin programlı bakımını yapıyoruz." msgid "labels.service-unavailable.main-message" msgstr "Hizmet Kullanılamıyor" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Ayarlar" @@ -1936,11 +1934,11 @@ msgstr "Paylaş" msgid "labels.share-prototype" msgstr "Prototipi paylaş" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Paylaşılan Kütüphaneler" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Tüm yorumları göster" @@ -1948,7 +1946,7 @@ msgstr "Tüm yorumları göster" msgid "labels.show-comments-list" msgstr "Yorum listesini göster" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Yalnızca kendi yorumlarımı göster" @@ -1960,7 +1958,7 @@ msgstr "Sketch" msgid "labels.start" msgstr "Başla" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Durum" @@ -1978,7 +1976,7 @@ msgstr "Takım Lideri" msgid "labels.team-member" msgstr "Takım üyesi" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Öğreticiler" @@ -2006,15 +2004,15 @@ msgstr "Özel yazı tipi yükle" msgid "labels.uploading" msgstr "Yükleniyor…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "YALNIZCA GÖRÜNTÜLE" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Görüntüleyici" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Web kancaları" @@ -2022,11 +2020,11 @@ msgstr "Web kancaları" msgid "labels.write-new-comment" msgstr "Yeni yorum yaz" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(siz)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Hesabınız" @@ -2035,23 +2033,23 @@ msgstr "Hesabınız" msgid "labels.youtube" msgstr "YouTube" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Görsel seç" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Değişim" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Görsel" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "görsel" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "En boy oranını koru" @@ -2069,7 +2067,7 @@ msgstr "Görsel yükleniyor…" msgid "media.radial" msgstr "Işınsal" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Katı" @@ -2122,7 +2120,7 @@ msgstr "E-postanızı değiştirin" #: src/app/main/ui/settings/access_tokens.cljs:152, src/app/main/ui/settings/access_tokens.cljs:158 msgid "modals.create-access-token.copy-token" -msgstr "Belirteci kopyala" +msgstr "Tokeni kopyala" #: src/app/main/ui/settings/access_tokens.cljs:130 msgid "modals.create-access-token.expiration-date.label" @@ -2134,43 +2132,43 @@ msgstr "İsim" #: src/app/main/ui/settings/access_tokens.cljs:126 msgid "modals.create-access-token.name.placeholder" -msgstr "Adı, belirtecin ne için olduğunu bilmenize yardımcı olabilir" +msgstr "Adı, tokenin ne için olduğunu bilmenize yardımcı olabilir" #: src/app/main/ui/settings/access_tokens.cljs:178 msgid "modals.create-access-token.submit-label" -msgstr "Belirteç oluştur" +msgstr "Token oluştur" #: src/app/main/ui/settings/access_tokens.cljs:111 msgid "modals.create-access-token.title" -msgstr "Erişim belirteci oluştur" +msgstr "Erişim tokeni oluştur" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Web kancası oluştur" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Web kancası oluştur" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Yük URL'si" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" #: src/app/main/ui/settings/access_tokens.cljs:257 msgid "modals.delete-acces-token.accept" -msgstr "Belirteci sil" +msgstr "Tokeni sil" #: src/app/main/ui/settings/access_tokens.cljs:256 msgid "modals.delete-acces-token.message" -msgstr "Bu belirteci silmek istediğinizden emin misiniz?" +msgstr "Bu tokeni silmek istediğinizden emin misiniz?" #: src/app/main/ui/settings/access_tokens.cljs:255 msgid "modals.delete-acces-token.title" -msgstr "Belirteci sil" +msgstr "Tokeni sil" #: src/app/main/ui/settings/delete_account.cljs:56 msgid "modals.delete-account.cancel" @@ -2202,11 +2200,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Konuşmayı sil" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Bu açıklamayı silmek istediğinize emin misiniz?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Açıklamayı sil" @@ -2254,11 +2252,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Yazı tipini sil" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Bu sayfayı silmek istediğinden emin misin?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Sayfayı sil" @@ -2304,29 +2302,29 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "Dosya siliniyor" msgstr[1] "Dosyalar siliniyor" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Takımı sil" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Bu takımı silmek istediğinden emin misin? Takımla ilişkili dosyalar ve " "projeler kalıcı olarak silinecektir." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Takım siliniyor" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Üyeyi sil" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Bu üyeyi takımdan silmek istediğinden emin misin?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Takım üyesini sil" @@ -2340,51 +2338,51 @@ msgstr[1] "" "Bu dosyalarda daha önce kullanılmış olan varlıklar orada kalmaya devam " "edecek (hiçbir tasarım bozulmayacak)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Web kancasını sil" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Bu web kancasını silmek istediğinizden emin misiniz?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Web kancası siliniyor" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Web kancasını düzenle" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Web kancasını düzenle" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Davet gönder" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "E-posta adresleri, virgülle ayrılmış" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Bazı e-posta adresleri mevcut takım üyelerine aittir. Davetleri " "gönderilmeyecektir." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Üyeleri takıma davet et" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Tek üyesi siz olduğunuz için takım, projeleri ve dosyaları ile birlikte " "silinecektir." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "%s takımından ayrılmak istediğinizden emin misiniz?" @@ -2412,15 +2410,15 @@ msgstr "Terfi ettirmek için bir üye seçin" msgid "modals.leave-and-reassign.title" msgstr "Ayrılmadan önce" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Takımdan ayrıl" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Bu takımdan ayrılmak istediğinden emin misin?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Takımdan ayrıl" @@ -2442,39 +2440,39 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "Kütüphaneyi taşı" msgstr[1] "Kütüphaneleri taşı" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Dürtme miktarı" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Sahipliği aktar" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Sahipliği aktarırsanız, rolünüzü Yönetici olarak değiştireceksiniz ve bu " "takım üzerindeki bazı izinleri kaybedeceksiniz. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Bu takımın şu anki sahibi sizsiniz. %s kişisini takımın yeni sahibi yapmak " "istediğinizden emin misiniz?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Yeni takım sahibi" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Yayınla" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Kütüphaneniz boş. Yine de yayınlamak istediğinizden emin misiniz?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Boş kütüphaneyi yayınla" @@ -2529,21 +2527,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Paylaşılan bir kütüphanedeki bileşenleri güncelle" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Güncelle" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "İptal" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Paylaşılmış bir kütüphanedeki bileşeni güncellemek üzeresin. Onu kullanan " "diğer dosyalar etkilenebilir." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Paylaşılmış bir kütüphanede bir bileşen güncelle" @@ -2558,7 +2556,7 @@ msgstr "404 hatası" #: src/app/main/ui/static.cljs:133 msgid "not-found.login.free" msgstr "" -"Penpot, Tasarım ve Kod arasında işbirliği için özgür ve açık kaynaklı bir " +"Penpot, Tasarım ve Kod arasında iş birliği için özgür ve açık kaynaklı bir " "tasarım aracıdır" #: src/app/main/ui/auth/recovery_request.cljs:114 @@ -2655,11 +2653,11 @@ msgstr "Bakım arası: 5 dakika içinde kısa bir bakım için kapalı olacağı msgid "notifications.by-code.upgrade-version" msgstr "Yeni bir sürüm mevcut, lütfen sayfayı yenileyin" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Davet başarıyla iletildi" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Davet bağlantısı kopyalandı" @@ -2808,7 +2806,7 @@ msgstr "" "Herkesi dahil etmeyi unutmayın. Geliştiriciler, tasarımcılar, " "yöneticiler... çeşitlilik iyidir :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Rol ile davet et:" @@ -3026,653 +3024,637 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Oturum açmaya git" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Çıkar" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Karışık" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Bu biçimi kullanan ögeleri seç" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Temel bilgiler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Denetim paneli" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Görüntüleyici" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Çalışma alanı" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Hizalama" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Düzenle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Genel" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Genel" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Ana menü" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Katmanları değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Gezinme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Gezinme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Gezinme" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Paneller" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Yollar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Şekiller" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Metinler" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Araçlar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Yakınlaştır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Yakınlaştır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Yorumlar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Düğüm ekle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Alta hizala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Ortala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Ortayı yatay olarak hizala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "İki yana yasla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Sola hizala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Sağa hizala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Üste hizala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Ortayı dikey olarak hizala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Seçimden çalışma yüzeyi oluştur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Kalın yazı aç/kapat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Boole farkı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Boole hariç tut" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Boole kesişim" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Boole birleşim" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "En arkaya gönder" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Arkaya gönder" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Öne getir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "En öne getir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Geri almayı temizle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Kopyala" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Yeni oluştur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Kes" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Uzaklaştır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Sil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Düğümü sil" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Bileşeni ayır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Eğri" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Elips" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Çalışma yüzeyi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Yol çiz" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Yol" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Dikdörtgen" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Metin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Çoğalt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "İptal" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Şekilleri dışa aktar" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Tümüne uydurmak için yakınlaştır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Yatay olarak çevir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Dikey olarak çevir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Yazı boyutunu azalt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Yazı boyutunu artır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Taslaklara git" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Paylaşılan kütüphanelere git" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Ara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Grup" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Yatay olarak dağıt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Kullanıcı arayüzünü göster/gizle" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Yakınlaştır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Görsel ekle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "İtalik yazı aç/kapat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Düğümlere katıl" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Harf aralığını azalt" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Harf aralığını artır" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Satır yüksekliğini azalt" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Satır yüksekliğini artır" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Üstü çizili yazı aç/kapat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Köşe yap" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Eğri yap" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Maskele" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Düğümleri birleştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Hızlı aşağı taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Hızlı sola taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Hızlı sağa taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Hızlı yukarı taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Düğümü taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Aşağı taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Sola taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Sağa taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Yukarı taşı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Sonraki çalışma yüzeyi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Kısayol bulunamadı" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Opaklığı %100 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Opaklığı %10 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Opaklığı %20 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Opaklığı %30 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Opaklığı %40 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Opaklığı %50 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Opaklığı %60 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Opaklığı %70 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Opaklığı %80 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Opaklığı %90 olarak ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Renk seçici" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Görüntüleyici yorum bölümüne git" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Denetim paneline git" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Görüntüleyici inceleme bölümüne git" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Görüntüleyici etkileşimleri bölümüne git" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Görüntüleyici etkileşimleri bölümüne git" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Çalışma alanına git" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " veya " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Yapıştır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Önceki çalışma yüzeyi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Yeniden yap" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Yakınlaştırmayı sıfırla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Ölçeklendir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Kısayolları ara" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Tümünü seç" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Sonraki katmanı seç" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Ana katmanı seç" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Önceki katmanı seç" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Düğümleri ayır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Piksel ızgarasını göster/gizle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Kısayolları göster/gizle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Düğümlere tuttur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Piksel ızgarasına tuttur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Düzenlemeye başla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Ölçüme başla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Ölçümü durdur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Küçük resimleri ayarla" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Klavye kısayolları" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Dinamik hizalamayı aç/kapat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Varlıkları değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Renk paletini değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Odak modunu değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Tam ekranı değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Kılavuzları göster/gizle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Geçmişi değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Katmanları değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Düzen esnekliği ekle/kaldır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Izgara düzeni ekle/kaldır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Seçileni kilitle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Oranları kilitle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Cetvelleri göster/gizle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Kılavuzlara tuttur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Cetvel kılavuzlarına tuttur" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Metin paletini değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Temayı değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Göster / Gizle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Yakınlaştırma şeklini değiştir" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Alt çizgiyi aç/kapat" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Geri al" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Grubu dağıt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Maskelemeyi kaldır" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Dikey olarak dağıt" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Görüntüyü küçült" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Görüntüyü büyült" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Seçilene yakınlaştır" @@ -3706,7 +3688,7 @@ msgstr "Penpot - Takımlar için Özgür Tasarım" #: src/app/main/ui/settings/access_tokens.cljs:278 msgid "title.settings.access-tokens" -msgstr "Profil - Erişim belirteçleri" +msgstr "Profil - Erişim tokenleri" #: src/app/main/ui/settings/feedback.cljs:107 msgid "title.settings.feedback" @@ -3724,19 +3706,19 @@ msgstr "Parola - Penpot" msgid "title.settings.profile" msgstr "Profil - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Davetler - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Üyeler - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Ayarlar - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Web kancaları - %s - Penpot" @@ -3808,39 +3790,39 @@ msgstr "Tıklamada etkileşimleri göster" msgid "viewer.header.sitemap" msgstr "Site haritası" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Son iletim başarılı oldu." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Yatay olarak ortaya hizala (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Yatayda dağıt (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Sola hizala (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Sağa hizala (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Alta hizala (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Dikey olarak ortaya hizala (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Dikeyde dağıt (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Üste hizala (%s)" @@ -3849,31 +3831,31 @@ msgstr "Üste hizala (%s)" msgid "workspace.assets.assets" msgstr "Varlıklar" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Tüm varlıklar" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Renkler" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Bileşenler" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Grup oluştur" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Ögeleriniz otomatik olarak \"grup adı / öge adı\" olarak adlandırılacak" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Sil" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Çoğalt" @@ -3881,11 +3863,11 @@ msgstr "Çoğalt" msgid "workspace.assets.duplicate-main" msgstr "Ana bileşeni çoğalt" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Düzenle" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Filtrele" @@ -3894,23 +3876,23 @@ msgstr "Filtrele" msgid "workspace.assets.graphics" msgstr "Grafikler" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Izgara görünümü" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Grup" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Grup adı" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Liste görünümü" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "yerel kütüphane" @@ -3922,15 +3904,15 @@ msgstr "Varlık bulunmadı" msgid "workspace.assets.open-library" msgstr "Kütüphane dosyasını aç" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Yeniden adlandır" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Grubu yeniden adlandır" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Varlık ara" @@ -3946,17 +3928,17 @@ msgstr[1] "%s öge seçildi" msgid "workspace.assets.shared-library" msgstr "Paylaşılan kütüphane" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1 bileşen" msgstr[1] "%s bileşen" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Sırala" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Tipografiler" @@ -3981,7 +3963,7 @@ msgstr "Harf Boşluğu" msgid "workspace.assets.typography.line-height" msgstr "Satır Yüksekliği" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -3993,59 +3975,59 @@ msgstr "Metin biçimleri" msgid "workspace.assets.typography.text-transform" msgstr "Metin Dönüşümü" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Grubu dağıt" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Alan oluştur" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Çalışma yüzeyi oluştur" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Hücreleri birleştir" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Sağa 1 sütun ekle" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Sola 1 sütun ekle" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Sütunu sil" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Sütun ve şekilleri sil" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Yinelenen sütun" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Aşağıya 1 satır ekle" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Yukarıya 1 satır ekle" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Satırı sil" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Satır ve şekilleri sil" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Yinelenen satır" @@ -4053,7 +4035,7 @@ msgstr "Yinelenen satır" msgid "workspace.focus.focus-mode" msgstr "Odaklanma modu" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Odaklanma kapalı" @@ -4073,11 +4055,11 @@ msgstr "Doğrusal degrade" msgid "workspace.gradients.radial" msgstr "Dairesel degrade" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Dinamik hizalamayı devre dışı bırak" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Orantılı ölçeklendirmeyi devre dışı bırak" @@ -4086,23 +4068,23 @@ msgstr "Orantılı ölçeklendirmeyi devre dışı bırak" msgid "workspace.header.menu.disable-scale-text" msgstr "Metin ölçeklendirmeyi devre dışı bırak" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Kılavuzlara tutturmayı devre dışı bırak" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Piksele tutturmayı devre dışı bırak" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Cetvel kılavuzlarına tutturmayı devre dışı bırak" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Dinamik hizalamayı etkinleştir" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Orantılı ölçeklendirmeyi etkinleştir" @@ -4111,107 +4093,107 @@ msgstr "Orantılı ölçeklendirmeyi etkinleştir" msgid "workspace.header.menu.enable-scale-text" msgstr "Metin ölçeklendirmeyi etkinleştir" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Kılavuzlara tuttur" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Piksele tutturmayı etkinleştir" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Cetvel kılavuzlarına tuttur" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Çalışma yüzeyi adlarını gizle" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Kılavuzları gizle" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Renk paletini gizle" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Piksel ızgarasını gizle" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Cetvelleri gizle" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Yazı tipi paletini gizle" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Düzenle" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Dosya" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Yardım ve bilgi" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Tercihler" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Görünüm" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Tekrarla" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Tümünü seç" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Çalışma yüzeylerinin adlarını göster" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Kılavuzları göster" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Renk paletini göster" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Piksel ızgarasını göster" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Cetvelleri göster" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Yazı tipi paletini göster" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Koyu temaya geç" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Açık temaya geç" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Geri al" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Sıfırla" @@ -4232,11 +4214,11 @@ msgstr "Kaydediliyor" msgid "workspace.header.unsaved" msgstr "Kaydedilmemiş değişiklikler" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Görünüm modu (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Yakınlaştırma" @@ -4248,7 +4230,7 @@ msgstr "Doldur - Doldurmak için ölçeklendir" msgid "workspace.header.zoom-fit" msgstr "Sığdır - Sığdırmak için küçült" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Tümüne uydurmak için yakınlaştır" @@ -4256,19 +4238,19 @@ msgstr "Tümüne uydurmak için yakınlaştır" msgid "workspace.header.zoom-full-screen" msgstr "Tam ekran" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Seçilene yakınlaştır" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Izgarayı düzenle" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Çıkış" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "4 taraflı dolgu seçeneklerini göster" @@ -4284,7 +4266,7 @@ msgstr "Bitti" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Bul" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Izgara düzenini bul" @@ -4293,10 +4275,6 @@ msgstr "Izgara düzenini bul" msgid "workspace.libraries.add" msgstr "Ekle" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s renk" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Kütüphanenizde henüz renk stili yok" @@ -4323,31 +4301,23 @@ msgstr "Son renkler" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Tamamlayıcı" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Renk biçimini kaydet" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s bileşen" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Dosya kütüphanesi" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s grafik" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "BU DOSYADAKİ KÜTÜPHANELER" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "KÜTÜPHANELER" @@ -4356,75 +4326,71 @@ msgstr "KÜTÜPHANELER" msgid "workspace.libraries.library" msgstr "KÜTÜPHANE" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "KÜTÜPHANE GÜNCELLEMELERİ" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Yükleniyor…" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Güncelleme gerektiren Paylaşılmış Kütüphane bulunmuyor" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "“%s“ için eşleşme bulunmadı" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Paylaşılmış kütüphane ara" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "PAYLAŞILMIŞ KÜTÜPHANELER" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Kütüphaneyi bağla" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Çoklu tipografiler" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Tüm tipografileri ayır" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s tipografi" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Kütüphanenin bağlantısını kes" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Güncelle" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "tüm değişiklikleri gör" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "GÜNCELLEMELER" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Etkileşimler eklemek için + düğmesine tıklayın." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Bulanıklık" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Grup bulanıklığı" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Seçim bulanıklığı" @@ -4432,39 +4398,39 @@ msgstr "Seçim bulanıklığı" msgid "workspace.options.canvas-background" msgstr "Tuval arka planı" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "İçeriği kırp" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Bileşen" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Açıklama" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Kopyala" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Bir açıklama oluştur" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Bir açıklamayı düzenle" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Ana bileşen" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Bileşeni değiştir" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "Bu kütüphanede henüz varlık yok" @@ -4508,7 +4474,7 @@ msgstr "Üst" msgid "workspace.options.constraints.topbottom" msgstr "Üst ve Alt" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Tasarım" @@ -4521,13 +4487,13 @@ msgstr "Dışa aktar" msgid "workspace.options.export-multiple" msgstr "Seçimi dışa aktar" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "1 ögeyi dışa aktar" msgstr[1] "%s ögeyi dışa aktar" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Son ek" @@ -4535,7 +4501,7 @@ msgstr "Son ek" msgid "workspace.options.exporting-complete" msgstr "Dışa aktarma tamamlandı" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Dışa aktarılıyor…" @@ -4547,15 +4513,15 @@ msgstr "Dışa aktarılamadı" msgid "workspace.options.exporting-object-slow" msgstr "Dışa aktarma beklenmedik şekilde yavaş" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Doldur" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Akış başlangıcı ekle" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Akış" @@ -4564,15 +4530,15 @@ msgstr "Akış" msgid "workspace.options.flows.flow-start" msgstr "Akış başlangıcı" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Akış başlar" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Otomatik" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Sütunlar" @@ -4581,7 +4547,7 @@ msgstr "Sütunlar" msgid "workspace.options.grid.grid-title" msgstr "Izgara" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Renk" @@ -4590,15 +4556,15 @@ msgstr "Renk" msgid "workspace.options.grid.params.columns" msgstr "Sütunlar" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Aralık" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Yükseklik" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Kenar Boşluğu" @@ -4607,9 +4573,9 @@ msgstr "Kenar Boşluğu" msgid "workspace.options.grid.params.rows" msgstr "Satırlar" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" -msgstr "Varsayılan olarak belirle" +msgstr "Öntanımlı olarak ayarla" #: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs #, unused @@ -4621,147 +4587,147 @@ msgstr "Boyut" msgid "workspace.options.grid.params.type" msgstr "Tür" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Alt" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Orta" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Sol" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Sağ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Ger" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Üst" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" -msgstr "Varsayılanı kullan" +msgstr "Öntanımlıyı kullan" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Genişlik" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Satırlar" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Kare" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Grubu doldur" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Grubu çiz" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Kılavuzlar" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Yükseklik" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "İncele" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Eylem" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Gecikmeden sonra" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Canlandırma" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Çöz" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Hiçbiri" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "İt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Kaydır" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "otomatik" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Arka plan üst katmanı ekle" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Dışarıya tıklandığında kapat" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Üst katmanı kapat" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Üst katmanı kapat: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Gecikme" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Hedef" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Süre" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Yumuşatma" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Yumuşat" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Yumuşak giriş" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Yumuşak giriş çıkış" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Yumuşak çıkış" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Doğrusal" @@ -4770,47 +4736,47 @@ msgstr "Doğrusal" msgid "workspace.options.interaction-in" msgstr "Giriş" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Fare girişi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Fare çıkışı" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Git" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Şuraya gidin: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(ayarlanmadı)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Uzaklık efekti" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Tıklandığında" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Üst katmanı aç" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Üst katmanı aç: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "URL'yi aç" @@ -4819,147 +4785,147 @@ msgstr "URL'yi aç" msgid "workspace.options.interaction-out" msgstr "Çıkış" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Alt orta" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Sol alt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Sağ alt" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Merkez" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "El ile" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Üst orta" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Sol üst" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Sağ üst" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Konum" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Kaydırma konumunu koru" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Önceki ekran" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Göreceli" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "kendi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Üst katmanı değiştir" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Üst katmanı değiştir: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Tetikle" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Üzerinde Gezinirken" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Basarken" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Etkileşimler" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Renk" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Renk yanması" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Renk atlatması" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Karart" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Fark" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Dışla" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Sert ışık" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Ton" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Aydınlat" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Parlaklık" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Çoğalt" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Normal" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Üst katman" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Doygunluk" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Ekran" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Yumuşak ışık" @@ -4983,19 +4949,19 @@ msgstr "Seçili katmanlar" msgid "workspace.options.layout-item.advanced-ops" msgstr "Gelişmiş seçenekler" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Azami Yükseklik" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Azami Genişlik" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Asgari Yükseklik" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Asgari Genişlik" @@ -5109,15 +5075,15 @@ msgstr "arasında boşluk" msgid "workspace.options.layout.top" msgstr "Üst" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Daha fazla renk" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Daha fazla kütüphane rengi" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Opaklık" @@ -5126,27 +5092,27 @@ msgstr "Opaklık" msgid "workspace.options.position" msgstr "Konum" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Prototip" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Yarıçap" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Sol alt" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Sağ alt" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Sol üst" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Sağ üst" @@ -5158,7 +5124,7 @@ msgstr "Son kullanılanlar" msgid "workspace.options.retry" msgstr "Yeniden dene" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Döndür" @@ -5166,29 +5132,29 @@ msgstr "Döndür" msgid "workspace.options.search-font" msgstr "Yazı tipi ara" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Diğer çalışma yüzeyine bağlantı taşımak için bir şekil, çalışma yüzeyi ya " "da grup seçin." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Seçilen renkler" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Seçimi doldur" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Seçimi çiz" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Bulanıklık" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Gölge rengi" @@ -5200,47 +5166,48 @@ msgstr "Kabartı gölgesi" msgid "workspace.options.shadow-options.inner-shadow" msgstr "İç gölge" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Yayılma" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Gölge" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Gölge grubu" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Gölge seçimi" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Dışa aktarmalarda göster" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Görünüm modunda göster" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Boyut" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Boyut ön ayarları" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Çerçeve" @@ -5249,7 +5216,7 @@ msgstr "Çerçeve" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Daire işaretleyici" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Daire" @@ -5258,7 +5225,7 @@ msgstr "Daire" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Elmas işaretleyici" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Elmas" @@ -5267,19 +5234,19 @@ msgstr "Elmas" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Çizgi oku" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Ok" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Hiçbiri" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Yuvarlak" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Kare" @@ -5288,7 +5255,7 @@ msgstr "Kare" msgid "workspace.options.stroke-cap.square-marker" msgstr "Kare işaretleyici" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Dikdörtgen" @@ -5297,75 +5264,75 @@ msgstr "Dikdörtgen" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Üçgen ok" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Üçgen" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Çerçeve rengi" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Çerçeve genişliği" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Merkez" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Çizgili" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Noktalı" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "İçinde" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Karışık" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Dışında" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Katı" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Alta hizala" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Merkeze hizala" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Üste hizala" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "Soldan sağa" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "Sağdan sola" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Otomatik yükseklik" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Otomatik genişlik" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Sabit" @@ -5387,35 +5354,35 @@ msgstr "Küçük harf" msgid "workspace.options.text-options.none" msgstr "Hiçbiri" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Üstü çizili (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Ortaya hizala" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "İki yana yasla" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Sola hizala" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Sağa hizala" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Metin" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Grup metni" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Metin seçimi" @@ -5424,7 +5391,7 @@ msgstr "Metin seçimi" msgid "workspace.options.text-options.titlecase" msgstr "İlk harfi büyük" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Altı Çizili (%s)" @@ -5433,19 +5400,19 @@ msgstr "Altı Çizili (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Büyük Harf" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "Prototip görünümünü çalıştırmak için başlıktaki oynatma düğmesini kullan." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Genişlik" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X ekseni" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y ekseni" @@ -5489,72 +5456,72 @@ msgstr "Düğümleri ayır (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Düğümleri tuttur (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Aç" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Keşfet [daha fazla eklenti](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Henüz eklenti kurulmadı" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Eklenti yok veya URL doğru değil." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Kur" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Kurulu eklentiler" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Eklenti yöneticisi" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Eklentiler" -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Kullanıcıların erişebildiği dosyaların içeriğini oku." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Kullanıcıların erişebildiği dosyaların içeriğini oku ve değiştir." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "Bu eklentinin harici bir tarafça oluşturulduğunu unutmayın." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Kütüphanelerinizi ve varlıklarınızı oku." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Kütüphanelerinizi ve varlıklarınızı oku ve değiştir." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "BU EKLENTİ ŞUNLARA ERİŞİM İSTİYOR:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Geçerli kullanıcının profil bilgilerini oku." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Eklenti Listesi" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Bir eklenti URL'si yazın" @@ -5562,7 +5529,7 @@ msgstr "Bir eklenti URL'si yazın" msgid "workspace.plugins.success" msgstr "Eklenti doğru şekilde yüklendi." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Eklentiler" @@ -5586,7 +5553,7 @@ msgstr "Arkaya gönder" msgid "workspace.shape.menu.copy" msgstr "Kopyala" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Açıklama oluştur" @@ -5594,11 +5561,11 @@ msgstr "Açıklama oluştur" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Çalışma yüzeyi için seçim" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Bileşen oluştur" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Çoklu bileşen oluştur" @@ -5606,7 +5573,7 @@ msgstr "Çoklu bileşen oluştur" msgid "workspace.shape.menu.cut" msgstr "Kes" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Sil" @@ -5614,15 +5581,15 @@ msgstr "Sil" msgid "workspace.shape.menu.delete-flow-start" msgstr "Akış başlangıcını sil" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Örneği ayır" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Örnekleri ayır" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Fark" @@ -5634,11 +5601,11 @@ msgstr "Çoğalt" msgid "workspace.shape.menu.edit" msgstr "Düzenle" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Dışla" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Düzleştir" @@ -5671,19 +5638,19 @@ msgstr "Ana bileşen dosyasına git" msgid "workspace.shape.menu.group" msgstr "Grup" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Gizle" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Kullanıcı arayüzünü göster/gizle" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Kesişme" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Kilitle" @@ -5691,7 +5658,7 @@ msgstr "Kilitle" msgid "workspace.shape.menu.mask" msgstr "Maskele" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Yapıştır" @@ -5707,11 +5674,11 @@ msgstr "Düzen esnekliğini kaldır" msgid "workspace.shape.menu.remove-grid" msgstr "Izgara düzenini kaldır" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Geçersiz kılmaları sıfırla" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Ana bileşeni geri yükle" @@ -5719,15 +5686,15 @@ msgstr "Ana bileşeni geri yükle" msgid "workspace.shape.menu.select-layer" msgstr "Katman seç" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Göster" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Varlıklar panelinde göster" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Ana bileşeni göster" @@ -5740,6 +5707,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Küçük resim olarak ayarla" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Yola dönüştür" @@ -5747,11 +5715,11 @@ msgstr "Yola dönüştür" msgid "workspace.shape.menu.ungroup" msgstr "Grubu dağıt" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Birleşim" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Kilidi aç" @@ -5764,7 +5732,7 @@ msgstr "Maskelemeyi kaldır" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Ana bileşenleri güncelle" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Ana bileşeni güncelle" @@ -5776,11 +5744,11 @@ msgstr "Kenar çubuğunu daralt" msgid "workspace.sidebar.expand" msgstr "Kenar çubuğunu genişlet" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Geçmiş" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Katmanlar" @@ -5820,7 +5788,7 @@ msgstr "Metinler" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "İçe Aktarılan SVG Öznitelikleri" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Sayfalar" @@ -5828,7 +5796,7 @@ msgstr "Sayfalar" msgid "workspace.sitemap" msgstr "Site haritası" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Varlıklar" @@ -5836,7 +5804,7 @@ msgstr "Varlıklar" msgid "workspace.toolbar.color-palette" msgstr "Renk Paketi (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Yorumlar (%s)" @@ -6043,19 +6011,19 @@ msgstr "%s üstündeki işlem" msgid "workspace.undo.title" msgstr "Geçmiş" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Yoksay" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Daha fazla bilgi" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Paylaşılan kütüphaneler için güncellemeler var" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Güncelle" @@ -6120,3 +6088,1747 @@ msgstr "Yolu kapatmak için tıklayın" #~ msgid "workspace.options.layout-item.title.min-w" #~ msgstr "Asgari genişlik" + +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:98, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:105 +msgid "color-row.token-color-row.deleted-token" +msgstr "Bu token yok veya silindi." + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:35 +msgid "color-token.empty-state" +msgstr "" +"Kullanılabilir renk tokeni yok. Etkin kümeleri/temaları gözden geçirin veya " +"yeni tokenler ekleyin." + +#: src/app/main/ui/comments.cljs:530 +msgid "comments.mentions.not-found" +msgstr "@%s için kişi bulunamadı" + +#: src/app/main/ui/dashboard/placeholder.cljs:41 +msgid "dashboard.add-file" +msgstr "Dosya ekle" + +#: src/app/main/ui/workspace/main_menu.cljs:659 +msgid "dashboard.create-version-menu" +msgstr "Bu sürümü sabitle" + +#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:285 +msgid "dashboard.empty-placeholder-drafts-subtitle" +msgstr "" +"Bir proje üyesi taslak oluşturduğunda, bu taslak burada gösterilecektir." + +#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:280 +msgid "dashboard.empty-placeholder-drafts-title" +msgstr "Henüz taslak yok." + +#: src/app/main/ui/dashboard/files.cljs:201, src/app/main/ui/dashboard/projects.cljs:286 +msgid "dashboard.empty-placeholder-files-subtitle" +msgstr "Bir proje üyesi dosya oluşturduğunda, bu dosya burada gösterilecektir." + +#: src/app/main/ui/dashboard/files.cljs:196, src/app/main/ui/dashboard/projects.cljs:281 +msgid "dashboard.empty-placeholder-files-title" +msgstr "Henüz dosya yok." + +#: src/app/main/ui/dashboard/placeholder.cljs:118 +#, markdown +msgid "dashboard.empty-placeholder-libraries" +msgstr "" +"Projeye eklenen kütüphaneler burada görünecektir. Dosyalarınızı paylaşmayı " +"deneyin veya [Kütüphaneler ve şablonlar]" +"(https://penpot.app/libraries-templates) bölümünden ekleyin." + +#: src/app/main/ui/dashboard/placeholder.cljs +#, markdown, unused +msgid "dashboard.empty-placeholder-libraries-subtitle" +msgstr "" +"Projeye eklenen kütüphaneler burada görünecektir. Dosyalarınızı paylaşmayı " +"deneyin veya [Kütüphaneler ve şablonlar]" +"(https://penpot.app/libraries-templates) bölümünden ekleyin." + +#: src/app/main/ui/dashboard/placeholder.cljs:114 +msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role" +msgstr "Projeye eklenen kütüphaneler burada görünecektir." + +#: src/app/main/ui/dashboard/placeholder.cljs:111 +msgid "dashboard.empty-placeholder-libraries-title" +msgstr "Henüz kütüphane yok." + +#: src/app/main/ui/dashboard/placeholder.cljs:59 +msgid "dashboard.empty-project.add-library" +msgstr "Kütüphane veya şablon ekle" + +#: src/app/main/ui/dashboard/placeholder.cljs:43, src/app/main/ui/dashboard/placeholder.cljs:134 +msgid "dashboard.empty-project.create" +msgstr "Yeni dosya oluştur" + +#: src/app/main/ui/dashboard/placeholder.cljs:61 +msgid "dashboard.empty-project.explore" +msgstr "Eklemek için keşfedin" + +#: src/app/main/ui/dashboard/placeholder.cljs:57 +msgid "dashboard.empty-project.go-to-libraries" +msgstr "Kütüphaneler ve şablonlara git" + +#: src/app/main/ui/dashboard/placeholder.cljs:49, src/app/main/ui/dashboard/placeholder.cljs:51 +msgid "dashboard.empty-project.import" +msgstr "Dosya içe aktar" + +#: src/app/main/ui/dashboard/placeholder.cljs:53 +msgid "dashboard.empty-project.import-penpot" +msgstr ".penpot dosyasını içe aktar" + +#: src/app/main/ui/dashboard/placeholder.cljs:45 +msgid "dashboard.empty-project.start" +msgstr "Harika şeyler oluşturmaya başlayın" + +#: src/app/main/ui/dashboard/fonts.cljs:456 +msgid "dashboard.fonts.empty-placeholder-viewer" +msgstr "Henüz özel yazı tipi yok." + +#: src/app/main/ui/dashboard/fonts.cljs:457 +msgid "dashboard.fonts.empty-placeholder-viewer-sub" +msgstr "" +"Bir proje üyesi özel bir yazı tipi yüklediğinde, bu yazı tipi burada " +"gösterilecektir." + +#: src/app/main/ui/dashboard.cljs:243 +msgid "dashboard.import.bad-url" +msgstr "İçe aktarma başarısız oldu. Şablon URL'si yanlış" + +#: src/app/main/ui/dashboard.cljs:241 +#, unused +msgid "dashboard.import.error" +msgstr "İçe aktarma başarısız oldu. Lütfen tekrar deneyin" + +#: src/app/main/ui/dashboard/import.cljs:485 +msgid "dashboard.import.import-error.disclaimer" +msgstr "Tüm dosyalar içe aktarılmadı" + +#: src/app/main/ui/dashboard/import.cljs:489 +msgid "dashboard.import.import-error.message1" +msgstr "Şu dosyalarda hata var:" + +#: src/app/main/ui/dashboard/import.cljs:494 +msgid "dashboard.import.import-error.message2" +msgstr "Hatalı dosyalar karşıya yüklenmeyecektir." + +#: src/app/main/ui/dashboard.cljs:244 +msgid "dashboard.import.no-perms" +msgstr "Bu takıma içe aktarma izniniz yok" + +#: src/app/main/ui/dashboard/team.cljs:765 +msgid "dashboard.invitation-modal.delete" +msgstr "Şu davetleri sileceksiniz:" + +#: src/app/main/ui/dashboard/team.cljs:766 +msgid "dashboard.invitation-modal.resend" +msgstr "Şu davetleri yeniden göndereceksiniz:" + +#: src/app/main/ui/dashboard/team.cljs:756 +msgid "dashboard.invitation-modal.title.delete-invitations" +msgstr "Davetleri sil" + +#: src/app/main/ui/dashboard/team.cljs:757 +msgid "dashboard.invitation-modal.title.resend-invitations" +msgstr "Davetleri yeniden gönder" + +#: src/app/main/ui/dashboard/templates.cljs:267 +msgid "dashboard.libraries-and-templates.description" +msgstr "" +"Burada projenize ekleyebileceğiniz bazı kütüphaneler ve şablonlar " +"bulunmaktadır" + +#: src/app/main/data/comments.cljs:473 +msgid "dashboard.mark-all-as-read.success" +msgstr "Tüm bildirimleri okundu olarak işaretlendi" + +#: src/app/main/ui/dashboard/comments.cljs:91 +msgid "dashboard.notifications" +msgstr "Bildirimler" + +#: src/app/main/data/profile.cljs:273 +msgid "dashboard.notifications.notifications-saved" +msgstr "Bildirim ayarları güncellendi" + +#: src/app/main/ui/dashboard/comments.cljs:45 +msgid "dashboard.notifications.view" +msgstr "Bildirimleri görüntüle" + +#: src/app/main/ui/dashboard/team.cljs:949 +msgid "dashboard.order-invitations-by-role" +msgstr "Role göre sırala" + +#: src/app/main/ui/dashboard/team.cljs:958 +msgid "dashboard.order-invitations-by-status" +msgstr "Duruma göre sırala" + +#: src/app/main/data/common.cljs:203 +msgid "dashboard.permissions-change.admin" +msgstr "Artık bu takımda bir yöneticisiniz." + +#: src/app/main/data/common.cljs:202 +msgid "dashboard.permissions-change.editor" +msgstr "Artık bu takımda bir düzenleyicisiniz." + +#: src/app/main/data/common.cljs:204 +msgid "dashboard.permissions-change.owner" +msgstr "Artık bu takımın sahibisiniz." + +#: src/app/main/data/common.cljs:201 +msgid "dashboard.permissions-change.viewer" +msgstr "Artık bu takımda bir görüntüleyicisiniz." + +#: src/app/main/ui/dashboard.cljs:207 +msgid "dashboard.plugins.bad-url" +msgstr "Eklenti URL'si yanlış" + +#: src/app/main/ui/dashboard.cljs:205 +msgid "dashboard.plugins.parse-error" +msgstr "Eklenti bildirim dosyası ayrıştırılamıyor" + +#: src/app/main/ui/dashboard.cljs:168 +msgid "dashboard.plugins.try-plugin" +msgstr "Eklentiyi deneyin: " + +#: src/app/main/data/common.cljs:236 +msgid "dashboard.removed-from-team" +msgstr "Artık “%s” takımının bir parçası değilsiniz." + +#: src/app/main/ui/settings/options.cljs:68 +msgid "dashboard.select-ui-theme.dark" +msgstr "Penpot Koyu (öntanımlı)" + +#: src/app/main/ui/settings/options.cljs:69 +msgid "dashboard.select-ui-theme.light" +msgstr "Penpot Açık" + +#: src/app/main/ui/settings/options.cljs:70 +msgid "dashboard.select-ui-theme.system" +msgstr "Sistem teması" + +#: src/app/main/ui/settings/notifications.cljs:57 +msgid "dashboard.settings.notifications.dashboard-comments.all" +msgstr "Tüm yorumlar, değinmeler ve yanıtlar" + +#: src/app/main/ui/settings/notifications.cljs:59 +msgid "dashboard.settings.notifications.dashboard-comments.none" +msgstr "Hiçbiri" + +#: src/app/main/ui/settings/notifications.cljs:58 +msgid "dashboard.settings.notifications.dashboard-comments.partial" +msgstr "Yalnızca değinmeler ve yanıtlar" + +#: src/app/main/ui/settings/notifications.cljs:54 +msgid "dashboard.settings.notifications.dashboard-comments.title" +msgstr "Dosya yorumları" + +#: src/app/main/ui/settings/notifications.cljs:53 +msgid "dashboard.settings.notifications.dashboard.title" +msgstr "Denetim Paneli Bildirimleri" + +#: src/app/main/ui/settings/notifications.cljs:67 +msgid "dashboard.settings.notifications.email-comments.all" +msgstr "Tüm yorumlar, değinmeler ve yanıtlar" + +#: src/app/main/ui/settings/notifications.cljs:69 +msgid "dashboard.settings.notifications.email-comments.none" +msgstr "Hiçbiri" + +#: src/app/main/ui/settings/notifications.cljs:68 +msgid "dashboard.settings.notifications.email-comments.partial" +msgstr "Yalnızca değinmeler ve yanıtlar" + +#: src/app/main/ui/settings/notifications.cljs:64 +msgid "dashboard.settings.notifications.email-comments.title" +msgstr "Dosya yorumları" + +#: src/app/main/ui/settings/notifications.cljs:76 +msgid "dashboard.settings.notifications.email-invites.all" +msgstr "Her türlü davet ve istek" + +#: src/app/main/ui/settings/notifications.cljs:79 +msgid "dashboard.settings.notifications.email-invites.none" +msgstr "Hiçbiri" + +#: src/app/main/ui/settings/notifications.cljs:73 +msgid "dashboard.settings.notifications.email-invites.title" +msgstr "Davetler ve istekler" + +#: src/app/main/ui/settings/notifications.cljs:63 +msgid "dashboard.settings.notifications.email.title" +msgstr "E-posta Bildirimleri" + +#: src/app/main/ui/settings/notifications.cljs:84 +msgid "dashboard.settings.notifications.submit" +msgstr "Ayarları güncelle" + +#: src/app/main/ui/settings/notifications.cljs:52 +msgid "dashboard.settings.notifications.title" +msgstr "Bildirimler" + +#: src/app/main/ui/workspace/main_menu.cljs:666 +msgid "dashboard.show-version-history" +msgstr "Sürüm geçmişi" + +#: src/app/main/ui/dashboard/templates.cljs:134 +msgid "dashboard.template.add-to-project" +msgstr "Projenize ekleyin" + +#: src/app/main/ui/dashboard/sidebar.cljs:976 +msgid "dashboard.upgrade-plan.no-limits" +msgstr "Yaratıcılıkta sınır yok" + +#: src/app/main/ui/dashboard/sidebar.cljs:974 +msgid "dashboard.upgrade-plan.penpot-free" +msgstr "Penpot Ücretsiz" + +#: src/app/main/ui/dashboard/team.cljs:1160 +msgid "dashboard.webhooks.cant-edit" +msgstr "" +"Yalnızca sizin oluşturduğunuz web kancalarını silebilir veya " +"değiştirebilirsiniz." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:98 +msgid "ds.inputs.numeric-input.no-applicable-tokens" +msgstr "Etkin kümelerde veya temalarda geçerli token yok." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:99 +msgid "ds.inputs.numeric-input.no-matches" +msgstr "Eşleşme bulunamadı." + +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 +msgid "ds.inputs.numeric-input.open-token-list-dropdown" +msgstr "Token listesini aç" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 +msgid "ds.inputs.token-field.detach-token" +msgstr "Tokeni ayır" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 +msgid "ds.inputs.token-field.no-active-token-option" +msgstr "" +"Bu token herhangi bir etkin kümede bulunmuyor veya geçersiz bir değere sahip." + +#: src/app/main/ui/comments.cljs:730, src/app/main/ui/comments.cljs:761, src/app/main/ui/comments.cljs:858 +msgid "errors.character-limit-exceeded" +msgstr "Karakter sınırı aşıldı" + +#: src/app/main/errors.cljs:231 +msgid "errors.comment-error" +msgstr "Yorumla ilgili bir hata oluştu" + +#: src/app/main/errors.cljs:300 +msgid "errors.deprecated" +msgstr "" +"Üzgünüz! Bu, artık kullanılmayan bir Penpot varlık türü kullanan eski bir " +"dosyadır ve açamazsınız." + +#: src/app/main/errors.cljs:303 +msgid "errors.deprecated.contact.after" +msgstr "böylece size yardımcı olabiliriz." + +#: src/app/main/errors.cljs:301 +msgid "errors.deprecated.contact.before" +msgstr "Penpot artık bu tür varlıkları desteklemese de, bizimle" + +#: src/app/main/errors.cljs:302 +msgid "errors.deprecated.contact.text" +msgstr "iletişime geçebilirsiniz" + +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 +msgid "errors.drop-token-set-parent-to-child" +msgstr "Bir üst kümeyi kendi alt kümesine bırakamazsınız." + +#: src/app/main/ui/auth/register.cljs:89 +msgid "errors.email-does-not-match-invitation" +msgstr "E-posta adresi davetiyeyle eşleşmiyor." + +#: src/app/util/forms.cljs:61 +msgid "errors.field-missing" +msgstr "Boş alan" + +#: src/app/main/errors.cljs:193 +msgid "errors.internal-assertion-error" +msgstr "Dahili Doğrulama Hatası" + +#: src/app/main/errors.cljs:209 +msgid "errors.internal-worker-error" +msgstr "Web çalıştırıcısında bir sorun oluştu." + +#: src/app/util/forms.cljs:35, src/app/util/forms.cljs:84 +msgid "errors.invalid-data" +msgstr "Geçersiz veri" + +#: src/app/util/forms.cljs +#, unused +msgid "errors.invalid-text" +msgstr "Geçersiz metin" + +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 +msgid "errors.maximum-invitations-by-request-reached" +msgstr "" +"Tek bir istekte davet edilebilecek en fazla (%s) e-posta sayısına ulaşıldı" + +#: src/app/main/errors.cljs:263 +msgid "errors.migration-in-progress" +msgstr "Geçiş devam ediyor" + +#: src/app/main/errors.cljs:160 +msgid "errors.only-creator-can-lock" +msgstr "Yalnızca sürüm oluşturucu onu kilitleyebilir" + +#: src/app/main/errors.cljs:168 +msgid "errors.only-creator-can-unlock" +msgstr "Yalnızca sürüm oluşturucu onun kilidini açabilir" + +#: src/app/main/errors.cljs:222 +msgid "errors.svg-parser.invalid-svg" +msgstr "SVG geçersiz veya biçimi yanlış" + +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 +msgid "errors.token-set-already-exists" +msgstr "Aynı ada sahip bir küme zaten var" + +#: src/app/main/data/tokens.cljs: +#, unused +msgid "errors.token-set-doesnt-exists" +msgstr "Bilinmeyen bir küme çoğaltılamıyor" + +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 +msgid "errors.token-set-exists-on-drop" +msgstr "" +"Bırakma işlemi tamamlanamıyor, aynı ada sahip bir küme zaten bu yolda var." + +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 +msgid "errors.token-theme-already-exists" +msgstr "Aynı ada sahip tema seçeneği var" + +#: src/app/main/errors.cljs:176 +msgid "errors.version-already-locked" +msgstr "Bu sürüm zaten kilitli" + +#: src/app/main/errors.cljs:152 +msgid "errors.version-locked" +msgstr "Bu sürüm kilitlidir ve başkaları tarafından silinemez" + +#: src/app/main/ui/components/color_input.cljs:31 +msgid "inspect.attributes.color" +msgstr "Renk" + +#, unused +msgid "inspect.attributes.typography.text-decoration.line-through" +msgstr "Üstü çizili" + +#: src/app/main/ui/inspect/attributes/variant.cljs:44 +msgid "inspect.attributes.variant" +msgstr "Çeşit özellikleri" + +#: src/app/main/ui/inspect/attributes/variant.cljs:44 +msgid "inspect.attributes.variants" +msgstr "Çeşitlerin özellikleri" + +#: src/app/main/ui/inspect/right_sidebar.cljs:67 +msgid "inspect.subtitle.copy" +msgstr "Kopyala" + +#: src/app/main/ui/inspect/right_sidebar.cljs:63 +msgid "inspect.subtitle.main" +msgstr "Ana bileşen" + +#: src/app/main/ui/inspect/right_sidebar.cljs:109 +msgid "inspect.tabs.computed" +msgstr "Hesaplanan" + +#: src/app/main/ui/inspect/styles/property_detail_copiable.cljs:52 +msgid "inspect.tabs.styles.panel.copy-to-clipboard" +msgstr "Panoya kopyala" + +#: src/app/main/ui/inspect/styles/style_box.cljs:22 +msgid "inspect.tabs.styles.panel.geometry" +msgstr "Boyut ve Konum" + +#: src/app/main/ui/inspect/styles/style_box.cljs:59, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:179 +msgid "inspect.tabs.styles.panel.toggle-style" +msgstr "%s panelini aç/kapat" + +#: src/app/main/ui/inspect/styles/style_box.cljs:21 +msgid "inspect.tabs.styles.panel.token" +msgstr "Token Kümeleri ve Temalar" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:26 +msgid "inspect.tabs.styles.panel.tokens.active-sets" +msgstr "Etkin kümeler" + +#: src/app/main/ui/inspect/styles/panels/tokens_panel.cljs:21 +msgid "inspect.tabs.styles.panel.tokens.active-themes" +msgstr "Etkin temalar" + +#: src/app/main/ui/inspect/styles/style_box.cljs:20 +msgid "inspect.tabs.styles.panel.variant" +msgstr "Çeşit özellikleri" + +#: src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:102, src/app/main/ui/inspect/styles/rows/properties_row.cljs:53 +msgid "inspect.tabs.styles.token.resolved-value" +msgstr "Çözülen değer:" + +#: src/app/main/ui/inspect/right_sidebar.cljs:165 +msgid "inspect.tabs.switcher.label" +msgstr "Katman bilgisi" + +#: src/app/main/ui/dashboard/comments.cljs:96 +msgid "label.mark-all-as-read" +msgstr "Tümünü okundu olarak işaretle" + +#: src/app/main/ui/dashboard/sidebar.cljs:1043 +msgid "labels.about-penpot" +msgstr "Penpot hakkında" + +#: src/app/main/ui/workspace/libraries.cljs:177 +msgid "labels.add" +msgstr "Ekle" + +#: src/app/main/ui/workspace/libraries.cljs:177 +msgid "labels.adding" +msgstr "Ekleniyor..." + +#: src/app/main/ui/inspect/styles/style_box.cljs:26 +msgid "labels.blur" +msgstr "Bulanıklık" + +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 +msgid "labels.collapse" +msgstr "Daralt" + +#: src/app/main/ui/workspace/colorpicker.cljs:427 +msgid "labels.color" +msgstr "Renk" + +#: src/app/main/ui/comments.cljs:913 +msgid "labels.comment" +msgstr "Yorum" + +#: src/app/main/ui/comments.cljs:917 +msgid "labels.comment.mark-as-solved" +msgstr "Çözüldü olarak işaretle" + +#: src/app/main/ui/dashboard/sidebar.cljs:1030 +msgid "labels.community-contributions" +msgstr "Topluluk ve Katkılar" + +#: src/app/main/ui/components/copy_button.cljs:41 +msgid "labels.copy" +msgstr "Kopyala" + +#: src/app/main/ui/inspect/attributes/common.cljs:99 +msgid "labels.copy-color" +msgstr "Rengi kopyala" + +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 +msgid "labels.duplicate" +msgstr "Çoğalt" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 +msgid "labels.empty" +msgstr "Boş" + +#: src/app/main/ui/dashboard/import.cljs:297 +msgid "labels.error" +msgstr "Hata" + +#: src/app/main/ui/inspect/styles/style_box.cljs:23 +msgid "labels.fill" +msgstr "Doldur" + +#: src/app/main/ui/dashboard/sidebar.cljs:1019 +msgid "labels.help-learning" +msgstr "Yardım ve Öğrenme" + +#: src/app/main/ui/dashboard/templates.cljs:91 +msgid "labels.hide" +msgstr "Gizle" + +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 +msgid "labels.import" +msgstr "İçe aktar" + +#: src/app/main/ui/inspect/styles/style_box.cljs:28 +msgid "labels.layout" +msgstr "Yerleşim düzeni" + +#: src/app/main/ui/dashboard/sidebar.cljs:798 +msgid "labels.learning-center" +msgstr "Öğrenme Merkezi" + +#: src/app/main/ui/workspace/sidebar/versions.cljs:209 +msgid "labels.lock" +msgstr "Kilitle" + +#: src/app/main/ui/comments.cljs:581 +msgid "labels.mention" +msgstr "Değinme" + +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 +msgid "labels.mixed-values" +msgstr "Karışık" + +#: src/app/main/ui/dashboard/team.cljs:739 +msgid "labels.no-invitations-gather-people" +msgstr "Arkadaşlarınızı toplayın ve birlikte harika şeyler oluşturun." + +#: src/app/main/ui/settings/sidebar.cljs:103 +msgid "labels.notifications" +msgstr "Bildirimler" + +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 +msgid "labels.options" +msgstr "Seçenekler" + +#: src/app/main/ui/dashboard/sidebar.cljs:878 +msgid "labels.penpot-changelog" +msgstr "Penpot Değişiklik Günlüğü" + +#: src/app/main/ui/dashboard/sidebar.cljs:804 +msgid "labels.penpot-hub" +msgstr "Penpot merkezi" + +#: src/app/main/ui/dashboard/sidebar.cljs:751 +msgid "labels.pinned-projects" +msgstr "Sabitlenen Projeler" + +#: src/app/main/ui/comments.cljs:679 +msgid "labels.post" +msgstr "Gönder" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:644 +msgid "labels.reference" +msgstr "Referans" + +#: src/app/main/data/common.cljs:83 +msgid "labels.refresh" +msgstr "Yenile" + +#: src/app/main/ui/comments.cljs:642 +msgid "labels.replies" +msgstr "yanıt" + +#: src/app/main/ui/comments.cljs:647 +msgid "labels.replies.new" +msgstr "yeni yanıt" + +#: src/app/main/ui/comments.cljs:641 +msgid "labels.reply" +msgstr "yanıt" + +#: src/app/main/ui/comments.cljs:646 +msgid "labels.reply.new" +msgstr "yeni yanıt" + +#: src/app/main/ui/comments.cljs:722 +msgid "labels.reply.thread" +msgstr "Yanıtla" + +#: src/app/main/ui/dashboard/team.cljs:788 +msgid "labels.resend" +msgstr "Yeniden gönder" + +#: src/app/main/ui/workspace/sidebar/versions.cljs:86, src/app/main/ui/workspace/sidebar/versions.cljs:196 +msgid "labels.restore" +msgstr "Geri yükle" + +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 +msgid "labels.sets" +msgstr "Kümeler" + +#: src/app/main/ui/inspect/styles/style_box.cljs:27 +msgid "labels.shadow" +msgstr "Gölge" + +#: src/app/main/ui/dashboard/templates.cljs:87 +msgid "labels.show" +msgstr "Göster" + +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 +msgid "labels.show-mentions" +msgstr "Yalnızca değinmelerinizi göster" + +#: src/app/main/ui/dashboard/sidebar.cljs:730 +msgid "labels.sources" +msgstr "Kaynaklar" + +#: src/app/main/ui/inspect/styles/style_box.cljs:24, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:46 +msgid "labels.stroke" +msgstr "Çerçeve" + +#: src/app/main/ui/inspect/right_sidebar.cljs:107, src/app/main/ui/inspect/styles.cljs:107 +msgid "labels.styles" +msgstr "Biçimler" + +#: src/app/main/ui/inspect/styles/style_box.cljs:33 +msgid "labels.svg" +msgstr "SVG" + +#: src/app/main/ui/inspect/styles/style_box.cljs:25 +msgid "labels.text" +msgstr "Metin" + +#: src/app/main/ui/workspace/tokens/themes.cljs:36 +msgid "labels.themes" +msgstr "Temalar" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:1148 +msgid "labels.typography" +msgstr "Tipografi" + +#: src/app/main/data/workspace/tokens/errors.cljs:101 +msgid "labels.unknown-error" +msgstr "Bilinmeyen hata" + +#: src/app/main/ui/workspace/sidebar/versions.cljs:203 +msgid "labels.unlock" +msgstr "Kilidi aç" + +#: src/app/main/ui/inspect/right_sidebar.cljs:65, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:949, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:518 +msgid "labels.variant" +msgstr "Çeşit" + +#: src/app/main/ui/dashboard/sidebar.cljs:872 +msgid "labels.version-notes" +msgstr "Sürüm %s notları" + +#: src/app/main/ui/inspect/styles/style_box.cljs:32 +msgid "labels.visibility" +msgstr "Görünürlük" + +#: src/app/main/ui/ds/product/loader.cljs:21 +msgid "loader.tips.01.message" +msgstr "Tasarımlarınızı tüm projelerde tutarlı ve güncellemesi kolay tutun." + +#: src/app/main/ui/ds/product/loader.cljs:20 +msgid "loader.tips.01.title" +msgstr "Yeniden Kullanılabilir Bileşenler" + +#: src/app/main/ui/ds/product/loader.cljs:23 +msgid "loader.tips.02.message" +msgstr "Takımınızla canlı olarak çalışın, geri bildirimleri anında paylaşın." + +#: src/app/main/ui/ds/product/loader.cljs:22 +msgid "loader.tips.02.title" +msgstr "Gerçek Zamanlı İş Birliği" + +#: src/app/main/ui/ds/product/loader.cljs:25 +msgid "loader.tips.03.message" +msgstr "" +"Tanıdık CSS benzeri düzen denetimleriyle esnek bir şekilde tasarım yapın." + +#: src/app/main/ui/ds/product/loader.cljs:24 +msgid "loader.tips.03.title" +msgstr "CSS Benzeri Düzenler" + +#: src/app/main/ui/ds/product/loader.cljs:27 +msgid "loader.tips.04.message" +msgstr "Tasarımlarınızdan doğrudan CSS ve SVG kodları alın." + +#: src/app/main/ui/ds/product/loader.cljs:26 +msgid "loader.tips.04.title" +msgstr "Kod Olarak Dışa Aktarın" + +#: src/app/main/ui/ds/product/loader.cljs:29 +msgid "loader.tips.05.message" +msgstr "Tutarlılığı korumak için varlıkları ve biçimleri paylaşın." + +#: src/app/main/ui/ds/product/loader.cljs:28 +msgid "loader.tips.05.title" +msgstr "Kütüphaneler Tasarlayın" + +#: src/app/main/ui/ds/product/loader.cljs:31 +msgid "loader.tips.06.message" +msgstr "Animasyonlar ve geçişlerle fikirlerinizi hayata geçirin." + +#: src/app/main/ui/ds/product/loader.cljs:30 +msgid "loader.tips.06.title" +msgstr "Etkileşimli Prototipler" + +#: src/app/main/ui/ds/product/loader.cljs:33 +msgid "loader.tips.07.message" +msgstr "Penpot, sorunsuz geliştirme için SVG ve CSS kullanır." + +#: src/app/main/ui/ds/product/loader.cljs:32 +msgid "loader.tips.07.title" +msgstr "Web Standartları Biçimleri" + +#: src/app/main/ui/ds/product/loader.cljs:35 +msgid "loader.tips.08.message" +msgstr "" +"Otomatik Düzenleme için Shift + A gibi kullanışlı kısayollarla iş akışınızı " +"hızlandırın." + +#: src/app/main/ui/ds/product/loader.cljs:34 +msgid "loader.tips.08.title" +msgstr "Klavye Kısayolları" + +#: src/app/main/ui/ds/product/loader.cljs:37 +msgid "loader.tips.09.message" +msgstr "Tarzınıza uygun temayı seçin." + +#: src/app/main/ui/ds/product/loader.cljs:36 +msgid "loader.tips.09.title" +msgstr "Koyu ve Açık Mod" + +#: src/app/main/ui/ds/product/loader.cljs:39 +msgid "loader.tips.10.message" +msgstr "" +"Ek işlevsellik için topluluk tarafından geliştirilen eklentilerle Penpot'u " +"genişletin." + +#: src/app/main/ui/ds/product/loader.cljs:38 +msgid "loader.tips.10.title" +msgstr "Eklenti Desteği" + +#: src/app/main/ui/dashboard/team.cljs:222 +msgid "modals.invite-team-member.text" +msgstr "" +"Üyeleri takıma davet ederek bu dosyaya ve tüm takım dosyalarına erişmelerini " +"sağlayabilirsiniz." + +#: src/app/main/ui/dashboard/team.cljs:825 +msgid "notifications.invitation-deleted" +msgstr "Davet başarıyla silindi" + +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 +msgid "settings.remove-color" +msgstr "Rengi kaldır" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +msgid "shortcuts.copy-link" +msgstr "Bağlantıyı kopyala" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#, unused +msgid "shortcuts.copy-props" +msgstr "Özellikleri kopyala" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +msgid "shortcuts.create-component-variant" +msgstr "Bileşen / çeşit oluştur" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#, unused +msgid "shortcuts.paste-props" +msgstr "Özellikleri yapıştır" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:604 +#, unused +msgid "shortcuts.plugins" +msgstr "Eklenti yöneticisi" + +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +msgid "shortcuts.rename" +msgstr "Yeniden adlandır" + +#: src/app/main/ui/dashboard/subscription.cljs:89, src/app/main/ui/dashboard/subscription.cljs:131 +msgid "subscription.dashboard.power-up.enterprise-plan" +msgstr "Kurumsal plan" + +#: src/app/main/ui/dashboard/subscription.cljs:85 +msgid "subscription.dashboard.power-up.enterprise-trial.top-title" +msgstr "Kurumsal plan (deneme)" + +#: src/app/main/ui/dashboard/subscription.cljs:64 +#, markdown +msgid "subscription.dashboard.power-up.professional.bottom-text" +msgstr "" +"Sınırsız plan ile takımlarınız için ek depolama alanı, dosya kurtarma ve " +"daha fazlasını elde edin. [Güçlenin!|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:63 +msgid "subscription.dashboard.power-up.professional.top-title" +msgstr "Profesyonel plan" + +#: src/app/main/ui/dashboard/subscription.cljs:64, src/app/main/ui/settings/subscription.cljs:107, src/app/main/ui/settings/subscription.cljs:131 +#, unused +msgid "subscription.dashboard.power-up.subscribe" +msgstr "Abone ol" + +#: src/app/main/ui/dashboard/subscription.cljs:72 +#, markdown +msgid "subscription.dashboard.power-up.trial.bottom-description" +msgstr "" +"Deneme sürenizi beğendiniz mi? Tam erişimi sonsuza kadar açın. " +"[Abone olun|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:71 +msgid "subscription.dashboard.power-up.trial.top-title" +msgstr "Sınırsız plan (deneme)" + +#: src/app/main/ui/dashboard/subscription.cljs:77, src/app/main/ui/dashboard/subscription.cljs:130 +msgid "subscription.dashboard.power-up.unlimited-plan" +msgstr "Sınırsız plan" + +#: src/app/main/ui/dashboard/subscription.cljs:78 +#, markdown +msgid "subscription.dashboard.power-up.unlimited.bottom-text" +msgstr "" +"Sabit bir fiyatla tüm takımlarınız için sınırsız depolama alanı, kapsamlı " +"dosya kurtarma ve sınırsız düzenleyici elde edin. " +"[Kurumsal plana göz atın.|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:70 +#, unused +msgid "subscription.dashboard.power-up.unlimited.cta" +msgstr "Göz atın" + +#: src/app/main/ui/dashboard/subscription.cljs:68 +#, unused +msgid "subscription.dashboard.power-up.unlimited.top-description" +msgstr "" +"Ek düzenleyiciler, depolama ve otomatik kaydedilen sürüm, dosya yedekleme ve " +"daha fazlası." + +#: src/app/main/ui/dashboard/subscription.cljs:62, src/app/main/ui/dashboard/subscription.cljs:70, src/app/main/ui/dashboard/subscription.cljs:76, src/app/main/ui/dashboard/subscription.cljs:84, src/app/main/ui/dashboard/subscription.cljs:88 +msgid "subscription.dashboard.power-up.your-subscription" +msgstr "Aboneliğiniz:" + +#: src/app/main/ui/dashboard/subscription.cljs:168 +msgid "subscription.dashboard.professional-dashboard-cta-title" +msgstr "" +"Sahip olduğunuz takımlarda %s düzenleyiciniz varken, profesyonel planınız " +"8'e kadar düzenleyiciyi kapsamaktadır." + +#: src/app/main/ui/dashboard/subscription.cljs:176 +#, markdown +msgid "subscription.dashboard.professional-dashboard-cta-upgrade-owner" +msgstr "" +"Daha fazla düzenleyici, depolama alanı ve dosya kurtarma özelliğinin " +"kilidini açmak için şimdi Sınırsız veya Kurumsal sürümüne yükseltin. " +"[Şimdi abone olun.|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:111 +msgid "subscription.dashboard.team-plan" +msgstr "Takım planı" + +#: src/app/main/ui/dashboard/subscription.cljs:171 +msgid "subscription.dashboard.unlimited-dashboard-cta-title" +msgstr "" +"Takımınız büyümeye devam ediyor! Sınırsız planınız %s düzenleyiciye kadar " +"kapsıyor, ancak şu anda %s düzenleyiciniz var." + +#: src/app/main/ui/dashboard/subscription.cljs:179 +#, markdown +msgid "subscription.dashboard.unlimited-dashboard-cta-upgrade-owner" +msgstr "" +"Lütfen düzenleyici sayınızla eşleşecek şekilde şimdi yükseltin. " +"[Şimdi abone olun.|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:156 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-text" +msgstr "" +"Yalnızca sahip olduğunuz takımlardaki yeni düzenleyiciler gelecekteki " +"faturalandırmaya dahil edilir. 25'ten fazla düzenleyici için aylık 175$ " +"sabit ücret uygulanmaya devam eder." + +#: src/app/main/ui/dashboard/subscription.cljs:152 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-title" +msgstr "Sınırsız plandayken kişileri davet etme" + +#: src/app/main/ui/dashboard/sidebar.cljs:978 +msgid "subscription.dashboard.upgrade-plan.power-up" +msgstr "Güçlenin" + +#: src/app/main/ui/settings/sidebar.cljs:116, src/app/main/ui/settings/subscription.cljs:318, src/app/main/ui/settings/subscription.cljs:351 +msgid "subscription.labels" +msgstr "Abonelik" + +#: src/app/main/ui/settings/subscription.cljs:373, src/app/main/ui/settings/subscription.cljs:397 +msgid "subscription.settings.add-payment-to-continue" +msgstr "" +"Deneme süreniz bittikten sonra devam etmek için bir ödeme yöntemi ekleyin" + +#: src/app/main/ui/settings/subscription.cljs:367, src/app/main/ui/settings/subscription.cljs:439 +msgid "subscription.settings.benefits.all-professional-benefits" +msgstr "Tüm Profesyonel plan faydaları ve:" + +#: src/app/main/ui/settings/subscription.cljs:379, src/app/main/ui/settings/subscription.cljs:391, src/app/main/ui/settings/subscription.cljs:401, src/app/main/ui/settings/subscription.cljs:453 +msgid "subscription.settings.benefits.all-unlimited-benefits" +msgstr "Tüm Sınırsız plan faydaları ve:" + +#: src/app/main/ui/settings/subscription.cljs:39 +msgid "subscription.settings.editors" +msgstr "(x %s düzenleyici)" + +#: src/app/main/ui/dashboard/subscription.cljs:119, src/app/main/ui/settings/subscription.cljs:72, src/app/main/ui/settings/subscription.cljs:346, src/app/main/ui/settings/subscription.cljs:399, src/app/main/ui/settings/subscription.cljs:449 +msgid "subscription.settings.enterprise" +msgstr "Kurumsal" + +#: src/app/main/ui/settings/subscription.cljs:68, src/app/main/ui/settings/subscription.cljs:345, src/app/main/ui/settings/subscription.cljs:389 +msgid "subscription.settings.enterprise-trial" +msgstr "Kurumsal (deneme)" + +#: src/app/main/ui/settings/subscription.cljs:393, src/app/main/ui/settings/subscription.cljs:403, src/app/main/ui/settings/subscription.cljs:455 +msgid "subscription.settings.enterprise.autosave" +msgstr "90 günlük sürümleri otomatik kaydetme ve dosya kurtarma" + +#: src/app/main/ui/settings/subscription.cljs:394, src/app/main/ui/settings/subscription.cljs:404, src/app/main/ui/settings/subscription.cljs:456 +msgid "subscription.settings.enterprise.capped-bill" +msgstr "Sabit aylık fatura" + +#: src/app/main/ui/settings/subscription.cljs:392, src/app/main/ui/settings/subscription.cljs:402, src/app/main/ui/settings/subscription.cljs:454 +msgid "subscription.settings.enterprise.unlimited-storage-benefit" +msgstr "Sınırsız depolama alanı" + +#: src/app/main/ui/dashboard/subscription.cljs:124, src/app/main/ui/settings/subscription.cljs:371, src/app/main/ui/settings/subscription.cljs:383, src/app/main/ui/settings/subscription.cljs:395, src/app/main/ui/settings/subscription.cljs:405 +msgid "subscription.settings.manage-your-subscription" +msgstr "Aboneliğinizi yönetin" + +#: src/app/main/ui/settings/subscription.cljs:131 +msgid "subscription.settings.management.dialog.currently-editors-title" +msgid_plural "subscription.settings.management.dialog.currently-editors-title" +msgstr[0] "Şu anda, takımlarınızda düzenleme yapabilen %s kişi bulunuyor." +msgstr[1] "Şu anda, takımlarınızda düzenleme yapabilen %s kişi bulunuyor." + +#: src/app/main/ui/settings/subscription.cljs:149 +msgid "subscription.settings.management.dialog.downgrade" +msgstr "" +"Dikkat: Daha düşük bir plana geçmek, daha az depolama alanı, daha kısa " +"yedeklemeler ve daha kısa sürüm geçmişi anlamına gelir." + +#: src/app/main/ui/settings/subscription.cljs:133 +msgid "subscription.settings.management.dialog.editors" +msgstr "Düzenleyiciler" + +#: src/app/main/ui/settings/subscription.cljs:138 +msgid "subscription.settings.management.dialog.editors-explanation" +msgstr "" +"(Sahipler, Yöneticiler ve Düzenleyiciler. Görüntüleyiciler, Düzenleyici " +"olarak sayılmaz)" + +#: src/app/main/ui/settings/subscription.cljs:181 +msgid "subscription.settings.management.dialog.input-error" +msgstr "" +"Şu anda sahip olduğunuzdan daha az sayıda düzenleyici ayarlayamazsınız. " +"Takım ayarlarında, dosyaları düzenlemeyen kişilerin rolünü " +"(düzenleyici/yönetici yerine görüntüleyici) değiştirin." + +#: src/app/main/ui/settings/subscription.cljs:177 +msgid "subscription.settings.management.dialog.payment-explanation" +msgstr "Deneme süresinden sonra ücretlendirilir. Şu anda kredi kartı gerekmez." + +#: src/app/main/ui/settings/subscription.cljs:170, src/app/main/ui/settings/subscription.cljs:174 +#, markdown +msgid "subscription.settings.management.dialog.price-month" +msgstr "**%s$**/ay" + +#: src/app/main/ui/settings/subscription.cljs:126 +msgid "subscription.settings.management.dialog.title" +msgstr "Takımlarınıza %s uygulayın" + +#: src/app/main/ui/settings/subscription.cljs:184 +msgid "subscription.settings.management.dialog.unlimited-capped-warning" +msgstr "" +"İpucu: Davetlerin öncesinde hazırlıklı olmak için şimdi koltuk sayınızı " +"artırabilirsiniz. Takımlar genelinde 25'ten fazla düzenleyiciye aylık 175$ " +"sabit ücretten sahip olacaksınız." + +#: src/app/main/ui/settings/subscription.cljs:418 +msgid "subscription.settings.member-since" +msgstr "Penpot üyelik tarihi: %s" + +#: src/app/main/ui/settings/subscription.cljs:431, src/app/main/ui/settings/subscription.cljs:445, src/app/main/ui/settings/subscription.cljs:459 +msgid "subscription.settings.more-information" +msgstr "Daha fazla bilgi" + +#: src/app/main/ui/settings/subscription.cljs:421 +msgid "subscription.settings.other-plans" +msgstr "Diğer penpot planları" + +#: src/app/main/ui/settings/subscription.cljs:425, src/app/main/ui/settings/subscription.cljs:438 +msgid "subscription.settings.price-editor-month" +msgstr "aylık düzenleyici" + +#: src/app/main/ui/dashboard/subscription.cljs:114, src/app/main/ui/settings/subscription.cljs:70, src/app/main/ui/settings/subscription.cljs:358, src/app/main/ui/settings/subscription.cljs:423 +msgid "subscription.settings.professional" +msgstr "Profesyonel" + +#: src/app/main/ui/settings/subscription.cljs:360, src/app/main/ui/settings/subscription.cljs:427 +msgid "subscription.settings.professional.autosave-benefit" +msgstr "7 günlük sürümleri otomatik kaydetme ve dosya kurtarma" + +#: src/app/main/ui/settings/subscription.cljs:359, src/app/main/ui/settings/subscription.cljs:426 +msgid "subscription.settings.professional.storage-benefit" +msgstr "10GB depolama alanı" + +#: src/app/main/ui/settings/subscription.cljs:361, src/app/main/ui/settings/subscription.cljs:428 +msgid "subscription.settings.professional.teams-editors-benefit" +msgstr "" +"Sınırsız sayıda takım. Sahip olduğunuz takımlarda en fazla 8 düzenleyici." + +#: src/app/main/ui/settings/subscription.cljs:355 +msgid "subscription.settings.section-plan" +msgstr "Aboneliğiniz" + +#: src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +msgid "subscription.settings.start-trial" +msgstr "Ücretsiz denemeyi başlat" + +#: src/app/main/ui/settings/subscription.cljs:429, src/app/main/ui/settings/subscription.cljs:443, src/app/main/ui/settings/subscription.cljs:457 +msgid "subscription.settings.subscribe" +msgstr "Abone ol" + +#: src/app/main/ui/settings/subscription.cljs:239 +msgid "subscription.settings.success.dialog.description" +msgstr "" +"Aboneliğinizi, hesap ayrıntılarınızdaki 'Abonelik' sayfasından istediğiniz " +"zaman düzenleyebilirsiniz." + +#: src/app/main/ui/settings/subscription.cljs:238 +msgid "subscription.settings.success.dialog.thanks" +msgstr "Penpot %s planını seçtiğiniz için teşekkür ederiz!" + +#: src/app/main/ui/settings/subscription.cljs:240 +msgid "subscription.settings.sucess.dialog.footer" +msgstr "Planınızın tadını çıkarın!" + +#: src/app/main/ui/settings/subscription.cljs:236 +msgid "subscription.settings.sucess.dialog.title" +msgstr "%s oldunuz!" + +#: src/app/main/ui/settings/subscription.cljs:413 +msgid "subscription.settings.support-us-since" +msgstr "Bu planla bizi şu zamandan beri destekliyorsunuz: %s" + +#: src/app/main/ui/settings/subscription.cljs:443, src/app/main/ui/settings/subscription.cljs:457 +msgid "subscription.settings.try-it-free" +msgstr "14 gün boyunca ücretsiz deneyin" + +#: src/app/main/ui/dashboard/subscription.cljs:117, src/app/main/ui/settings/subscription.cljs:71, src/app/main/ui/settings/subscription.cljs:343, src/app/main/ui/settings/subscription.cljs:377, src/app/main/ui/settings/subscription.cljs:435 +msgid "subscription.settings.unlimited" +msgstr "Sınırsız" + +#: src/app/main/ui/dashboard/subscription.cljs:116, src/app/main/ui/settings/subscription.cljs:67, src/app/main/ui/settings/subscription.cljs:342, src/app/main/ui/settings/subscription.cljs:365 +msgid "subscription.settings.unlimited-trial" +msgstr "Sınırsız (deneme)" + +#: src/app/main/ui/settings/subscription.cljs:369, src/app/main/ui/settings/subscription.cljs:381, src/app/main/ui/settings/subscription.cljs:441 +msgid "subscription.settings.unlimited.autosave-benefit" +msgstr "30 günlük sürümleri otomatik kaydetme ve dosya kurtarma" + +#: src/app/main/ui/settings/subscription.cljs:370, src/app/main/ui/settings/subscription.cljs:382, src/app/main/ui/settings/subscription.cljs:442 +msgid "subscription.settings.unlimited.bill" +msgstr "Aylık fatura üst sınırı 175$" + +#: src/app/main/ui/settings/subscription.cljs:368, src/app/main/ui/settings/subscription.cljs:380, src/app/main/ui/settings/subscription.cljs:440 +msgid "subscription.settings.unlimited.storage-benefit" +msgstr "25GB depolama alanı" + +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 +msgid "subscription.workspace.header.menu.option.power-up" +msgstr "Planınızı güçlendirin" + +#: src/app/main/ui/workspace/sidebar/versions.cljs:56 +#, markdown +msgid "subscription.workspace.versions.warning.enterprise.subtext-owner" +msgstr "" +"Bu sınırı artırmak isterseniz, bize [%s](mailto) adresinden yazabilirsiniz" + +#: src/app/main/ui/workspace/sidebar/versions.cljs:58 +#, markdown +msgid "subscription.workspace.versions.warning.subtext-member" +msgstr "" +"Bu sınırı artırmak isterseniz, takım sahibi ile iletişime geçin: [%s](mailto)" + +#: src/app/main/ui/workspace/sidebar/versions.cljs:57 +#, markdown +msgid "subscription.workspace.versions.warning.subtext-owner" +msgstr "Bu sınırı artırmak isterseniz, [planınızı yükseltin|target:self](%s)" + +#: src/app/main/ui/settings/notifications.cljs:45 +msgid "title.settings.notifications" +msgstr "Bildirimler - Penpot" + +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 +msgid "workspace.assets.add-library" +msgstr "Kütüphane ekle" + +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 +msgid "workspace.assets.colors.add-color" +msgstr "Renk ekle" + +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:81 +msgid "workspace.assets.component-group-options" +msgstr "Bileşen grubu seçenekleri" + +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:581 +msgid "workspace.assets.components.add-component" +msgstr "Bileşen ekle" + +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 +msgid "workspace.assets.components.num-variants" +msgstr "%s Çeşit" + +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +msgid "workspace.assets.manage-library" +msgstr "Kütüphaneyi yönet" + +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 +msgid "workspace.assets.typography.add-typography" +msgstr "Tipografi ekle" + +#: src/app/main/ui/workspace/colorpicker.cljs:431, src/app/main/ui/workspace/colorpicker.cljs:443 +msgid "workspace.colorpicker.color-tokens" +msgstr "Tokenleri renklendir" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:464 +msgid "workspace.component.swap.loop-error" +msgstr "Bileşenler kendi içlerinde iç içe geçemez." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:463 +msgid "workspace.component.switch.loop-error-multi" +msgstr "" +"Bazı kopyalar değiştirilemedi. Bileşenler kendi içlerinde iç içe geçemez." + +#: src/app/main/ui/workspace/main_menu.cljs:916 +#, unused +msgid "workspace.header.menu.option.power-up" +msgstr "Planınızı güçlendirin" + +#: src/app/main/ui/workspace/main_menu.cljs:315 +msgid "workspace.header.menu.toggle-system-theme" +msgstr "Sistem temasına geç" + +#: src/app/main/ui/workspace/right_header.cljs:240 +msgid "workspace.header.share" +msgstr "Paylaş" + +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 +msgid "workspace.layout_grid.editor.padding.bottom" +msgstr "Alt dolgu" + +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 +msgid "workspace.layout_grid.editor.padding.horizontal" +msgstr "Yatay dolgu" + +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 +msgid "workspace.layout_grid.editor.padding.left" +msgstr "Sol dolgu" + +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 +msgid "workspace.layout_grid.editor.padding.right" +msgstr "Sağ dolgu" + +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 +msgid "workspace.layout_grid.editor.padding.top" +msgstr "Üst dolgu" + +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 +msgid "workspace.layout_grid.editor.padding.vertical" +msgstr "Dikey dolgu" + +#: src/app/main/ui/workspace/libraries.cljs:349 +msgid "workspace.libraries.connected-to" +msgstr "Bağlandı" + +#: src/app/main/ui/workspace/libraries.cljs:404 +msgid "workspace.libraries.empty.add-some" +msgstr "Veya denemek için bunlardan bazılarını ekleyin:" + +#: src/app/main/ui/workspace/libraries.cljs:398 +msgid "workspace.libraries.empty.no-libraries" +msgstr "Takımınızda Paylaşılan Kütüphaneler bulunmuyor, burada bulunan" + +#: src/app/main/ui/workspace/libraries.cljs:402 +msgid "workspace.libraries.empty.some-templates" +msgstr "şablonlara bakabilirsiniz" + +#: src/app/main/ui/workspace/libraries.cljs:387 +#, unused +msgid "workspace.libraries.more-templates" +msgstr "Bakabilirsiniz " + +#: src/app/main/ui/ds/notifications/shared/notification_pill.cljs:67, src/app/main/ui/ds/notifications/shared/notification_pill.cljs:72 +msgid "workspace.notification-pill.detail" +msgstr "Ayrıntılar" + +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 +msgid "workspace.options.blur-options.add-blur" +msgstr "Bulanıklık ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 +msgid "workspace.options.blur-options.remove-blur" +msgstr "Bulanıklığı kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 +msgid "workspace.options.blur-options.toggle-blur" +msgstr "Bulanıklığı değiştir" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 +msgid "workspace.options.component.unlinked" +msgstr "Ayrıldı" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 +msgid "workspace.options.component.variant.duplicated.copy.locate" +msgstr "Çakışan çeşitleri bul" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:509 +msgid "workspace.options.component.variant.duplicated.copy.title" +msgstr "" +"Bu bileşenin çakışan çeşitleri var. Her çeşidin kendine özgü özellik " +"değerleri olduğundan emin olun." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 +msgid "workspace.options.component.variant.duplicated.group.locate" +msgstr "Yinelenen çeşitleri bul" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1278 +msgid "workspace.options.component.variant.duplicated.group.title" +msgstr "Bazı çeşitler aynı özelliklere ve değerlere sahip" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:268 +msgid "workspace.options.component.variant.duplicated.single.all" +msgstr "" +"Bu çeşitler aynı özelliklere ve değerlere sahiptir. Değerleri, " +"çağrılabilecekleri şekilde ayarlayın." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 +msgid "workspace.options.component.variant.duplicated.single.one" +msgstr "" +"Bu çeşit, başka bir çeşitle aynı özelliklere ve değerlere sahiptir. " +"Değerleri, çağrılabilecekleri şekilde ayarlayın." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 +msgid "workspace.options.component.variant.duplicated.single.some" +msgstr "" +"Bu çeşitlerden bazıları aynı özelliklere ve değerlere sahiptir. Değerleri, " +"geri çağrılabilecekleri şekilde ayarlayın." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +msgid "workspace.options.component.variant.malformed.copy" +msgstr "" +"Bu bileşenin geçersiz ada sahip çeşitleri var. Her çeşidin doğru yapıyı " +"takip ettiğinden emin olun." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 +msgid "workspace.options.component.variant.malformed.group.locate" +msgstr "Geçersiz çeşitleri bul" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 +msgid "workspace.options.component.variant.malformed.group.title" +msgstr "Bazı çeşitlerin adları geçersiz" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:502 +msgid "workspace.options.component.variant.malformed.locate" +msgstr "Geçersiz çeşitleri bul" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 +msgid "workspace.options.component.variant.malformed.single.all" +msgstr "Bu çeşitlerin adları geçersiz." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 +msgid "workspace.options.component.variant.malformed.single.one" +msgstr "Bu çeşidin adı geçersiz." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 +msgid "workspace.options.component.variant.malformed.single.some" +msgstr "Bu çeşitlerden bazılarının adları geçersiz." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 +msgid "workspace.options.component.variant.malformed.structure.example" +msgstr "[özellik]=[değer], [özellik]=[değer]" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 +msgid "workspace.options.component.variant.malformed.structure.title" +msgstr "Şu yapıyı kullanmayı deneyin:" + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:54 +msgid "workspace.options.component.variants-help-modal.intro" +msgstr "" +"Çeşitler arasında geçiş yaparken değişiklikleri korumak için Penpot şu " +"katmanları birbirine bağlar:" + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:91 +msgid "workspace.options.component.variants-help-modal.outro" +msgstr "" +"Bunlardan herhangi birini değiştirmek " +"(örneğin, bir katmanı yeniden adlandırmak veya gruplamak) bağlantıyı keser, " +"ancak değişikliği geri almak bağlantıyı yeniden kurar." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:67 +msgid "workspace.options.component.variants-help-modal.rule1" +msgstr "Aynı ada sahip." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:76 +msgid "workspace.options.component.variants-help-modal.rule2" +msgstr "Aynı türden." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:77 +msgid "workspace.options.component.variants-help-modal.rule2.detail" +msgstr "" +"Dikdörtgen, elips, yollar ve boole işlemleri aynı tür olarak kabul edilir." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:87 +msgid "workspace.options.component.variants-help-modal.rule3" +msgstr "Aynı hiyerarşi düzeyine sahip." + +#: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:88 +msgid "workspace.options.component.variants-help-modal.rule3.detail" +msgstr "Gruplar, çalışma yüzeyleri ve yerleşim düzenleri eş değer kabul edilir." + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +msgid "workspace.options.component.variants-help-modal.title" +msgstr "Çeşitler nasıl bağlantılı kalır" + +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 +msgid "workspace.options.export.add-export" +msgstr "Dışa aktarım ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 +msgid "workspace.options.export.remove-export" +msgstr "Dışa aktarımı kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 +msgid "workspace.options.fill.add-fill" +msgstr "Doldurma ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 +msgid "workspace.options.fill.remove-fill" +msgstr "Doldurmayı kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 +msgid "workspace.options.fit-content" +msgstr "Çalışma yüzeyini içeriğe sığacak şekilde yeniden boyutlandır" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 +msgid "workspace.options.flows.remove-flow" +msgstr "Akışı kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 +msgid "workspace.options.guides.add-guide" +msgstr "Kılavuz ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 +msgid "workspace.options.guides.remove-guide" +msgstr "Kılavuzu kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 +msgid "workspace.options.guides.toggle-guide" +msgstr "Kılavuzu değiştir" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 +msgid "workspace.options.interactions.add-interaction" +msgstr "Etkileşim ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs +#, unused +msgid "workspace.options.interactions.remove-interaction" +msgstr "Etkileşimi kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 +msgid "workspace.options.layer-options.toggle-layer" +msgstr "Katman görünürlüğünü değiştir" + +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 +msgid "workspace.options.radius.hide-all-corners" +msgstr "Bağımsız yarıçapı daralt" + +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 +msgid "workspace.options.radius.show-single-corners" +msgstr "Bağımsız yarıçapı göster" + +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 +msgid "workspace.options.shadow-options.add-shadow" +msgstr "Gölge ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 +msgid "workspace.options.shadow-options.remove-shadow" +msgstr "Gölgeyi kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 +msgid "workspace.options.shadow-options.toggle-shadow" +msgstr "Gölgeyi değiştir" + +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 +msgid "workspace.options.size.lock" +msgstr "Oranı kilitle" + +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 +msgid "workspace.options.size.unlock" +msgstr "Oranın kilidini kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 +msgid "workspace.options.stroke.add-stroke" +msgstr "Çerçeve rengi ekle" + +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 +msgid "workspace.options.stroke.remove-stroke" +msgstr "Çerçeveyi kaldır" + +#: src/app/main/ui/workspace/plugins.cljs:192 +msgid "workspace.plugins.error.manifest" +msgstr "Eklenti bildirimi yanlış." + +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 +msgid "workspace.plugins.error.need-editor" +msgstr "Bu eklentiyi kullanmak için düzenleyici olmanız gerekir" + +#: src/app/main/ui/workspace/plugins.cljs:375 +msgid "workspace.plugins.permissions-update.title" +msgstr "BU EKLENTİYİ GÜNCELLE" + +#: src/app/main/ui/workspace/plugins.cljs:379 +msgid "workspace.plugins.permissions-update.warning" +msgstr "" +"Eklenti, son açtığınızdan beri değiştirildi. Artık şuraya da erişmek istiyor:" + +#: src/app/main/ui/workspace/plugins.cljs:279 +msgid "workspace.plugins.permissions.allow-download" +msgstr "Dosya indirmesi başlat." + +#: src/app/main/ui/workspace/plugins.cljs:286 +msgid "workspace.plugins.permissions.allow-localstorage" +msgstr "Tarayıcıda veri depola." + +#: src/app/main/ui/workspace/plugins.cljs:272 +msgid "workspace.plugins.permissions.comment-read" +msgstr "Yorumlarınızı ve yanıtlarınızı oku." + +#: src/app/main/ui/workspace/plugins.cljs:266 +msgid "workspace.plugins.permissions.comment-write" +msgstr "Yorumlarınızı oku, değiştir ve sizin adınıza yanıtla." + +#: src/app/main/ui/workspace/plugins.cljs:87 +msgid "workspace.plugins.remove-plugin" +msgstr "Eklentiyi kaldır" + +#: src/app/main/ui/workspace/plugins.cljs:439 +msgid "workspace.plugins.try-out.cancel" +msgstr "ŞİMDİ DEĞİL" + +#: src/app/main/ui/workspace/plugins.cljs:432 +msgid "workspace.plugins.try-out.message" +msgstr "" +"Bir göz atmak ister misiniz? Geçerli takımınız için yeni bir taslakta " +"açılacaktır. (İstemiyorsanız, onu herhangi bir dosyanın kurulu " +"eklentilerinde her zaman bulabilirsiniz.)" + +#: src/app/main/ui/workspace/plugins.cljs:428 +msgid "workspace.plugins.try-out.title" +msgstr "'%s' EKLENTİSİ KULLANICINIZ İÇİN KURULDU!" + +#: src/app/main/ui/workspace/plugins.cljs:445 +msgid "workspace.plugins.try-out.try" +msgstr "EKLENTİYİ DENE" + +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 +msgid "workspace.shape.menu.add-layout" +msgstr "Yerleşim düzeni ekle" + +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 +msgid "workspace.shape.menu.add-variant" +msgstr "Çeşit oluştur" + +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +msgid "workspace.shape.menu.add-variant-property" +msgstr "Yeni özellik ekle" + +#: src/app/main/ui/workspace/context_menu.cljs:617, src/app/main/ui/workspace/sidebar/assets/components.cljs:634, src/app/main/ui/workspace/sidebar/assets/groups.cljs:75, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1041 +msgid "workspace.shape.menu.combine-as-variants" +msgstr "Çeşit olarak birleştir" + +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:636 +msgid "workspace.shape.menu.combine-as-variants-error" +msgstr "Bileşenler aynı sayfada olmalıdır" + +#: src/app/main/ui/workspace/context_menu.cljs:217 +msgid "workspace.shape.menu.copy-css" +msgstr "CSS olarak kopyala" + +#: src/app/main/ui/workspace/context_menu.cljs:219 +msgid "workspace.shape.menu.copy-css-nested" +msgstr "CSS olarak kopyala (iç içe katmanlar)" + +#: src/app/main/ui/workspace/context_menu.cljs:202 +msgid "workspace.shape.menu.copy-link" +msgstr "Bağlantıyı kopyala" + +#: src/app/main/ui/workspace/context_menu.cljs:215 +msgid "workspace.shape.menu.copy-paste-as" +msgstr "Farklı kopyala/yapıştır ..." + +#: src/app/main/ui/workspace/context_menu.cljs:229 +msgid "workspace.shape.menu.copy-props" +msgstr "Özellikleri kopyala" + +#: src/app/main/ui/workspace/context_menu.cljs:221 +msgid "workspace.shape.menu.copy-svg" +msgstr "SVG olarak kopyala" + +#: src/app/main/ui/workspace/context_menu.cljs:226 +msgid "workspace.shape.menu.copy-text" +msgstr "Metin olarak kopyala" + +#: src/app/main/ui/workspace/context_menu.cljs:233 +msgid "workspace.shape.menu.paste-props" +msgstr "Özellikleri yapıştır" + +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 +msgid "workspace.shape.menu.remove-layout" +msgstr "Yerleşim düzenini kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 +msgid "workspace.shape.menu.remove-variant-property" +msgstr "Özelliği kaldır" + +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1256 +msgid "workspace.shape.menu.remove-variant-property.last-property" +msgstr "Çeşidin en az bir özelliği olmalıdır" + +#: src/app/main/ui/workspace/context_menu.cljs:328 +msgid "workspace.shape.menu.rename" +msgstr "Yeniden adlandır" + +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 +msgid "workspace.shape.menu.restore-variant" +msgstr "Çeşidi geri yükle" + +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 +msgid "workspace.sidebar.sitemap.add-page" +msgstr "Sayfa ekle" + +#: src/app/main/ui/workspace/tokens/themes/theme_selector.cljs:86 +msgid "workspace.tokens.active-themes" +msgstr "%s etkin tema" + +#: src/app/main/ui/workspace/tokens/sidebar.cljs +#, unused +msgid "workspace.tokens.add set" +msgstr "Küme ekle" + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +msgid "workspace.tokens.add-new-theme" +msgstr "Yeni tema ekle" + +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 +msgid "workspace.tokens.add-set-to-group" +msgstr "Bu gruba küme ekle" + +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 +msgid "workspace.tokens.add-token" +msgstr "Token ekle: %s" + +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 +msgid "workspace.tokens.applied-to" +msgstr "Uygulanan" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 +msgid "workspace.tokens.axis" +msgstr "Eksen" + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 +msgid "workspace.tokens.back-to-themes" +msgstr "Tema listesine geri dön" + +#: src/app/main/ui/workspace/tokens/settings/menu.cljs:89 +msgid "workspace.tokens.base-font-size" +msgstr "Temel yazı tipi boyutu" + +#: src/app/main/ui/workspace/tokens/settings/menu.cljs:43 +msgid "workspace.tokens.base-font-size.error" +msgstr "" +"Temel yazı tipi boyutu piksel cinsinden veya birimsiz bir değer olmalıdır." + +#: src/app/main/ui/workspace/tokens/modals/import.cljs:127 +#, unused +msgid "workspace.tokens.choose-file" +msgstr "Dosya seç" + +#: src/app/main/ui/workspace/tokens/modals/import.cljs:132 +#, unused +msgid "workspace.tokens.choose-folder" +msgstr "Klasör seç" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:286 +msgid "workspace.tokens.color" +msgstr "Renk" + +#: src/app/main/data/workspace/tokens/errors.cljs:97 +msgid "workspace.tokens.composite-line-height-needs-font-size" +msgstr "" +"Satır yüksekliği yazı tipi boyutuna bağlıdır. Çözülen değeri elde etmek için " +"bir yazı tipi boyutu ekleyin." + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:53 +msgid "workspace.tokens.create-new-theme" +msgstr "Şimdi ilk temanızı oluşturun." + +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 +msgid "workspace.tokens.create-one" +msgstr "Bir tane oluşturun." + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 +msgid "workspace.tokens.create-token" +msgstr "Yeni %s tokeni oluştur" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 +msgid "workspace.tokens.delete" +msgstr "Tokeni sil" + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:154 +msgid "workspace.tokens.delete-theme-title" +msgstr "Temayı sil" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 +msgid "workspace.tokens.duplicate" +msgstr "Tokeni çoğalt" + +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 +msgid "workspace.tokens.duplicate-suffix" +msgstr "kopyala" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 +msgid "workspace.tokens.edit" +msgstr "Tokeni düzenle" + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 +msgid "workspace.tokens.edit-theme-title" +msgstr "Temayı düzenle" + +#: src/app/main/ui/workspace/tokens/themes/theme_selector.cljs:74 +msgid "workspace.tokens.edit-themes" +msgstr "Temaları düzenle" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:551 +msgid "workspace.tokens.edit-token" +msgstr "%s tokenini düzenle" + +#: src/app/main/data/workspace/tokens/errors.cljs:41 +msgid "workspace.tokens.empty-input" +msgstr "Token değeri boş olamaz" + +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 +msgid "workspace.tokens.enter-token-name" +msgstr "%s token adını gir" + +#: src/app/main/data/workspace/tokens/errors.cljs:15 +msgid "workspace.tokens.error-parse" +msgstr "İçe Aktarma Hatası: JSON ayrıştırılamadı." + +#: src/app/main/ui/workspace/tokens/export/modal.cljs:49 +msgid "workspace.tokens.export" +msgstr "Dışa aktar" + +#: src/app/main/ui/workspace/tokens/export/modal.cljs:125 +msgid "workspace.tokens.export-tokens" +msgstr "Tokenleri dışa aktar" + +#: src/app/main/ui/workspace/tokens/export/modal.cljs:118 +msgid "workspace.tokens.export.multiple-files" +msgstr "Birden fazla dosya" + +#: src/app/main/ui/workspace/tokens/export/modal.cljs:38 +msgid "workspace.tokens.export.no-tokens-themes-sets" +msgstr "Dışa aktarılacak token, tema veya küme yok." + +#: src/app/main/ui/workspace/tokens/export/modal.cljs:35 +msgid "workspace.tokens.export.preview" +msgstr "Ön izleme:" + +#: src/app/main/ui/workspace/tokens/export/modal.cljs:116 +msgid "workspace.tokens.export.single-file" +msgstr "Tek dosya" diff --git a/frontend/translations/ukr_UA.po b/frontend/translations/ukr_UA.po index ac08462143..dac86f70f2 100644 --- a/frontend/translations/ukr_UA.po +++ b/frontend/translations/ukr_UA.po @@ -1,16 +1,16 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Denys Kisil \n" -"Language-Team: Ukrainian " -"\n" +"Language-Team: Ukrainian \n" "Language: ukr_UA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 5.13\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -182,7 +182,7 @@ msgstr "" "Я погоджуюсь із [умовами користування](%s) та [політикою " "конфіденційності](%s)." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "Умови користування" @@ -209,7 +209,7 @@ msgstr "...брендинг, ілюстрації, маркетингові ма msgid "comments.mentions.not-found" msgstr "Не знайдено людей за @%s" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "Опублікувати" @@ -282,7 +282,7 @@ msgstr "Поділитись прототипами" msgid "common.share-link.view-all" msgstr "Вибрати все" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "Скасувати публікацію" @@ -405,7 +405,7 @@ msgstr "Токен має необмежений термін дії" msgid "dashboard.add-file" msgstr "Додати файл" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "Додати як Спільну Бібліотеку" @@ -413,31 +413,31 @@ msgstr "Додати як Спільну Бібліотеку" msgid "dashboard.change-email" msgstr "Змінити пошту" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(копія)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "Створити нову команду" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "Пришпилити цю версію" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "Ваш Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "Видалити команду" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "Завантажити файл Penpot (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "Завантажити стандартний файл (.svg +.json)" @@ -521,7 +521,7 @@ msgstr "Почніть робити чудові речі" msgid "dashboard.export-binary-multi" msgstr "Завантажити %s файлів Penpot (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "Експортувати дошки у PDF" @@ -537,7 +537,7 @@ msgstr "Експорт (%s) файлів Penpot" msgid "dashboard.export-multiple.selected" msgstr "Було виділено %s з %s елементів" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "Експорт" @@ -753,11 +753,11 @@ msgstr "Вивантаження даних на сервер (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "Вивантаження файлу: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "Запросити людей" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "Покинути команду" @@ -765,7 +765,7 @@ msgstr "Покинути команду" msgid "dashboard.libraries-and-templates" msgstr "Бібліотеки та Шаблони" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "Тут знаходяться Бібліотеки та Шаблони, які можна додати до проєкту" @@ -773,7 +773,7 @@ msgstr "Тут знаходяться Бібліотеки та Шаблони, msgid "dashboard.libraries-and-templates.explore" msgstr "Дізнайтесь більше про них та як зробити внесок" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "Виникла проблема під час імпортування шаблону. Його не було імпортовано." @@ -809,7 +809,7 @@ msgstr "Перенести в іншу команду" msgid "dashboard.new-file" msgstr "+ Новий файл" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "Новий файл" @@ -817,7 +817,7 @@ msgstr "Новий файл" msgid "dashboard.new-project" msgstr "+ Новий проєкт" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "Новий проєкт" @@ -825,11 +825,11 @@ msgstr "Новий проєкт" msgid "dashboard.no-matches-for" msgstr "Жодних відповідностей за \"%s\" не знайдено" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "Закріплені проєкти з'являться тут" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "Сповіщення" @@ -841,7 +841,7 @@ msgstr "Адресу Вашої електронної пошти було ус msgid "dashboard.notifications.email-verified-successfully" msgstr "Адресу Вашої електронної пошти було успішно підтверджено" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "Налаштування сповіщень оновлено" @@ -849,11 +849,11 @@ msgstr "Налаштування сповіщень оновлено" msgid "dashboard.notifications.password-saved" msgstr "Пароль успішно збережено!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "Показати сповіщення" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s учасників" @@ -885,7 +885,7 @@ msgstr "Відтепер Ви власник цієї команди." msgid "dashboard.permissions-change.viewer" msgstr "Відтепер Ви переглядач цієї команди." -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "Пришпилити/відшпилити" @@ -922,7 +922,7 @@ msgstr "Ви більше не є частиною команди \"%s\"." msgid "dashboard.save-settings" msgstr "Зберегти налаштування" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "Пошук…" @@ -1014,7 +1014,7 @@ msgstr "Сповіщення" msgid "dashboard.show-all-files" msgstr "Показати усі файли" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "Історія версій" @@ -1040,7 +1040,7 @@ msgstr[2] "Файли були успішно дубліковані" msgid "dashboard.success-duplicate-project" msgstr "Ваш проєкт успішно дубліковано" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "Файл було успішно переміщено" @@ -1052,15 +1052,15 @@ msgstr "Файли було успішно переміщено" msgid "dashboard.success-move-project" msgstr "Ваш проєкт було успішно переміщено" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "Відомості про команду" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "Учасники команди" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "Проєкти команди" @@ -1080,7 +1080,7 @@ msgstr "Результати пошуку" msgid "dashboard.type-something" msgstr "Вкажіть для пошуку" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "Вилучити бібліотеку з публікації" @@ -1088,50 +1088,50 @@ msgstr "Вилучити бібліотеку з публікації" msgid "dashboard.update-settings" msgstr "Оновити налаштування" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "Без обмежень на креативність" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot Безкоштовний" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "Активний" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "Після спрацювання хуку дані події будуть надіслані" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "Ви можете видаляти або редагувати лише створені Вами вебхуки." -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "Тип вмісту" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "Створити вебхук" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Вебхук успішно створено." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "Веб-хуки - це простий спосіб дозволити іншим веб-сайтам і застосункам " "отримувати сповіщення про певні події в Penpot. Ми надішлемо POST-запит на " "кожну з вказаних вами URL-адрес." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "Натисніть кнопку \"Додати вебхук\" щоб створити його." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "У вас поки що немає вебхуків." @@ -1151,7 +1151,7 @@ msgstr "Електронна пошта" msgid "dashboard.your-name" msgstr "Ваше ім'я" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "Ваш Penpot" @@ -1167,15 +1167,15 @@ msgstr "Увага" msgid "ds.component-subtitle" msgstr "Компоненти для оновлення:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "Дозволити" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "Скасувати" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Добре" @@ -1237,7 +1237,7 @@ msgstr "Оскільки Penpot не підтримує цей тип Ресур msgid "errors.deprecated.contact.text" msgstr "звʼязатись з нами" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "Не можна кинути батьківський набір на приналежний дочірній." @@ -1261,13 +1261,13 @@ msgstr "Поштова адреса не відповідає тому що в msgid "errors.email-domain-not-allowed" msgstr "Цей домен не дозволений" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "" "Електронна пошта \"%s\" має багато скарг про постійне повернення " "повідомлень." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "" "Електронну адресу «%s» позначено як спам або вона постійно повертає " @@ -1283,11 +1283,6 @@ msgstr "" msgid "errors.feature-not-supported" msgstr "Функція '%s' не підтримується." -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "Має містити не більше 1 символу." - #, unused msgid "errors.field-min-length" msgstr "Має містити принаймні 1 символ." @@ -1308,7 +1303,7 @@ msgstr "" "файлу, який Ви намагаєтеся відкрити. Перш ніж відкрити файл, потрібно " "застосувати міграції для \"%s\"." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Виникла якась неполадка." @@ -1358,11 +1353,11 @@ msgstr "Це запрошення могло бути відкликане аб msgid "errors.ldap-disabled" msgstr "Автентифікація через LDAP вимкнена." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "Ви досягли квоти \"%s\". Зв'яжіться із службою підтримки." -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "" "Дрсягнуто максимальної кількості поштових скриньок, на які можна надіслати " @@ -1380,7 +1375,7 @@ msgstr "Схоже, вміст зображення не відповідає р msgid "errors.media-type-not-allowed" msgstr "Схоже, це зображення не є дійсним." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Електронна пошта профілю, який Ви намагаєтесь запросити, має приглушення " @@ -1416,7 +1411,7 @@ msgstr "Помилкові дані в буфері обміну" msgid "errors.profile-blocked" msgstr "Профіль заблоковано" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "" "Для Вашого профілю приглушено листи (скарги на спам або постійне " @@ -1434,23 +1429,23 @@ msgstr "SVG недійсний або сформований неправиль msgid "errors.team-feature-mismatch" msgstr "Виявлено несумісну функцію \"%s\"" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "" "Недостатньо учасників, щоб покинути команду, яку Ви, ймовірно, хочете " "видалити." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Учасник, якого Ви намагаєтеся призначити, не існує." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "" "Власник не може покинути команду, тому Ви повинні спершу призначити нового " "власника." -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "Набір з таким імʼям уже існує" @@ -1459,11 +1454,11 @@ msgstr "Набір з таким імʼям уже існує" msgid "errors.token-set-doesnt-exists" msgstr "Не можна дублювати невідомий набір" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "Не вдалось перекинути, набір з таким імʼям вже існує." -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "Параметри Теми з таким імʼям вже існують" @@ -1491,31 +1486,31 @@ msgstr "Ця версія заблокована і не може бути ви msgid "errors.version-not-supported" msgstr "Файл має несумісний номер версії" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Помилка під'єднання, адреса недосяжна" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "Посилання не пройшло перевірку." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Остання спроба доставки була невдалою." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Помилка під час перевірки SSL." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Час вичерпано" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Неочікувана помилка під час перевірки" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Неочікуваний статус %s" @@ -1579,7 +1574,7 @@ msgstr "Виникла помилка" msgid "inspect.attributes.blur" msgstr "Розмиття" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "К-сть" @@ -1587,15 +1582,15 @@ msgstr "К-сть" msgid "inspect.attributes.color" msgstr "Колір" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1603,7 +1598,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Заливка" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Завантажити вихідне зображення" @@ -1697,35 +1692,37 @@ msgstr "Суцільний" msgid "inspect.attributes.stroke.width" msgstr "Товщина" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Типографія" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Сімейство шрифта" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Розмір шрифта" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Стиль шрифта" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Товщина шрифта" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Відступ між літерами" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Висота лінії" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Оформлення тексту" @@ -1733,35 +1730,36 @@ msgstr "Оформлення тексту" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "Закреслення" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Немає" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Підкреслений" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "Видозміна тексту" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Заголовковий регістр" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Нижній регістр" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Який є" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "Не встановлено" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Верхній регістр" @@ -1773,17 +1771,17 @@ msgstr "Параметри варіантів" msgid "inspect.attributes.variants" msgstr "Властивості варіантів" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Якщо ви хочете дізнатися більше про інспекцію дизайну, відвідайте " "довідковий центр Penpot" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Більше інформації про інспекцію" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Оберіть фігуру, дошку або групу, щоб переглянути їх властивості та код" @@ -1851,11 +1849,11 @@ msgstr "Текст" msgid "inspect.tabs.info" msgstr "Інформація" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "Позначити все як прочитане" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Скорочення" @@ -1867,11 +1865,11 @@ msgstr "Прийняти" msgid "labels.access-tokens" msgstr "Токени доступу" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Активне" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "Додати" @@ -1879,11 +1877,11 @@ msgstr "Додати" msgid "labels.add-custom-font" msgstr "Додати користувацькі шрифти" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "Додавання..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Адміністратор" @@ -1891,7 +1889,7 @@ msgstr "Адміністратор" msgid "labels.adobe-xd" msgstr "Adobe ExpDesign" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Всі" @@ -1914,7 +1912,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Поганий шлюз" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Скасувати" @@ -1922,11 +1920,11 @@ msgstr "Скасувати" msgid "labels.canva" msgstr "Канва" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Закрити" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "Згорнути" @@ -1938,11 +1936,11 @@ msgstr "Коментар" msgid "labels.comment.mark-as-solved" msgstr "Позначити як виконане" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "Коментарі" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Спільнота" @@ -1950,7 +1948,7 @@ msgstr "Спільнота" msgid "labels.confirm-password" msgstr "Підтвердити пароль" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Продовжити" @@ -1966,11 +1964,11 @@ msgstr "Ви можете продовжувати з обліковим зап msgid "labels.copy" msgstr "Копіювати" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "Копіювати колір" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "Копіювати посилання" @@ -1978,7 +1976,7 @@ msgstr "Копіювати посилання" msgid "labels.copyright" msgstr "Калейдос @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Створити" @@ -1998,7 +1996,7 @@ msgstr "Користувацькі шрифти" msgid "labels.dashboard" msgstr "Панель керування" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Видалити" @@ -2010,7 +2008,7 @@ msgstr "Видалити коментар" msgid "labels.delete-comment-thread" msgstr "Видалити гілку" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Видалити запрошення" @@ -2027,19 +2025,19 @@ msgstr "Розробка" msgid "labels.director" msgstr "Директор" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Відхилити" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Чернетки" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "Дублювати" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "Редагувати" @@ -2047,11 +2045,11 @@ msgstr "Редагувати" msgid "labels.edit-file" msgstr "Редагувати файл" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Редактор" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "Порожньо" @@ -2064,11 +2062,11 @@ msgstr "Помилка" msgid "labels.event" msgstr "Подія" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Сплинув термін дії" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Експорт" @@ -2096,7 +2094,7 @@ msgstr "Постачальники шрифтів" msgid "labels.font-variants" msgstr "Стилі" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Шрифти" @@ -2110,11 +2108,11 @@ msgstr "Генеральний директор або Засновник" msgid "labels.freelancer" msgstr "Фрилансер" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Репозиторій Github" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Надішліть відгук" @@ -2126,7 +2124,7 @@ msgstr "Повернутись назад" msgid "labels.graphic-design" msgstr "Графічний дизайн" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Центр Допомоги" @@ -2134,15 +2132,15 @@ msgstr "Центр Допомоги" msgid "labels.hide" msgstr "Приховати" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Приховати вирішені коментарі" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "Імпортувати" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "Не активний" @@ -2164,7 +2162,7 @@ msgstr "Внутрішня помилка" msgid "labels.invision" msgstr "ІнВіжн" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Запрошення" @@ -2172,7 +2170,7 @@ msgstr "Запрошення" msgid "labels.language" msgstr "Мова" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Бібліотеки та Шаблони" @@ -2192,7 +2190,7 @@ msgstr "Увійти або зареєструватись" msgid "labels.login" msgstr "Увійти" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Вийти" @@ -2200,11 +2198,11 @@ msgstr "Вийти" msgid "labels.marketing" msgstr "Маркетинг" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Учасник" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Учасники" @@ -2216,19 +2214,19 @@ msgstr "Згадка" msgid "labels.new-password" msgstr "Новий пароль" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Далі" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "Ви все наздогнали! Нові повідомлення про коментарі з’являться тут." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "У вас, поки що, немає запрошень." -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "Збирайте людей та створюйте чудові речі разом." @@ -2247,7 +2245,7 @@ msgstr "Отакої!" msgid "labels.notifications" msgstr "Сповіщення" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "%s файл" @@ -2261,7 +2259,7 @@ msgstr[0] "%s дошка" msgstr[1] "%s дошок" msgstr[2] "%s дошок" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "%s проєкт" @@ -2281,7 +2279,7 @@ msgstr "Старий пароль" msgid "labels.only-yours" msgstr "Лише ваші" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "Параметри" @@ -2297,7 +2295,7 @@ msgstr "Інше (вкажіть)" msgid "labels.other-short" msgstr "Інше" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Власник" @@ -2305,7 +2303,7 @@ msgstr "Власник" msgid "labels.password" msgstr "Пароль" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Очікування" @@ -2329,7 +2327,7 @@ msgstr "Керування продуктами" msgid "labels.profile" msgstr "Профіль" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Проєкти" @@ -2337,7 +2335,7 @@ msgstr "Проєкти" msgid "labels.refresh" msgstr "Перезавантажити" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Примітки до випуску" @@ -2351,11 +2349,11 @@ msgstr "Перезавантажити файл" msgid "labels.remove" msgstr "Видалити" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Вилучити учасника" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Перейменувати" @@ -2383,7 +2381,7 @@ msgstr "нова відповідь" msgid "labels.reply.thread" msgstr "Відповідь" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Повторно надіслати запрошення" @@ -2395,15 +2393,15 @@ msgstr "Відновити" msgid "labels.retry" msgstr "Повторити" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Роль" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Зберегти" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "Пошук" @@ -2431,11 +2429,11 @@ msgstr "Ми проводимо програмне обслуговування msgid "labels.service-unavailable.main-message" msgstr "Сервіс недосяжний" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "Набори" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Налаштування" @@ -2447,7 +2445,7 @@ msgstr "Поділитись" msgid "labels.share-prototype" msgstr "Поділитись прототипом" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Бібліотеки" @@ -2455,7 +2453,7 @@ msgstr "Бібліотеки" msgid "labels.show" msgstr "Показати" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Показати усі коментарі" @@ -2463,11 +2461,11 @@ msgstr "Показати усі коментарі" msgid "labels.show-comments-list" msgstr "Показати список коментарів" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "Показувати лише ваші згадки" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Показати лише ваші коментарі" @@ -2479,7 +2477,7 @@ msgstr "Ескіз" msgid "labels.start" msgstr "Початок" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Статус" @@ -2501,11 +2499,11 @@ msgstr "Учасник команди" msgid "labels.themes" msgstr "Теми" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Посібники" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "Невідома помилка" @@ -2537,15 +2535,15 @@ msgstr "Вивантажити користувацькі шрифти" msgid "labels.uploading" msgstr "Вивантажую…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Лише для перегляду" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Глядач" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Вебхуки" @@ -2553,11 +2551,11 @@ msgstr "Вебхуки" msgid "labels.write-new-comment" msgstr "Написати новий коментар" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(Ви)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Ваш обліковий запис" @@ -2654,23 +2652,23 @@ msgstr "" msgid "loader.tips.10.title" msgstr "Підтримка плагінів" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "Обрати зображення" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "Градієнт" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "Зображення" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr ".img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "Зберігати співвідношення сторін" @@ -2688,7 +2686,7 @@ msgstr "Завантаження зображення…" msgid "media.radial" msgstr "Круговий" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "Суцільний" @@ -2763,19 +2761,19 @@ msgstr "Створити токен" msgid "modals.create-access-token.title" msgstr "Згенерувати токен доступу" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Створити вебхук" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Створити вебхук" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Посилання на Payload" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://savelife.in.ua/en" @@ -2821,11 +2819,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Видалити бесіду" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Ви впевнені, що хочете видалити цю анотацію?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Видалити анотацію" @@ -2873,11 +2871,11 @@ msgstr "" msgid "modals.delete-font.title" msgstr "Видалення шрифта" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Ви впевнені, що хочете видалити цю сторінку?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Видалити сторінку" @@ -2928,29 +2926,29 @@ msgstr[0] "Видалення файлу" msgstr[1] "Видалення файлів" msgstr[2] "Видалення файлів" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Видалити команду" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Ви впевнені, що хочете видалити цю команду? Всі проєкти та файли, які " "прив'язані до команди, будуть назавжди видалені." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Видалення команди" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Видалити учасника" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Ви впевнені, що хочете видалити цього учасника з команди?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Видалити учасника команди" @@ -2967,55 +2965,55 @@ msgstr[2] "" "Ресурси, які вже були використані в цих файлах, залишаться там (дизайн не " "буде порушено)." -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Видалити вебхук" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Ви впевнені, що хочете видалити цей вебхук?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Видалення вебхуку" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Змінити вебхук" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Змінити вебхук" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Надіслати запрошення" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Електроні адреси, розділені комами" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "Деякі учасники вже запрошені, ми запросимо решту." -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "" "Ви можете запросити учасників до команди для того щоб вони мали доступ до " "цього та інших файлів команди." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Запросити учасників до команди" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Так як Ви єдиний учасником цієї команди, її буде видалено разом з проєктами " "та файлами команди." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Ви впевнені, що хочете покинути команду \"%s\"?" @@ -3043,15 +3041,15 @@ msgstr "Виберіть учасника для підвищення" msgid "modals.leave-and-reassign.title" msgstr "Перед тим як ви покинете" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Покинути команду" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Ви впевнені, що хочете покинути цю команду?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Покидання команди" @@ -3076,39 +3074,39 @@ msgstr[0] "Перемістити бібліотеку" msgstr[1] "Перемістити бібліотеки" msgstr[2] "Перемістити бібліотеки" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Розмір зсуву" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Передати права власності" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Якщо Ви передасте права власності, Ви зміните свою роль на Admin, втративши " "деякі повноваження над цією командою. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Ви поточний власник цієї команди. Ви впевнені, що хочете призначити %s " "новим власником цієї команди?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Новий власник команди" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Опублікувати" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Ваша бібліотека порожня. Ви впевнені, що хочете опублікувати її?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Опублікувати пусту бібліотеку" @@ -3166,21 +3164,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Оновити компоненти в спільній бібліотеці" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Оновити" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Скасувати" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "Ви збираєтесь оновити компонент у спільній бібліотеці. Це вплине також на " "файли, які її використовують." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Оновити компонент спільної бібліотеки" @@ -3294,11 +3292,11 @@ msgstr "" msgid "notifications.by-code.upgrade-version" msgstr "Нова версія доступна, будь ласка, оновіть сторінку" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Запрощення успішно надіслано" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "Посилання на запрошення скопійовано" @@ -3450,7 +3448,7 @@ msgstr "" "Не забувайте долучати всіх-всіх. Розробників, дизайнерів, менеджерів... та " "будь-кого іншого :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Запросити у якості:" @@ -3670,193 +3668,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "Повернутись на сторінку входу" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Від'єднати" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Змішаний" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "Видалити колір" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "Оберіть елементи, використовуючи цей стиль" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Основи" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "Панель управління" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Глядач" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Робоче поле" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Вирівнювання" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Редагувати" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "Загальні" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "Загальні" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Головне меню" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Модифікувати шар" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Навігація" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Навігація" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Навігація" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Панелі" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Контури" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Форми" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Тексти" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Інструменти" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Масштабування" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Масштабування" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Коментарі" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Додати вузол" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Вирівняти по низу" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Вирівняти по центру" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Вирівняти по центру горизонтально" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Вирівняти по ширині" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Вирівняти по лівому краю" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Вирівняти по правому краю" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Вирівняти по верху" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Вирівняти по центру вертикально" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Створити дошку з вибраного" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Виділити жирним шрифтом" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Булева різниця" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Логічне виключення" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "Булева інтерсекція" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Булеве об'єднання" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Відсунути на задній план" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Посунути нижче" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Посунути вище" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Відсунути на передній план" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Скасувати відміну" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Скопіювати" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "Скопіювати посилання у буфер" @@ -3865,287 +3863,271 @@ msgstr "Скопіювати посилання у буфер" msgid "shortcuts.copy-props" msgstr "Копіювати параметри" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Створити новий" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Вирізати" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Зменшити" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Видалити" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Видалити вузол" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Від'єднати компонент" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Крива" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Еліпс" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "Рамка" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Намалювати шлях" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Контур" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Прямокутник" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Текст" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Дублікат" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Відмінити" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Експортувати фігури" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Збільшити, щоб вмістити все" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Перевернути горизонтально" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Перевернути вертикально" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Зменшити розмір шрифту на 1" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Збільшити розмір шрифту на 1" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Відвідати чернетки" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Відвідати спільні бібліотеки" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Пошук" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Група" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Розподілити горизонтально" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Показати/приховати інтерфейс" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Збільшити" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Вставити зображення" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Виділити курсивом" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Приєднати вузли" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Зменшити відступ між літерами на 1" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Збільшити відступ між літерами на 1" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Зменшити висоту лінії на 1" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Збільшити висоту лінії на 1" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Перемкнути рядок через" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Створити кут" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Створити криву" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Маска" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Об'єднання вузлів" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Перемістити" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Швидко перемістити униз" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Швидко перемістити ліворуч" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Швидко перемістити праворуч" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Швидко перемістити вгору" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Перемістити вузол" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Перемістити вниз" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Перемістити ліворуч" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Перемістити праворуч" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Перемістити вгору" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Наступна дошка" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Скорочень не знайдено" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Непрозорість на 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Непрозорість на 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Непрозорість на 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Непрозорість на 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Непрозорість на 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Непрозорість на 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Непрозорість на 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Непрозорість на 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Непрозорість на 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Непрозорість на 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Підбір кольору" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "Перейти до коментарів глядача" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Перейти до панелі керування" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Перейти до інспекції глядача" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "Перейти до взаємодій глядача" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Перейти до взаємодій глядача" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "Перейти до робочого простору" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " або " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Вставити" @@ -4159,191 +4141,191 @@ msgstr "Вставити параметри" msgid "shortcuts.plugins" msgstr "Менеджер плагінів" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Попередня дошка" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Повернути внесені зміни" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "Перейменувати" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "Скинути збільшення" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "Масштабувати" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Пошук скорочень" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Обрати все" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "Обрати наступний шар" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Обрати батьківський шар" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "Обрати попередній шар" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "Відокремити вузли" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "Показати / приховати піксельну сітку" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Показати / приховати скорочення" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Прив'язати до вузлів" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Прив'язати до піскельної сітки" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "Почати редагування" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Почати вимірювання" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "Припинити вимірювання" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Вставити мініатюри" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "Клавіатурні скорочення" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Перемкнути динамічне вирівнювання" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Обрати ресурси" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Обрати палітру кольорів" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Обрати режим фокусування" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Перейти в повноекраний режим" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "Показати/приховати орієнтири" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "Обрати історію" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Обрати шари" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "Додати / вилучити гнучкий макет" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "Додати / вилучити макет сітки" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Блокувати / розблокувати" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "Заблокувати пропорції" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "Показати / приховати лінійки" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "Прив'язувати до орієнтирів" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "Прив'язувати до орієнтирів лінійок" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Обрати палітру тексту" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "Змінити тему" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Показати / приховати" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Обрати стиль збільшення" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Обрати нижнє підкреслення" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Скасувати попередню дію" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Розбити групу" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Зняти маску" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Розподілити вертикально" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Зменшити об'єктив лінзи" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Збільшити об'єктив лінзи" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Збільшити до обраного" @@ -4404,7 +4386,7 @@ msgstr "Ваша підписка:" msgid "subscription.dashboard.team-plan" msgstr "План команди" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "Підсилити" @@ -4538,7 +4520,7 @@ msgstr "Безлімітний (пробний)" msgid "subscription.settings.unlimited.bill" msgstr "Місячний рахунок з граничною сумою" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "Підсильте Ваш план" @@ -4594,19 +4576,19 @@ msgstr "Пароль - Penpot" msgid "title.settings.profile" msgstr "Профіль - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Запрошення - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Учасники - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Налаштування - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Вебхуки - %s - Penpot" @@ -4678,43 +4660,43 @@ msgstr "Показати взаємодії при натискані" msgid "viewer.header.sitemap" msgstr "Мапа сайту" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "Остання доставка була успішною." -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Вирівняти по центру горизонтально (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Розподілити горизонтальні проміжки (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Вирівняти по лівому краю (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Вирівняти по правому краю (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Вирівняти по низу (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Вирівняти по центру вертикально (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Розподілити вертикальні проміжки (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Вирівняти по верху (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "Додати бібліотеку" @@ -4723,19 +4705,19 @@ msgstr "Додати бібліотеку" msgid "workspace.assets.assets" msgstr "Ресурси" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Усі ресурси" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Кольори" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "Додати колір" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Компоненти" @@ -4743,23 +4725,23 @@ msgstr "Компоненти" msgid "workspace.assets.components.add-component" msgstr "Додати компонент" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s Варіантів" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Створити групу" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "Ваші елементи будуть автоматично названі як \"назва групи / назва елемента\"" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "Видалити" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "Створити дуплікат" @@ -4767,11 +4749,11 @@ msgstr "Створити дуплікат" msgid "workspace.assets.duplicate-main" msgstr "Дублювати головний" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Редагувати" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "Фільтрувати" @@ -4780,27 +4762,27 @@ msgstr "Фільтрувати" msgid "workspace.assets.graphics" msgstr "Графіка" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "Перегляд сіткою" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Група" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Ім'я групи" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "Перегляд списком" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "локальна бібліотека" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "Керувати бібліотекою" @@ -4812,15 +4794,15 @@ msgstr "Не було знайдено ресурсів" msgid "workspace.assets.open-library" msgstr "Відкрити файл бібліотеки" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Перейменувати" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Перейменувати групу" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Пошук ресурсів" @@ -4837,22 +4819,22 @@ msgstr[2] "%s елементів обрано" msgid "workspace.assets.shared-library" msgstr "Спільна бібліотека" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "%s компонент" msgstr[1] "%s компоненти" msgstr[2] "%s компонентів" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "Сортувати" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Типографіка" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "Додати типографіку" @@ -4877,7 +4859,7 @@ msgstr "Міжлітеральний відступ" msgid "workspace.assets.typography.line-height" msgstr "Висота лінії" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Аа" @@ -4889,59 +4871,59 @@ msgstr "Стилі тексту" msgid "workspace.assets.typography.text-transform" msgstr "Перетворення тексту" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Розгрупувати" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "Створити ділянку" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "Створити дошку" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "Об'єднати клітинки" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "Додати 1 стовпець праворуч" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "Додати 1 стовпець ліворуч" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "Видалити стовпець" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "Видалити стовпець та фігури" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "Дублювати стовпець" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "Додати 1 рядок знизу" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "Додати 1 рядок вгорі" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "Видалити рядок" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "Видалити рядок та фігури" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "Дублювати рядок" @@ -4949,7 +4931,7 @@ msgstr "Дублювати рядок" msgid "workspace.focus.focus-mode" msgstr "Режим фокусування" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Розфокосувати" @@ -4969,11 +4951,11 @@ msgstr "Лінійний градієнт" msgid "workspace.gradients.radial" msgstr "Радіальний градієнт" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "Вимкнути динамічне вирівнювання" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Вимкнути пропорційне масштабування" @@ -4982,23 +4964,23 @@ msgstr "Вимкнути пропорційне масштабування" msgid "workspace.header.menu.disable-scale-text" msgstr "Вимкнути масштабування тексту" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "Деактивувати прив'язку до орієнтирів" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Вимкнути прив'язку до пікселів" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "Деактивувати прив'язку до орієнтирів лінійок" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Увімкнути динамічне вирівнювання" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Увімкнути пропорційне масштабування" @@ -5007,51 +4989,51 @@ msgstr "Увімкнути пропорційне масштабування" msgid "workspace.header.menu.enable-scale-text" msgstr "Увімкнути масштабування тексту" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Прив'язати до орієнтирів" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Увімкнути прив'язку до пікселів" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "Прив'язати до орієнтирів лінійок" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "Приховати імена дошок" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "Приховати орієнтири" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Приховати палітру кольорів" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Приховати піксельну сітку" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Приховати лінійки" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Приховати палітру шрифтів" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Редагувати" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Файл" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Допомога та інформація" @@ -5060,63 +5042,63 @@ msgstr "Допомога та інформація" msgid "workspace.header.menu.option.power-up" msgstr "Підсилити свій план" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Налаштування" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Вигляд" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Повернутись до внесених змін" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Обрати все" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "Показати імена дошок" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "Показати орієнтири" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Показати палітру кольорів" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Показати піксельну сітку" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Показати лінійки" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Показати палітру шрифтів" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "Перемкнутись на темну тему" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "Перемкнутись на світлу тему" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "Перемкнутись на тему системи" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Відхилити зміни" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Скинути" @@ -5132,7 +5114,7 @@ msgstr "Збережено" msgid "workspace.header.saving" msgstr "Збереження" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "Поділитись" @@ -5141,11 +5123,11 @@ msgstr "Поділитись" msgid "workspace.header.unsaved" msgstr "Незбережені зміни" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Режим перегляду (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "Збільшення" @@ -5157,7 +5139,7 @@ msgstr "Заповнення - розширити щоб заповнити" msgid "workspace.header.zoom-fit" msgstr "Fit - зменшити масштаб до потрібного розміру" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Збільшити щоб вмістити все" @@ -5165,43 +5147,43 @@ msgstr "Збільшити щоб вмістити все" msgid "workspace.header.zoom-full-screen" msgstr "Повноекранний" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Наблизити до виділеного" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "Редагувати сітку" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "Вихід" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "Нижній внутрішній відступ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "Показати параметри 4-стороннього внутрішнього відступу" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "Горизонтальний внутрішній відступ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "Лівий внутрішній відступ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "Правий внутрішній відступ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "Верхній внутрішній відступ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "Вертикальний внутрішній відступ" @@ -5217,7 +5199,7 @@ msgstr "Все" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "Розмістити" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "Розмістити макет сітки" @@ -5226,10 +5208,6 @@ msgstr "Розмістити макет сітки" msgid "workspace.libraries.add" msgstr "Додати" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s кольорів" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "У вашій бібліотеці, поки що, немає стилів кольорів" @@ -5256,43 +5234,35 @@ msgstr "Попередні кольори" msgid "workspace.libraries.colors.rgb-complementary" msgstr "Додатковий RGB" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Зберегти стиль кольору" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s компонентів" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "Або додайте кілька з них, щоб спробувати:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "У команді немає Спільних Бібліотек" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "деякі шаблони тут" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Бібліотека файлів" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s графіків" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "БІБЛІОТЕКИ В ЦЬОМУ ФАЙЛІ" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "БІБЛІОТЕКИ" @@ -5301,11 +5271,11 @@ msgstr "БІБЛІОТЕКИ" msgid "workspace.libraries.library" msgstr "БІБЛІОТЕКА" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "ОНОВЛЕННЯ БІБЛІОТЕКИ" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "Завантаження…" @@ -5314,51 +5284,47 @@ msgstr "Завантаження…" msgid "workspace.libraries.more-templates" msgstr "Ви можете шукати " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Тут ще немає спільних бібліотек, які потребують оновлення" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "Не знайдено збігів для \"%s\"" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "Пошук спільних бібліотек" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "СПІЛЬНІ БІБЛІОТЕКИ" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "Під'єднати бібліотеку" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Кілька типографік" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Від'язати усі типографіки" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s типографік" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "Від'єднати бібліотеку" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "Оновити" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "побачити усі зміни" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "ОНОВЛЕННЯ" @@ -5366,31 +5332,31 @@ msgstr "ОНОВЛЕННЯ" msgid "workspace.notification-pill.detail" msgstr "Деталі" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Натисни на + щоб додати взаємодії." -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "Додати розмиття" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "Видалити розмиття" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Розмиття" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Групове розмиття" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Вибіркове розмиття" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "Перемикання розмивання" @@ -5398,105 +5364,105 @@ msgstr "Перемикання розмивання" msgid "workspace.options.canvas-background" msgstr "Фон полотна" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Зміст кліпу" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Компонент" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "Анотація" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Копія" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "Створіть анотацію" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Редагуйте анотацію" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Головний" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "Замінити компонент" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "У цій бібліотеці немає ресурсів" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "Розʼєднано" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 msgid "workspace.options.component.variant.duplicated.copy.locate" msgstr "До головного компонента" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:496 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:509 msgid "workspace.options.component.variant.duplicated.copy.title" msgstr "" "Цей компонент має версії, що конфліктують. Впевніться, що кожна варіація " "має унікальний набір значень властивостей." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1246 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 msgid "workspace.options.component.variant.duplicated.group.locate" msgstr "Розташувати дубльовані варіанти" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1243 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1278 msgid "workspace.options.component.variant.duplicated.group.title" msgstr "Деякі варіанти мають однакові властивості та значення" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:267 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:268 msgid "workspace.options.component.variant.duplicated.single.all" msgstr "Ці варіанти мають однакові властивості та значення." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:264 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:265 msgid "workspace.options.component.variant.duplicated.single.one" msgstr "Цей варіант має значення та властивості, які належать і до іншого." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:270 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:271 msgid "workspace.options.component.variant.duplicated.single.some" msgstr "Деякі з цих варіантів мають однакові значення і властивості." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "Визначити помилкові варіанти" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "Деякі варіанти мають помилкові імена" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "Ці варіанти мають помилкові імена." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "Цей варіант має помилкове імʼя." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "Деякі з цих варіантів мають помилкові імена." -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[property] = [value], [property] = [value]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "Спробуйте використати таку структуру:" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:935, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1157, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 msgid "workspace.options.component.variants-help-modal.title" msgstr "Як варіанти лишаються зʼєднаними" @@ -5540,7 +5506,7 @@ msgstr "По верху" msgid "workspace.options.constraints.topbottom" msgstr "По верху та низу" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Дизайн" @@ -5553,22 +5519,22 @@ msgstr "Експортувати" msgid "workspace.options.export-multiple" msgstr "Експортувати обране" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "Експортувати %s елемент" msgstr[1] "Експортувати %s елементи" msgstr[2] "Експортувати %s елементів" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "Додати експортування" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "Видалити експортування" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "Суфікс" @@ -5576,7 +5542,7 @@ msgstr "Суфікс" msgid "workspace.options.exporting-complete" msgstr "Експортування завершено" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Експортую…" @@ -5588,27 +5554,27 @@ msgstr "Не вдалось експортувати" msgid "workspace.options.exporting-object-slow" msgstr "Експортування відбувається неочікувано повільно" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Заповнити" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "Додати заливку" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "Видалити заливку" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "Змінити розмір щоб заповнити" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Додати початок потоку" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "Потік" @@ -5617,19 +5583,19 @@ msgstr "Потік" msgid "workspace.options.flows.flow-start" msgstr "Початок потоку" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "Початки потоку" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "Видалити потік" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Автоматично" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "Стовпці" @@ -5638,7 +5604,7 @@ msgstr "Стовпці" msgid "workspace.options.grid.grid-title" msgstr "Сітка" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Колір" @@ -5647,15 +5613,15 @@ msgstr "Колір" msgid "workspace.options.grid.params.columns" msgstr "Стопвці" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Проміжок" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Висота" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Зовнішній відступ" @@ -5664,7 +5630,7 @@ msgstr "Зовнішній відступ" msgid "workspace.options.grid.params.rows" msgstr "Рядки" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Встановити за вмовчанням" @@ -5678,159 +5644,159 @@ msgstr "Розмір" msgid "workspace.options.grid.params.type" msgstr "Тип" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "Низ" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "По центру" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Ліво" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Право" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Розтягування" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "По верху" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Використовувати вмовчання" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Рядки" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Квадратна" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Заповнити групу" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Рамка групи" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "Додати орієнтир" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "Видалити орієнтир" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "Орієнтири" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "Перемкнути орієнтир" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Висота" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Дослідити" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Дія" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Після затримки" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Анімація" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Розчинення" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Жоден" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Штовхати" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Ковзати" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "автоматично" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Додати накладання фону" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Закрити при натискані за межами" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Закрити накладення" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Закрити накладення: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Затримка" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Розташування" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Тривалість" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Плавний перехід" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Плавно переходити" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Плавно переходити всередину" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Плавна поява та зникнення" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Плавне зникнення" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Лінійний" @@ -5839,47 +5805,47 @@ msgstr "Лінійний" msgid "workspace.options.interaction-in" msgstr "В" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Вхід миші" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Вихід миші" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "мс" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Перейти до" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Перейти до: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(не вказано)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Ефект зсуву" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "При натисканні" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Відкрити накладення" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Вікрити накладення: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Відкрити посилання" @@ -5888,87 +5854,87 @@ msgstr "Відкрити посилання" msgid "workspace.options.interaction-out" msgstr "З" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Внизу по центру" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Внизу ліворуч" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Внизу праворуч" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Центр" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Ручний" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Зверху по центру" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Зверху ліворуч" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Зверху праворуч" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Позиція" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Зберегти позицію прокрутки" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Попередній екран" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Відносно" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "себе" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Перемкнути накладення" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Перемкнути накладення: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Подразник" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "Посилання" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Під час наведення" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Під час натискання" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Взаємодії" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "Додати взаємодію" @@ -5977,67 +5943,67 @@ msgstr "Додати взаємодію" msgid "workspace.options.interactions.remove-interaction" msgstr "Видалити взаємодію" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Колір" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Вигорання кольору" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Освітлення кольором" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Потемніння" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Різниця" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Виключення" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Жорстке світло" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Відтінок" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Світліше" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Сяяння" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Множення" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Нормальний" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Накладення" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Насиченість" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Екран" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "М'яке світло" @@ -6056,7 +6022,7 @@ msgstr "Згрупувати шари" msgid "workspace.options.layer-options.title.multiple" msgstr "Обрані шари" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "Перемкнути видимість шару" @@ -6065,19 +6031,19 @@ msgstr "Перемкнути видимість шару" msgid "workspace.options.layout-item.advanced-ops" msgstr "Додаткові параметри" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Макс. Висота" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Макс. Ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Мін.Висота" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Мін.Ширина" @@ -6191,15 +6157,15 @@ msgstr "простір між" msgid "workspace.options.layout.top" msgstr "Згори" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Більше кольорів" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Більше кольорів бібліотеки" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Непрозорість" @@ -6208,35 +6174,35 @@ msgstr "Непрозорість" msgid "workspace.options.position" msgstr "Розташування" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Прототип" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Радіус" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Нижнього лівого кута" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Нижнього правого кута" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Верхнього лівого" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Верхнього правого" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "Згорнути незалежні радіуси" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "Показати незалежні радіуси кутів" @@ -6248,7 +6214,7 @@ msgstr "Нещодавній" msgid "workspace.options.retry" msgstr "Спробувати ще раз" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Обернення" @@ -6256,31 +6222,31 @@ msgstr "Обернення" msgid "workspace.options.search-font" msgstr "Пошук шрифту" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "Оберіть фігуру, дошку чи групу щоб перетягнути з'єднання до іншої дошки." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Обрані кольори" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Заливка обраного" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Обведення виділення" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "Додати тінь" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Розм." -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Колір тіні" @@ -6292,63 +6258,64 @@ msgstr "Падаюча тінь" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Внутрішня тінь" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "Вісь X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Вісь Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "Видалити тінь" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "розмір" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Тінь" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Групова тінь" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Тінь виділеного" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "Перемкнути тінь" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Показати в експортованому" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Показати у режимі перегляду" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Розмір" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Шаблони розміру" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "Зафіксувати співвідношення" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "Зняти фіксацію співвідношення" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Обведення" @@ -6357,7 +6324,7 @@ msgstr "Обведення" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Маркер кола" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Коло" @@ -6366,7 +6333,7 @@ msgstr "Коло" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Ромбоподібний маркер" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Ромб" @@ -6375,19 +6342,19 @@ msgstr "Ромб" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Лінійна стрілка" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Стрілка" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Жодний" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Округле" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Квадратне" @@ -6396,7 +6363,7 @@ msgstr "Квадратне" msgid "workspace.options.stroke-cap.square-marker" msgstr "Квадратний маркер" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Прямокутне" @@ -6405,83 +6372,83 @@ msgstr "Прямокутне" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Трикутна стрілка" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Трикутне" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Колір обведення" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Довжина обведення" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "Додати колір обведення" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "По центру" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Пунктирний" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "Точковий" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Всередину" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Комбіноване" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Назовні" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "Видалити обведення" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Жирне" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Вирівняти по низу" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Вирівняти по середині" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Вирівняти по верху" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Автоматична висота" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Автоматична ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Фіксована" @@ -6503,35 +6470,35 @@ msgstr "нижній реєстр" msgid "workspace.options.text-options.none" msgstr "Жоден" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Закреслення (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Вирівняти по центру" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "За шириною" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Вирівняти ліворуч" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Вирівняти праворуч" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Текст" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Груповий текст" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Вибраний текст" @@ -6540,7 +6507,7 @@ msgstr "Вибраний текст" msgid "workspace.options.text-options.titlecase" msgstr "Регістр заголовку" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Підкреслення (%s)" @@ -6549,21 +6516,21 @@ msgstr "Підкреслення (%s)" msgid "workspace.options.text-options.uppercase" msgstr "ВЕРХНІЙ РЕГІСТР" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Використовуйте кнопку відтворення в заголовку, щоб запустити перегляд " "прототипів." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Ширина" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Вісь абсцис (X)" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Вісь ординат (Y)" @@ -6607,78 +6574,78 @@ msgstr "Розділити вузли (%s)" msgid "workspace.path.actions.snap-nodes" msgstr "Прив'язати вузли (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "Відкрити" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "Дослідіть [більше плагінів](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "Ви поки не встановлювали жодного плагіна" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "Маніфест плагіна неправильний." -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "Щоб використовувати цей плагін, Ви маєте бути редактором" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "Плагін не існує або посилання на нього неправильне." -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "Встановити" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "Встановлені плагіни" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "Керування плагінами" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "Плагіни" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "ОНОВИТИ ЦЕЙ ПЛАГІН" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "" "Плагін було модифіковано після останнього використання. Тепер він також " "хоче отримати доступ до:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "Завантаження файлів розпочато." -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "Читати ваші коментарі та відповіді." -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "Читати та змінювати ваші коментарі та відповіді від вашого імені." -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "Читати вміст файлів до яких користувачі мають доступ." -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "Читати та модифікувати вміст файлів, до яких користувачі мають доступ." -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "" "Зауважте, що плагін створено зовнішньою стороною, тож впевніться що Ви " @@ -6686,31 +6653,31 @@ msgstr "" "безпека Ваших даних. Якщо маєте якісь сумніви, звʼяжіться із службою " "підтримки." -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "Читати ваші бібліотеки та матеріали." -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "Читати та модифікувати ваші бібліотеки та матеріали." -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "'%s' ПЛАГІН ЗАПИТУЄ ДОСТУП НА:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "Читати інформацію профілю поточного користувача." -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "Список плагінів" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "Видалити плагін" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "Вкажіть посилання на плагін" @@ -6718,25 +6685,25 @@ msgstr "Вкажіть посилання на плагін" msgid "workspace.plugins.success" msgstr "Плагін успішно завантажено." -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "Плагіни" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "НЕ ЗАРАЗ" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "" "Хочете переглянути? Буде створено нову чернетку для цієї команди. (Якщо ні, " "ви можете завжди знайти це у встановлених плагінах будь-якого файлу.)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "'%s' ПЛАГІН ВСТАНОВЛЕНО ДЛЯ ВАШОГО КОРИСТУВАЧА!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "СПРОБУВАТИ ПЛАГІН" @@ -6748,15 +6715,15 @@ msgstr "Додати гнучкий макет" msgid "workspace.shape.menu.add-grid" msgstr "Додати макет сітки" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "Додати макет" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "Створити варіант" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "Додати нову властивість" @@ -6800,7 +6767,7 @@ msgstr "Копіювати як SVG" msgid "workspace.shape.menu.copy-text" msgstr "Копіювати як текст" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Створити анотацію" @@ -6808,11 +6775,11 @@ msgstr "Створити анотацію" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Виділене на дошку" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Створити компонент" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Створити кілька компонентів" @@ -6820,7 +6787,7 @@ msgstr "Створити кілька компонентів" msgid "workspace.shape.menu.cut" msgstr "Вирізати" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Вилучити" @@ -6828,15 +6795,15 @@ msgstr "Вилучити" msgid "workspace.shape.menu.delete-flow-start" msgstr "Видалити початок потоку" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "Відокремити екземпляр" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Відокремити екземпляри" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Різниця" @@ -6848,11 +6815,11 @@ msgstr "Дублювати" msgid "workspace.shape.menu.edit" msgstr "Редагувати" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Виключити" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Вирівняти" @@ -6885,19 +6852,19 @@ msgstr "Перейти до файлу головного компоненту" msgid "workspace.shape.menu.group" msgstr "Група" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Приховати" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Показати / приховати інтерфейс" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Перехрестя" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Заблокувати" @@ -6905,7 +6872,7 @@ msgstr "Заблокувати" msgid "workspace.shape.menu.mask" msgstr "Додати маску" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "Вставити" @@ -6925,11 +6892,11 @@ msgstr "Видалити гнучкий макет" msgid "workspace.shape.menu.remove-grid" msgstr "Видалити макет сітки" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "Видалити макет" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "Видалити властивість" @@ -6937,15 +6904,15 @@ msgstr "Видалити властивість" msgid "workspace.shape.menu.rename" msgstr "Перейменувати" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Відкликати зміни" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Відновити головний компонент" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "Відновити варіант" @@ -6953,15 +6920,15 @@ msgstr "Відновити варіант" msgid "workspace.shape.menu.select-layer" msgstr "Обрати шар" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Показати" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Показати в панелі ресурсів" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Показати головний компонент" @@ -6974,6 +6941,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Встановити як мініатюру" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Перетворити на шлях" @@ -6981,11 +6949,11 @@ msgstr "Перетворити на шлях" msgid "workspace.shape.menu.ungroup" msgstr "Дегрупувати" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Об'єднання" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Розблокувати" @@ -6998,7 +6966,7 @@ msgstr "Зняти маску" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "Оновити головні компоненти" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "Оновити головний компонент" @@ -7010,11 +6978,11 @@ msgstr "Приховати панель інструментів" msgid "workspace.sidebar.expand" msgstr "Розкрити панель інструментів" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Історія" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Шари" @@ -7054,11 +7022,11 @@ msgstr "Тексти" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Імпортовані атрибути SVG" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Сторінки" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "Додати сторінку" @@ -7075,27 +7043,27 @@ msgstr "%s активних тем" msgid "workspace.tokens.add set" msgstr "Додати набір" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "Додати нову тему" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "Додати набір до цієї групи" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "Додати токен: %s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "Застосовано до" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "Вісь" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "Повернутись до списку тем" @@ -7127,15 +7095,15 @@ msgstr "Колір" msgid "workspace.tokens.create-new-theme" msgstr "Створити свою першу тему зараз." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "Створити." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "Створити новий %s токен" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "Видалити токен" @@ -7143,19 +7111,19 @@ msgstr "Видалити токен" msgid "workspace.tokens.delete-theme-title" msgstr "Видалити тему" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "Дублювати токен" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "копіювати" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "Змінити токен" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "Редагувати тему" @@ -7163,15 +7131,11 @@ msgstr "Редагувати тему" msgid "workspace.tokens.edit-themes" msgstr "Редагувати теми" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "Редагувати токен" - #: src/app/main/data/workspace/tokens/errors.cljs:41 msgid "workspace.tokens.empty-input" msgstr "Значення токену не може бути порожнім" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "Вкажіть %s ім'я токену" @@ -7203,7 +7167,7 @@ msgstr "Попередній перегляд:" msgid "workspace.tokens.export.single-file" msgstr "Один файл" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "Проміжки" @@ -7225,17 +7189,17 @@ msgstr "Групування наборів токенів поки не під msgid "workspace.tokens.import-error" msgstr "Помилка імпорту:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:241 msgid "workspace.tokens.import-multiple-files" msgstr "У декількох файлах імʼя / шлях файлу - імена набору." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:239 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:240 msgid "workspace.tokens.import-single-file" msgstr "" "У одному файлі JSON, ключі першого рівня повинні бути іменами набору " "токенів." -#: src/app/main/ui/workspace/tokens/import/modal.cljs:236 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:237 msgid "workspace.tokens.import-tokens" msgstr "Імпортувати токени" @@ -7244,7 +7208,7 @@ msgstr "Імпортувати токени" msgid "workspace.tokens.import-tooltip" msgstr "Імпортування файлу JSON перепише всі наявні токени, набори та теми" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:246 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 msgid "workspace.tokens.import-warning" msgstr "Імпорт токенів перепише усі наявні токени, набори та теми." @@ -7297,15 +7261,15 @@ msgstr "Тема" msgid "workspace.tokens.label.theme-placeholder" msgstr "Додати тему (приміром Світла)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:221 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 msgid "workspace.tokens.margins" msgstr "Зовнішні відступи" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:257 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 msgid "workspace.tokens.max-size" msgstr "Макс. розмір" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:251 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 msgid "workspace.tokens.min-size" msgstr "Мін. розмір" @@ -7321,7 +7285,7 @@ msgstr "Немає активних наборів" msgid "workspace.tokens.no-active-theme" msgstr "Немає активної теми" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "Щоб активувати / деактивувати набір, Ви маєте бути редактором" @@ -7329,11 +7293,11 @@ msgstr "Щоб активувати / деактивувати набір, Ви msgid "workspace.tokens.no-permission-themes" msgstr "Щоб використовувати ці теми Ви маєте бути редактором" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "Ще не оголошено жодного набору. Створіть перший." -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "Тут ще немає наборів." @@ -7357,12 +7321,12 @@ msgstr "Помилкове значення токену. Отримане зн msgid "workspace.tokens.opacity-range" msgstr "Непрозорість має бути між 0 та 100% або ж між 0 та 1 (де 0.5 - 50%)." -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "Початкове значення: %s" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:205 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 msgid "workspace.tokens.paddings" msgstr "Внутрішні відступи" @@ -7370,7 +7334,7 @@ msgstr "Внутрішні відступи" msgid "workspace.tokens.radius" msgstr "Радіус" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "Посилання помилкове або ні на одному із активних наборів" @@ -7379,7 +7343,7 @@ msgstr "Посилання помилкове або ні на одному із msgid "workspace.tokens.reference-error" msgstr "Помилка посилання: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "Отримане значення: %s" @@ -7388,7 +7352,7 @@ msgstr "Отримане значення: %s" msgid "workspace.tokens.save-theme" msgstr "Зберегти тему" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "Обрати набір." @@ -7396,11 +7360,11 @@ msgstr "Обрати набір." msgid "workspace.tokens.self-reference" msgstr "Токен має самопосилання" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:64 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 msgid "workspace.tokens.set-edit-placeholder" msgstr "Введіть імʼя (використовуйте '/' для груп)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "" "Визначити які набори токенів повинні бути використані як частину цього " @@ -7423,7 +7387,7 @@ msgstr "Тут можна налаштувати базовий розмір ш msgid "workspace.tokens.settings" msgstr "Налаштування токену" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "Розмір" @@ -7445,16 +7409,16 @@ msgstr "" msgid "workspace.tokens.themes-list" msgstr "Список тем" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "Опис" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "Ім'я" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " помилкове імʼя токену.\n" @@ -7466,11 +7430,11 @@ msgstr "" msgid "workspace.tokens.token-not-resolved" msgstr "Неможливо отримати токен посилання з імʼям: %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "Значення" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:566, src/app/main/ui/workspace/tokens/management/create/form.cljs:883, src/app/main/ui/workspace/tokens/management/create/form.cljs:892 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:584, src/app/main/ui/workspace/tokens/management/create/form.cljs:1035 msgid "workspace.tokens.token-value-enter" msgstr "Ведіть значення або псевдо з {псевдо}" @@ -7478,7 +7442,7 @@ msgstr "Ведіть значення або псевдо з {псевдо}" msgid "workspace.tokens.tokens-section-title" msgstr "ТОКЕНИ - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "Інструменти" @@ -7486,7 +7450,7 @@ msgstr "Інструменти" msgid "workspace.tokens.unknown-token-type-section" msgstr "Тип \"%s\" непідтримуваний (%s)\n" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "Значення не є дійсним" @@ -7494,11 +7458,11 @@ msgstr "Значення не є дійсним" msgid "workspace.tokens.value-with-units" msgstr "Помилкове значення: Одиниці не дозволені." -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "Якщо перейменувати токен, посилання на старе імʼя буде розірвано." -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Ресурси" @@ -7506,7 +7470,7 @@ msgstr "Ресурси" msgid "workspace.toolbar.color-palette" msgstr "Палітра кольорів (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Коментарі (%s)" @@ -7717,19 +7681,19 @@ msgstr "Операція над %s" msgid "workspace.undo.title" msgstr "Історія" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Відкинути" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Більше про" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Є деякі оновлення в спільній бібліотеці" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Оновити" @@ -7789,11 +7753,11 @@ msgstr "Ви бажаєте відновити ці версії?" msgid "workspace.versions.snapshot-menu" msgstr "Відкрити меню знятків" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "Дії" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "Історія" diff --git a/frontend/translations/yo.po b/frontend/translations/yo.po index e79e1dbe2c..01debcab15 100644 --- a/frontend/translations/yo.po +++ b/frontend/translations/yo.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: Alejandro Alonso \n" -"Language-Team: Yoruba " -"\n" +"Language-Team: Yoruba \n" "Language: yo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:277 #, unused @@ -140,7 +140,7 @@ msgstr "ṣẹ̀dá àkáùntì" msgid "auth.sidebar-tagline" msgstr "ṣíṣí orísun yíyà àti àwòrán ni yóò fi lojútùú ." -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "òfin ibiṣẹ́" @@ -159,7 +159,7 @@ msgstr "a ti fi ìjẹ́rìísí ránsẹ́ sínú ímeèlì rẹ" msgid "branding-illustrations-marketing-pieces" msgstr ".. ìyàsọ́tọ, àpèjúwe,títajà nǹkan, abbl." -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "ìgbéjáde" @@ -219,7 +219,7 @@ msgstr "pín àwọn àpẹrẹ" msgid "common.share-link.view-all" msgstr "yan gbogbo rẹ̀" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "ohun tí a kò tí ì kọ jáde" @@ -330,7 +330,7 @@ msgstr "àmì tòkìn yóò parí ní %s" msgid "dashboard.access-tokens.token-will-not-expire" msgstr "kò sí ọjọ́ ìparí fún àmì tókìn" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "ṣe àpàpọ̀ bí i yàrá ìkàwe tí a pín" @@ -338,27 +338,27 @@ msgstr "ṣe àpàpọ̀ bí i yàrá ìkàwe tí a pín" msgid "dashboard.change-email" msgstr "pàrọ̀ ímeèlí" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(dàákọ)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "ṣẹ̀dá ẹgbẹ́ tuntun" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "pẹ́ńpọtì rẹ" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "pa ẹgbẹ́ rẹ́" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "sọ fáìlí pẹ́ńpọtì kalẹ̀ (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "sọ fáìlì ìpéwọ̀n kalẹ̀ (.svg + .json)" @@ -374,7 +374,7 @@ msgstr "ṣe ẹ̀dà %s fáìlì" msgid "dashboard.export-binary-multi" msgstr "sọ àwọn fáìlì pẹ́ẹ́pọtì kalẹ́ %s (.pẹ́ńpọtì)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "fi bọọdù ráńṣẹ bí i PDF" @@ -390,7 +390,7 @@ msgstr "fi pẹ́ńpọtì ráńṣẹ́%s files" msgid "dashboard.export-multiple.selected" msgstr "% ti %s ẹ́límẹ́ǹti tí a yàn" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "fi ráńṣẹ" @@ -546,11 +546,11 @@ msgstr "ọpulóòdù dátà sínú sáfà (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "ọpulóòdù fáìlì: %s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "pe àwọn ènìyàn" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "fẹgbẹ́ sílẹ̀" @@ -562,7 +562,7 @@ msgstr "yàrá ìkàwé àti àwọn àwòṣe" msgid "dashboard.libraries-and-templates.explore" msgstr "ṣe ìwákiri ọ̀pọ̀ wọn kí o sì mọ bí ó ṣe sojúṣe tiẹ" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "wàhálà wà fún gbígbé tẹ́ńpílétì wọlé. tẹ́ńpílétì kò wọlé." @@ -594,7 +594,7 @@ msgstr "gbé lọ sí ẹgbẹ́ mìíràn" msgid "dashboard.new-file" msgstr "+ fáìlì tuntun" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "fáìlì tuntun" @@ -602,7 +602,7 @@ msgstr "fáìlì tuntun" msgid "dashboard.new-project" msgstr "+ iṣẹ́ àgbéṣe tuntun" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "iṣẹ́ àgbéṣe tuntun" @@ -610,7 +610,7 @@ msgstr "iṣẹ́ àgbéṣe tuntun" msgid "dashboard.no-matches-for" msgstr "kò sí èyí tó báramu fún un“%s“" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "àwon iṣẹ́ àgbéṣe tí a kànpọ á hàn níbí" @@ -626,7 +626,7 @@ msgstr "a ti ṣe ìwádìí ímeèlì rẹ dáadáa" msgid "dashboard.notifications.password-saved" msgstr "a ti fi ọ̀rọ̀ ìgbaniwọlé rẹ pamọ́ dáadáa!" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s àwọn ọmọ ẹgbẹ́" @@ -642,7 +642,7 @@ msgstr "àwọn àṣàyàn" msgid "dashboard.password-change" msgstr "yí ọ̀rọ̀ ìgbaniwọlé padà" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "pínì/yọ pínì kúrò" @@ -663,7 +663,7 @@ msgstr "yọ ọ́ kúrò gẹ́gẹ́ bí yàrá kàwé pípín" msgid "dashboard.save-settings" msgstr "fi àwọn eto pamọ́" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "ṣàwárí…" @@ -691,7 +691,7 @@ msgstr "iṣẹ́ àgbéṣe rẹ ti parẹ́ dáadáa" msgid "dashboard.success-duplicate-project" msgstr "a ti ṣe ẹ̀dà iṣẹ́ àgbéṣe rẹ dáadáa" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "a ti gbé fáìlì rẹ kúro dáadáa" @@ -703,15 +703,15 @@ msgstr "a ti gbé àwọn fáìlì rẹ kúrò dáadáa" msgid "dashboard.success-move-project" msgstr "a ti gbé iṣẹ́ àgbéṣe rẹ kúrò dáadáa" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "àlàyé ẹgbẹ́" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "àwọn ọmọ ẹgbẹ́" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "iṣẹ́ àgbéṣe ọmọ ẹgbẹ́" @@ -727,7 +727,7 @@ msgstr "ṣàwárí àwọn èsì" msgid "dashboard.type-something" msgstr "tẹ̀ láti rí àwọn èsì" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "yàrá ìkàwé tí a kòtí ì gbé jáde" @@ -735,38 +735,38 @@ msgstr "yàrá ìkàwé tí a kòtí ì gbé jáde" msgid "dashboard.update-settings" msgstr "mú àwọn ètò dójú ìwọ̀n" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "ti ń siṣẹ́" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "When this hook is triggered event details will be delivered" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "ẹ̀yà kọ́ńtẹ́ǹtì" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "ṣẹ̀dá ìkọ́-wẹ́bù" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "a ti ṣẹ̀dá ìkọ́-wẹ́bù dáadáa ." -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "" "àwọn ìkọ́-wẹ́bù jẹ́ ọ̀nà tó rọrùn láti fi ààyè sílẹ̀ fún àwọn ààyè " "ayélujára mìíràn àti awọn ápù ṣe filọ́ tí àwọn ìṣẹ̀lẹ̀ kan bá ní " "pẹ́ńpọtì’’ a ó fi ìbéèrè ráńṣẹ́ sí ọ̀kọ̀kan wọn tí urls tó o pèsè." -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "tẹ bọ́tínnì \"fikún ìkọ́- wẹ́bù\" láti fì kan sí i." -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "kò sí ìkọ́-wẹ́bù tí a ṣẹ̀da´dì sisìnyí." @@ -782,7 +782,7 @@ msgstr "ímeèlì" msgid "dashboard.your-name" msgstr "ímeèlì rẹ" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "pẹ́ńpọtì rẹ" @@ -798,11 +798,11 @@ msgstr "àkíyèsí" msgid "ds.component-subtitle" msgstr "ní láti ṣe ìmúdójú ìwọ̀n àwọn irin iṣẹ́:" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "fagilé e" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "ó dára" @@ -842,11 +842,11 @@ msgstr "a ti fọwọ́ sí ímeèlì rẹ tẹ́lẹ̀." msgid "errors.email-as-password" msgstr "o kò le lo ímeèlì rẹ gẹ́gẹ́ bí ọ̀rọ̀ ìgbaniwọlé" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "Ímeèlì «%s» ti ní ìjábọ̀ ọ̀pọ̀ọlọpọ̀ ìta-bọn-ọ̀n ti pẹ́." -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "Ímeèlì ti «%s» ń jábọ̀ gẹ́gẹ́ bí i awúrúju tàbí ìta-bọ̀n-ọnọǹ tipẹ́." @@ -854,7 +854,7 @@ msgstr "Ímeèlì ti «%s» ń jábọ̀ gẹ́gẹ́ bí i awúrúju tàbí msgid "errors.feature-not-supported" msgstr "Àwọn ẹ̀yà ara ẹ̀rọ '%s' kò ní àtìlẹ́yìn." -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "Àsìṣe kan ti ṣẹlẹ̀." @@ -883,7 +883,7 @@ msgstr "Èyí tí a pè le parẹ́ tàbí ki àkókò lekọjá ." msgid "errors.ldap-disabled" msgstr "Ìfàṣẹsí LDAP kò ṣe é ṣe ." -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "O ti débi '%s' ìfàmìsí. Késí i pẹ̀lú àtìlẹ́yìn ." @@ -895,7 +895,7 @@ msgstr "Àwòrán tóbi púpọ ju ohun tí a le fisí lọ." msgid "errors.media-type-not-allowed" msgstr "Ó dàbí pé èyí kì í ṣe àwòrán tó fẹsẹ́ múlẹ̀." -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "" "Pírófáìlì ímeèlì tí ò ǹ pè ti dákẹ (ti jábọ̀ àwúrúju tàbí ìtabọ̀n-ọ̀n tó " @@ -915,7 +915,7 @@ msgstr "Ọ̀rọ̀ ìgbaniwọlé kò gbọdọ̀ dín ní lẹ́tà mẹ́jọ msgid "errors.profile-blocked" msgstr "Ti dínà mọ́ pírófáìlì" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "Ímeèlì pírófáìlì rẹ ti ní ìdákẹ́ (ìjábọ̀ àwúrúju tàbí ìtabọ̀n-ọ̀n tó ga)." @@ -923,15 +923,15 @@ msgstr "Ímeèlì pírófáìlì rẹ ti ní ìdákẹ́ (ìjábọ̀ àwúrúju msgid "errors.registration-disabled" msgstr "Ìforúkọ-sílẹ̀ kò ṣe é ṣe lọ́wọ́lọ́wọ́." -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "kí àwọn ọmọ ẹgbẹ́ tí kò péye fi ẹgbẹ́ sílẹ̀, àbí bóyá o fẹ́ paárẹ́ ni ." -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "Kòsí ọmọ ẹgbẹ́ tí o fẹ́ yàn ." -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "Oní nǹkan kò le fi ẹgbẹ́ sílẹ̀ , o gbọ́dọ̀ tún ṣe àtúnyàn iṣẹ́ oní nǹkan." @@ -943,31 +943,31 @@ msgstr "Àsìṣe tí a kòrò tẹ́lẹ̀ ti ṣẹlẹ." msgid "errors.unexpected-token" msgstr "Tókìnnì àìmọ̀" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "Àsìṣe nínú ètò ìsopọ̀, kò lè dé ibi URL" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "URL kò páásì ìfọwọ́sí." -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "Èyí tí a fijíṣẹ́ kẹ́yìn kò dára." -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "Àsìṣe nínú ìfẹwọ́sí SSL ." -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "Àkókò ti lọ" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "Unexpected error on validating àsìṣe àìròtẹ́lẹ̀ lórí ìfọwọ́sí" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "Ipò àìròtẹ́lẹ̀ %s" @@ -1032,19 +1032,19 @@ msgstr "Àsìṣe kan ti ṣẹlẹ̀" msgid "inspect.attributes.blur" msgstr "ìkùku ti wà" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "bó se péye" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "dínà mọ́" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "Ti dínà mọ" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1052,7 +1052,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "Fílì" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "Danlóòdù orísun àwòrán" @@ -1146,77 +1146,80 @@ msgstr "Lágbára" msgid "inspect.attributes.stroke.width" msgstr "Fífẹ̀" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "Taipogíráfì" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "Ẹbí Fọ́ǹtì" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "Ìwọ̀n Fọ́ǹtì" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "Àrà Fọ́ǹtì" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "Ìwúwo Fọ́ǹtì" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "Ìfàyè sí ààrin Lẹ́tà" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "Gíga Ìlà" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "Síṣe ọ̀rọ̀ lọ́ṣọ̀ọ́" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "Kò sí" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "Fàlà sí" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "ọ̀rọ̀ ti yí padà" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "Àkọlé Lẹ́tà" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "Lẹ́tà Kékeré" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "Kò sí" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "Lẹ́tà ńlá" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "" "Tí o bá fẹ́ mọ̀ nípa àpẹẹrẹ alárà bẹ ààrin gbùngbùn àwọn pẹ́ńpọtì wò fún " "ìràlọ́wọ́" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "Àfikún àlàyé fún ìbẹ̀wò" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "Yan ìrísí, bọ́ọ̀dù tàbí ẹgbẹ́ láti lọ ṣe ìbẹ̀wò ohun ìní wọn àti kóòdù" @@ -1276,7 +1279,7 @@ msgstr "Ọ̀rọ̀" msgid "inspect.tabs.info" msgstr "Àlàyé" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "Ọ̀nà àbùjá" @@ -1284,7 +1287,7 @@ msgstr "Ọ̀nà àbùjá" msgid "labels.access-tokens" msgstr "Ṣàyẹ̀wò tókín-nì" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "Ń siṣẹ́" @@ -1292,7 +1295,7 @@ msgstr "Ń siṣẹ́" msgid "labels.add-custom-font" msgstr "Ṣàfikún àṣà Fọ́ǹtì" -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "Alábòjútó" @@ -1300,7 +1303,7 @@ msgstr "Alábòjútó" msgid "labels.adobe-xd" msgstr "Àdòbí XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "Gbogbo ẹ̀" @@ -1323,7 +1326,7 @@ msgstr "" msgid "labels.bad-gateway.main-message" msgstr "Ọ̀nà-àbáwọle búburú" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "Párẹ́" @@ -1331,15 +1334,15 @@ msgstr "Párẹ́" msgid "labels.canva" msgstr "Káńfà" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "Tì í" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "dásí i" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "Agbègbè" @@ -1347,7 +1350,7 @@ msgstr "Agbègbè" msgid "labels.confirm-password" msgstr "Jẹ́rìísí" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "Tẹ̀ síwájú" @@ -1359,11 +1362,11 @@ msgstr "Tẹ̀ síwájú pẹ̀lú" msgid "labels.continue-with-penpot" msgstr "O lè tẹ̀ síwájú pẹ̀lú àkáúnti pẹ́ńpọtì" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "ṣà dàkọ ọ̀nà àsopọ̀" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "Ṣẹ̀dá" @@ -1383,7 +1386,7 @@ msgstr "Kọ́sítọ́mù àwọn fọ́ǹtì" msgid "labels.dashboard" msgstr "Dáṣìbọọ̀dù" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "Paárẹ́" @@ -1395,7 +1398,7 @@ msgstr "Pa kọ́mẹ́ǹtì rẹ́" msgid "labels.delete-comment-thread" msgstr "Pa gbogbo kọ́mẹ́ǹtì rẹ́" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "Pa ìfìwépè rẹ́" @@ -1407,15 +1410,15 @@ msgstr "Pa gbogbo %s fáìlì rẹ́" msgid "labels.developer" msgstr "Olùdásílẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "Yọ́ kúrò" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "Kọ ọ́ sílẹ̀" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "sàtúnkà" @@ -1423,15 +1426,15 @@ msgstr "sàtúnkà" msgid "labels.edit-file" msgstr "sàtúnkà fáìlì" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "Olóòtú" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "Kọjá àkókò" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "Fi ránṣẹ́" @@ -1459,7 +1462,7 @@ msgstr "Àwọn Olùpèṣè fọ́ǹtì" msgid "labels.font-variants" msgstr "Àrà" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "Fọ̀ǹtì" @@ -1473,11 +1476,11 @@ msgstr "Olùdásílẹ̀/VP" msgid "labels.freelancer" msgstr "Oníṣẹ́ ni mí" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Báǹkì gítì-ọbù" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "Fèsì padà" @@ -1485,15 +1488,15 @@ msgstr "Fèsì padà" msgid "labels.go-back" msgstr "Padà sẹ́yìn" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "Ibi ìranilọ́wọ́" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "Fi àwọn ọ̀rọ̀ tí a ti yanjú pamọ́" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "kò ja fáfá" @@ -1515,7 +1518,7 @@ msgstr "Àsìṣe ti abẹ́nú" msgid "labels.invision" msgstr "Ìkógun wọ̀lú" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "Ìfiwépè" @@ -1523,7 +1526,7 @@ msgstr "Ìfiwépè" msgid "labels.language" msgstr "Èdè" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "Àwọn yàrá ìkàwé & Tẹ́ńpílétì" @@ -1531,7 +1534,7 @@ msgstr "Àwọn yàrá ìkàwé & Tẹ́ńpílétì" msgid "labels.log-or-sign" msgstr "ṣí kí o wọle tàbí kí o ṣàmì wọlé" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "Padé kí ojáde" @@ -1539,11 +1542,11 @@ msgstr "Padé kí ojáde" msgid "labels.marketing" msgstr "Títajà" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "Ẹgbẹ" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "Àwọn ọmọ Ẹgbẹ́" @@ -1551,15 +1554,15 @@ msgstr "Àwọn ọmọ Ẹgbẹ́" msgid "labels.new-password" msgstr "Ọ̀rọ̀ Ìgbaniwọlé tuntun" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "Èyí tó kàn" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "A ti gbé gbogbo yín dè! Àwọn ọ̀rọ̀ ìfitónilétí tuntun yí ó hàn níbí." -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "kò si àwọn ìfìwépè kankan nílẹ̀." @@ -1589,7 +1592,7 @@ msgstr "tàbí" msgid "labels.other" msgstr "Òmíìràn(ní pàtó)" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "Oníǹkan" @@ -1597,7 +1600,7 @@ msgstr "Oníǹkan" msgid "labels.password" msgstr "Ọ̀rọ̀ ìgbaniwọlé" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "Ńńdúró" @@ -1613,11 +1616,11 @@ msgstr "Ohun títà tàbí iṣẹ́ àgbéṣe Olùṣàkóso" msgid "labels.profile" msgstr "Pírófáìlì" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "Àwọn iṣẹ́ àgbéṣe" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "Fi àkọsílẹ̀ rẹ sílẹ̀" @@ -1631,11 +1634,11 @@ msgstr "Tún gbé fáìlì sí i" msgid "labels.remove" msgstr "Yọ ọ́ kúrò" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "Yọ ọmọ ẹgbẹ́ kúrò" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "Fún un lórúkọ mìíràn" @@ -1643,7 +1646,7 @@ msgstr "Fún un lórúkọ mìíràn" msgid "labels.rename-team" msgstr "Fún ẹgbẹ́ lórúkọ mìíràn" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "Tún fì ìwé ìpè ránńṣẹ́" @@ -1651,11 +1654,11 @@ msgstr "Tún fì ìwé ìpè ránńṣẹ́" msgid "labels.retry" msgstr "Tún gbìyànjú" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "Ojúṣe" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "Fi pamọ́" @@ -1683,7 +1686,7 @@ msgstr "A wà níbi ètò ìpèsè ìtọ́jú àwọn sísítẹ́mù wa." msgid "labels.service-unavailable.main-message" msgstr "Sáfísì kòsí" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "Àwọn ètò" @@ -1691,11 +1694,11 @@ msgstr "Àwọn ètò" msgid "labels.share-prototype" msgstr "Pín àwọn ohun tí a ti kọ tẹ́lẹ̀" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "Yàrá ìkáwe" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "Fi gbogbo kọ́mẹ́ǹtì hàn" @@ -1703,7 +1706,7 @@ msgstr "Fi gbogbo kọ́mẹ́ǹtì hàn" msgid "labels.show-comments-list" msgstr "Fi àkójọ àwọn kọ́mẹ́ǹtì hàn" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "Fi àwọn kọ́mẹ́ǹtì tìrẹ nìkan hàn" @@ -1715,7 +1718,7 @@ msgstr "Yàwòrán" msgid "labels.start" msgstr "Bẹ̀rẹ̀" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "Ipò" @@ -1723,7 +1726,7 @@ msgstr "Ipò" msgid "labels.student-teacher" msgstr "Akẹ́kọ̀ọ́ tàbí olùkọ̀ọ́" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "Ìbáṣepọ̀" @@ -1751,15 +1754,15 @@ msgstr "Ọpulóòdù kọ́sítẹ́mù fọ́ǹtì" msgid "labels.uploading" msgstr "Ń ọpulóòdù…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "Wò ó nìkan" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "Olùwo" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "àwọn ìwé ìkọ́ wẹ́bù" @@ -1767,11 +1770,11 @@ msgstr "àwọn ìwé ìkọ́ wẹ́bù" msgid "labels.write-new-comment" msgstr "Write new comment Kọ kọ́mẹ́ǹtì tuntun" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(ìwọ)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "Àkáùntì rẹ" @@ -1850,19 +1853,19 @@ msgstr "Ṣẹ̀dà tókìn" msgid "modals.create-access-token.title" msgstr "Pilẹ̀ṣẹ̀ wí wọlé tókìń" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "Ṣẹ̀dá ìkọ́- wẹ́bù" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "Ṣẹ̀dá ìkọ́-wẹ́bù" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "Péloòdù URL" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://àpẹrẹ.com/postreceive ìgbà àtẹ̀yinwá" @@ -1910,11 +1913,11 @@ msgstr "" msgid "modals.delete-comment-thread.title" msgstr "Pa ìtàkurọ̀sọ rẹ" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "Ṣe ó dá ọ lójú pé o fẹ́ pa àkọsílẹ̀ yìí rẹ́?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "Pa àkọsílẹ̀ rẹ́" @@ -1954,11 +1957,11 @@ msgstr "" "Ṣé ó dá ọ lójú pé o fẹ́ pa fẹ́ǹtì yí rẹ́? Kò ní le gbé e tí a bá lò ó nínú " "Fáìlì." -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "Ṣé ó dá ọ lójú pé o fẹ́ pa ojú ìwé yìí rẹ́?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "Pa ojú ìwé rẹ́" @@ -1974,77 +1977,77 @@ msgstr "Ṣé ó dá ọ lójú pé o fẹ́ pa iṣẹ́ àgbéṣe yìí rẹ msgid "modals.delete-project-confirm.title" msgstr "Pa iṣẹ́ àgbéṣe rẹ́" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "Pa ẹgbẹ́ rẹ́" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "" "Ṣé ó dá ọ lójú pé o fẹ́ pa ẹgbẹ́ yìí rẹ́? Ggogbo iṣẹ́ àgbéṣe àti fáìlì tí ó " "bá ní nǹkan ṣe pẹ̀lú ẹgbẹ́ ni a ó parẹ́ pátápátá." -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "Yọ ẹgbẹ́ kúrò" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "Yọ ọmọ ẹgbẹ́ kúrò" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "Ṣé ó dá ọ lójú pé o fẹ́ yọ ọmọ ẹgbẹ́ yìí kúrò nínú ẹgbẹ́?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "Yọ ọmọ ẹgbẹ́ kúrò" -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "Pa ìkọ́-wẹ́bù rẹ́" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "Ṣe ó dá ọ lójú pé o fẹ́ pa ìkọ́-wẹ́bù yìí rẹ́?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "Pa ìkọ́- wẹ́bù rẹ́" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "Ṣe àtúnṣe ìkọ́- wẹ́bù" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "Ṣe àtúnṣe ìkọ́-wẹ́bù" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "Fi ìfìwépè ránńṣẹ́" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "Ímeèlì, kí kọmá yà á sọ́tọ̀" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "" "Díẹ̀ nínú àwọn ímeèlì wá láti ọ̀dọ̀ àwọn tó jẹ́ ọmọ ẹgbẹ́ ní ìsinsìnyí. Ìwé " "ìfipé wọn a kò nífi ránńṣẹ́." -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "Pe àwọn ọmọ ẹgbẹ́ sínú ẹgbẹ́" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "" "Gẹ́gẹ́ bí o ṣe jẹ́ ìwọ nìkan ni ọmọ ẹgbẹ́ nínú ẹgbẹ́ yìí, a ó yọ ẹgbẹ́ " "kúrò pẹ̀lú iṣẹ́ àgbéṣe rẹ̀ àti àwọn fáìlì." -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "Ṣé ó dá ọ lójú pé o fẹ́ kúrò nínú %s ẹgbẹ́?" @@ -2073,51 +2076,51 @@ msgstr "Yan ọmọ ẹgbẹ́ kan tí o ó gbéga" msgid "modals.leave-and-reassign.title" msgstr "Kí o tó kúrò" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "Fi ẹgbẹ́ sílẹ̀" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "Ṣé ó dá ọ lójú pé o fẹ́ fi ẹgbẹ́ yìí sílẹ̀?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "Ń fi ẹgbẹ́ sílẹ̀" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "Fi kún iye tó jẹ́" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "Gbé ẹni tó ni nǹkan" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "" "Tí o bá gbé ẹni tí ó ni nǹkan, o ó yìí ojúṣe rẹ pada sí Alábòjútó, losing " " àwọn ìgbà láàyè díẹ̀ á wà fún ẹgbẹ́ yìí. " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "" "Ìwọ ni ẹni tí ó ni ẹgbẹ́ yìí lọ́wọ́lọ́wọ́. Are you sure you want to make Ṣé " "ó dá ọ lójú pé o fẹ́ jẹ́ %s oní nǹkan tuntun fún ẹgbẹ́?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "Ẹni tó ni ẹgbẹ́ tuntun" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "Kọ ọ́ jáde" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "Yàrá ìkàwé rẹ ṣófìfo. Ṣé ó dá ọ lójú pé o fẹ́ kọ ọ́ jáde?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "Gbé yàrá ìkàwé tó ṣófìfo jáde" @@ -2154,21 +2157,21 @@ msgstr "" msgid "modals.update-remote-component-in-bulk.message" msgstr "Mú àwọn ẹ̀yà irin iṣẹ́ dójú ìwọ̀n nínú iyàram ìkàwé pípín" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "Mú dójú ìwọ̀n" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "Fagilé e" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "" "O ṣetán látí mú àwọn ẹ̀yà irin iṣẹ́ yàrá ìkàwé dójú ìwọ̀n . This may affect " "Èyí lè fa wàhálà fún àwọn fáìlì míràn tí ó ń lò ó." -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "Mú ẹ̀yà iyàrá ìkàwé pípín kan dójú ìwọ̀n" @@ -2176,11 +2179,11 @@ msgstr "Mú ẹ̀yà iyàrá ìkàwé pípín kan dójú ìwọ̀n" msgid "notifications.by-code.upgrade-version" msgstr "Ẹ̀yà tuntun ti wà, jọ̀wọ́ tún sọ ọ́ jí" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "Ìfipè tí a fi ránńṣẹ́ ti lọ dáadáa" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "ti ṣe àdàkọ ìfipè ọ̀nà ìtọ́ka sí" @@ -2301,7 +2304,7 @@ msgstr "" "Rántí láti fi gbogbo wọn sí i. Àwọn Olùdásílẹ̀, àwọn aṣàpẹẹrẹ, alákóso... " "onírúúrú dà wọ́n pọ̀ :)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "Pè wọ́n pẹ̀lú ojúṣe wọn:" @@ -2398,565 +2401,549 @@ msgstr "Pẹ́ńpọtì" msgid "profile.recovery.go-to-login" msgstr "Lọ láti wọlé" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "Yọ kúrò" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "Dàárú" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "Ipìlẹ̀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "Ólùwò" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "Àaye ìṣẹ́" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "Titete" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "Sàtunkọ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "àbùdá" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "Akojọ ólórì aṣyn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "Yípàdá fẹ́lẹ́fẹ́lẹ́" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "Lìlọ́ kìrì" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "Lìlọ́ kìrì" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "Lìlọ́ kìrì" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "Àwọ̀n pánẹ̀lí" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "Àwọ́n ọna" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "Àwọ́n apẹ́rẹ́" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "Àwọ́n ọ́rọ̀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "Àwọ́n irínṣẹ̀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "Sun-un" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "Sun-un" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "Ọ́rọ̀íwòye" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "Fí ípàdé kùn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "Sópọ sí ísàle" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "Parapọ àárin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "Páràpọ àárin naa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "Ṣe dèédé si ìdálárè" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "Sosi ósì" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "Sosi ọtún" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "Sopo si òké" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "Tẹle àárin ni inàró" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "Ṣẹ̀dá ọ̀kọ̀ lati yìyán" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "Yipàdà to han" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "Iyàtò Boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "Boolean tà yọ̀kúro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "ikòritá Boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "Asépọ̀ Boolean" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "Fírànṣẹ́ si ẹ́hin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "Ran pàdà sí ehin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "Mù siwájù" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "Mù si wájù" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "Pa yipàdá rẹ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "Dàákọ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "Ṣẹ̀dá títún" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "Ge" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "Sun-un jàdé" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "Pàrẹ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "Pa ipàdé" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "Yà paati" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "Yìyí" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "Ẹ́lipsì" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "Fà ọnà" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "Ọnà" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "Ònìgún mèrìn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "Ọ́rọ̀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "Ṣe pidánpidán" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "Fàgílèè" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "Ókèéré apẹ̀rẹ̀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "Sun-un látì ba gbògbò rẹ̀ mú" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "Yipadà ní pẹ̀tẹ̀lẹ̀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "Yipadà ní ínàró" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "Dìn íwọ̀n fonti kù" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "Alekun iwọn fonti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "Lọ sí iyáwòran" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "Lọ si awọn ílé-Ikàwé tí a pín" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "Wàá" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "Ẹgbẹ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "Pinpín kàákírì pètèlè" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "Ífìhan / Tọju UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "Sùn-un sínú" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "Fí àwóran sii" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "Yipàdà ítalikì" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "Dàràpọ̀ awọn ipàdé" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "Din aayé lẹ́tà kù" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "Alekun aayé lẹ́tà" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "Dinkù gígà ílà" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "Ílà ton gá sókè" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "Íyìpàdà ílà to yọ̀rí" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "Ṣè ígùn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "Ṣe ìsépọ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "Ibòjú" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "Dàpọ̀ awọ́n apa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "Gbé" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "Sàré lọ́ sí isàlẹ̀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "Gbé sí osi kiákiá" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "Gbé si ọ̀tún kiákiá" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "Gbé si òké kiákiá" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "Gbé ipàdé" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "Gbé sílè" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "Gbé osi" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "Gbé sọtùn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "Gbé sóke" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "Ọ̀kọ̀ tókan" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "Kò sí awọ́n ọ̀nà abùjá ti à rii" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "Fí akomo sí ipò 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "Fi akomo si ipo 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "Fi akomo si ipo 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "Fi akomo si ipo 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "Fi akomo si ipo 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "Fi akomo si ipo 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "Fi akomo si ipo 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "Fi akomo si ipo 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "Fi akomo si ipo 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "Fi akomo si ipo 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "Ólùṣà àwọ̀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "Lọ si dasibodu" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "Lọ si apaa ayewo olùwò" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "Lọ si apaa ibaraẹnisọrọ olùwò" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " tabi " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "Lẹẹmọ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "Ọkọ ti tẹlẹ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "Tunṣe" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "tun sun" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "Wa awọn ọna abuja" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "Ṣa gbogbo re" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "Yan Obii pẹlẹbẹ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "Ifihan / Itọju ọna abùjá" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "Yaa si awon apa" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "Yaa si pikseli ilana" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "Bẹ̀rẹ̀ wíwọ̀n" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "da wíwọ̀n duro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "Se étò awòn áwòran fun fidio" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "Iyipada titete ìmúdàgba" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "Yi dukia pada" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "Yi paleti awọ pada" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "Yi ipo idojukọ pada" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "Yi kuro ni fulscrin" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "Yi awon pelebe yii pada" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "Tiipa / Siilẹ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "títìipa lápàkàn" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "Yíípàda ọrọ paleti" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "Fihan / Toju re" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "Yiipada asa sun-un" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "Yii abẹlẹ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "Yi pada" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "Tu ẹgbẹ" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "Aiboju" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "Pin ni inaro" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "Dín lẹnsì sisun kù" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "Lílọ̀soké lẹnsi sisun" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "Yiyan pelu sun-un" @@ -3004,19 +2991,19 @@ msgstr "Ọrọigbaníwólé - Penpot" msgid "title.settings.profile" msgstr "Profaili - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "Ifíwẹ́pe - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "Ọ́́mọ̀ ẹgbẹ - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "Awọn eto - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -3072,35 +3059,35 @@ msgstr "Ifihan Ibaraenisépọ̀" msgid "viewer.header.sitemap" msgstr "Áwòran átọ̀kà ílẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "Paŕàpọ̀ sí petelè aarin (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "Pin aayè ni pètélè (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "Páràpọ̀ sí òsì (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "Páràpọ̀ sí ọtun (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "Páràpọ̀ sí isàlẹ̀ (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "Páràpọ̀ sí inàro aarin (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "Pin aayè inàró (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "Párápọ̀ sóké (%s)" @@ -3109,31 +3096,31 @@ msgstr "Párápọ̀ sóké (%s)" msgid "workspace.assets.assets" msgstr "Awọ̀n dukia" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "Gbọ̀gbọ̀ awọ̀n dukia" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "Áwò" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "Awọ̀n eroja" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "Ṣẹ̀dá ẹ̀gbẹ̀ kan" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "páarẹ̀" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "ẹẹdà" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "Ṣatunkọ" @@ -3142,15 +3129,15 @@ msgstr "Ṣatunkọ" msgid "workspace.assets.graphics" msgstr "Awọn Awòran" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "Ẹgbẹ" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "Orúkọ̀ ẹgbẹ" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "Ílè-iwè agbegbe" @@ -3162,15 +3149,15 @@ msgstr "Ko si ohun-ini ti a rii" msgid "workspace.assets.open-library" msgstr "Ṣii faili ìlé-ikáwè" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "Lo oruko imiran" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "Lo oruko imiran fun ẹgbẹ" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "Wa dukia" @@ -3179,7 +3166,7 @@ msgstr "Wa dukia" msgid "workspace.assets.shared-library" msgstr "Iĺẹ̀ iwekika ti a pln" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "Iwe itẹwe" @@ -3200,7 +3187,7 @@ msgstr "Aaye leta" msgid "workspace.assets.typography.line-height" msgstr "Giga ila" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -3212,7 +3199,7 @@ msgstr "Oniru ọrọ" msgid "workspace.assets.typography.text-transform" msgstr "Iyipádà ọrọ" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "Títù ẹ̀gbẹ́" @@ -3220,7 +3207,7 @@ msgstr "Títù ẹ̀gbẹ́" msgid "workspace.focus.focus-mode" msgstr "Ipo Idojukọ" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "Pa Ídòjúkọ" @@ -3240,7 +3227,7 @@ msgstr "Itesiwaju gerege" msgid "workspace.gradients.radial" msgstr "Itesiwaju Radial" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "Pa asèkalẹ̀ iwọnbà" @@ -3249,15 +3236,15 @@ msgstr "Pa asèkalẹ̀ iwọnbà" msgid "workspace.header.menu.disable-scale-text" msgstr "Pa ọrọ iwọnba" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "Pa yipada si piseli" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "Tan imudagba to Sedede" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "Tan asèkalẹ̀ iwọnbà" @@ -3266,79 +3253,79 @@ msgstr "Tan asèkalẹ̀ iwọnbà" msgid "workspace.header.menu.enable-scale-text" msgstr "Tan iwọnbà ọrọ" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "Yipada si itọ̀nìsọna" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "Tan Yipada si piseli" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "Tọ̀jú awọ palẹti" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "Tọ̀jú pisẹli ilana" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "Tọ̀jú awọn ólòrí" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "Tọ̀jú awọn fọnti paleti" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "Satunkọ" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "Faili" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "Iranlọwọ ati alaye" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "Awọn àyánfẹ̀" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "Wiwo" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "Tun ṣe" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "Sa gbogbo rẹ" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "Fi awo paleti han" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "Fi piseli ilana han" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "Ifihan awọ̀n ólórí" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "Ifihan fonti paleti" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "Yi pada" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "Tunto" @@ -3359,11 +3346,11 @@ msgstr "Fifipámọ" msgid "workspace.header.unsaved" msgstr "Awọn ayípàdà ti kó ni fipamọ" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "Ipo wiwo(%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "sun-un" @@ -3375,7 +3362,7 @@ msgstr "Kun - óṣùwọn to kun" msgid "workspace.header.zoom-fit" msgstr "Báràmù - óṣùwọn to Báràmù" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "Suun kí o bá gbógbó rẹ̀ dọ́gbà" @@ -3383,7 +3370,7 @@ msgstr "Suun kí o bá gbógbó rẹ̀ dọ́gbà" msgid "workspace.header.zoom-full-screen" msgstr "Áseàfihan to kún" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "Ṣuum lati yan" @@ -3396,10 +3383,6 @@ msgstr "Ilànà àyípàdà" msgid "workspace.libraries.add" msgstr "Afikùn" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s awọn awọ" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "Kòyi si oniruiru awọ ni ilé-ikàwé re" @@ -3422,27 +3405,19 @@ msgstr "Awọn àwò tálò láipẹ̀" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB Ibáramù" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "Fi awọn oniru awọ pamọ" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s Ẹya ara ẹrọ" - -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "Faili ilé ikàwé" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s ayaworan" - -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "Awọn Ílè íkawè" @@ -3451,55 +3426,51 @@ msgstr "Awọn Ílè íkawè" msgid "workspace.libraries.library" msgstr "Ílè íkawè" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "Ílè íkawè ímùdojúiwọn" -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "Kò si Ilé kàwé ti a pin si ímùdojúiwọn" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "Awọn ilé kàwé tí a pìn" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "Óríṣí awọn íwè itẹ̀wé" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "Tú gbógbó lińkí awọn íwè itẹ̀wé" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s awọn íwè itẹ̀wé" - -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "ímùdojúiwọn" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "wò gbògbò awọn ayípàdà" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "Awọn ímùdojúiwọn" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "Tẹ amí + làtí fi íbàràénisépọ̀ kun" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "Baìbaì" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "Ẹ̀gdẹ́ Baìbaì" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "Asayan Baìbaì" @@ -3507,23 +3478,23 @@ msgstr "Asayan Baìbaì" msgid "workspace.options.canvas-background" msgstr "Kánfásì abẹ́le" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "Ábẹrẹ́ ákoonù" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "Apakan" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "Ádàakọ" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "Ṣatunkọ àkọ̀silẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "Ólòrí" @@ -3563,7 +3534,7 @@ msgstr "Ókè" msgid "workspace.options.constraints.topbottom" msgstr "Ókè ati Ídí" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "Ónirú" @@ -3571,7 +3542,7 @@ msgstr "Ónirú" msgid "workspace.options.export" msgstr "Sí ilẹ́ òkèeré" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "afikun ọrọ niipárí" @@ -3579,7 +3550,7 @@ msgstr "afikun ọrọ niipárí" msgid "workspace.options.exporting-complete" msgstr "Gbígbè okeere ti pari" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "Gbígbè okeere …" @@ -3587,11 +3558,11 @@ msgstr "Gbígbè okeere …" msgid "workspace.options.exporting-object-error" msgstr "Gbígbè okeere kuna" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "Kún" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "Safikun ibẹrè ṣiṣan" @@ -3600,11 +3571,11 @@ msgstr "Safikun ibẹrè ṣiṣan" msgid "workspace.options.flows.flow-start" msgstr "ibẹrè ṣiṣan" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "íbẹrè awọn ṣiṣan" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "Aifọ́wọyi" @@ -3613,7 +3584,7 @@ msgstr "Aifọ́wọyi" msgid "workspace.options.grid.grid-title" msgstr "Ilánà" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "Awọ" @@ -3622,15 +3593,15 @@ msgstr "Awọ" msgid "workspace.options.grid.params.columns" msgstr "Awọn ọwọn" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "Gota" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "Òkè" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "Àlà" @@ -3639,7 +3610,7 @@ msgstr "Àlà" msgid "workspace.options.grid.params.rows" msgstr "Àwọn orí ìlà ìbú" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "Fi sípò abínibí" @@ -3653,143 +3624,143 @@ msgstr "Ìwọ̀n" msgid "workspace.options.grid.params.type" msgstr "Irú" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "ìsàlẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "Àárín" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "Òsì" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "Ọ̀tún" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "Nà" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "Òkè" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "Lo ipò abínibí" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "Ìgbòrò" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "Àwọn orị ìlà ìbú" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "Alápoméjì" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "Ẹ̀kún ẹgbẹ́" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "Ẹgba ẹgbẹ́" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "Gíga" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "Ṣàyẹ̀wò" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "Ìgbésẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "Lẹ́yìn ìdádúro" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "Àwòrán abẹ̀mí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "Túká" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "Kòsí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "Tì" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "Aṣàfihàn" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "Ọkọ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "Fi àyíká ìtẹ̀lẹ̀ ìlànà síi" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "Páadé tí o bá n tẹ ìta" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "Pa ìlànà ìtẹ̀lẹ̀ dé" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "Pa ìlànà ìtẹ̀lẹ̀ dé: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "Ìdádúró" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "Èbúté" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "Ịgbà" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "Rírokùn" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "Ìrọ̀rùn" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "Rọra wọlé" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "Rọra wọlé jáde" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "Rọra jáde" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "Ilà" @@ -3798,47 +3769,47 @@ msgstr "Ilà" msgid "workspace.options.interaction-in" msgstr "Inú" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "Atọ́ka ìwọnú" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "Atọ́ka kíkúrò" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "Lílọ kiri sí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "Lílo kiri sí: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(Akò ṣètò)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "Ipa àìṣedédé" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "Tẹ orí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "Ṣíìtẹ̀lé ìlànà" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "Ṣí ìtẹ̀lé ìlànà: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "Ṣí URL" @@ -3847,147 +3818,147 @@ msgstr "Ṣí URL" msgid "workspace.options.interaction-out" msgstr "Jáde" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "Àáriń ìsàlẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "Ìsàlẹ̀ òsì" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "Ìsàḷ̀ẹ̀ ọ̀tún" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "Àárín" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "Aláfọwóṣe" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "Àárín òkè" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "Òkè òsì" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "Òkè ọ̀tún" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "Ipò" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "Ṣe ìtọ́jú ipò àyílọ" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "Aṣàfihàn àtẹ̀yìnwá" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "Ìbátan sí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "Tìkara" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "Àyípadà ìtẹ̀lé ìlànà" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "Àyípadà ìtẹ̀lé ìlànà: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "Okùnfà" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "Nígbàtí óhún rábàbà" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "Nígbàtị óhún tẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "Àwọn ìbáraẹniṣepọ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "Àwọ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "Ṣẹ̀dà àwọ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "Òpó àwọ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "Ṣókuǹkùn" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "Ìyàtọ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "Ìyàsọ́tọ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "Iná líle" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "Ọdà" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "Fẹ́ẹ́rẹ́fẹ́" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "Ìmọ́lẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "Ìsọdipúpọ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "Déédé" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "Ìtẹ̀lẹ́ ìlànà" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "Ẹ̀kúnrẹ́rẹ́" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "Aṣàfihàn" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "Ìmọ́lẹ̀ rokoṣo" @@ -4011,19 +3982,19 @@ msgstr "Egbẹ́ ààyò" msgid "workspace.options.layout-item.advanced-ops" msgstr "Ànàálè ìtẹ̀síwájú" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "Ibi tó ga jùlọ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Ìgbòrò tó ga jù" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Gíga to kéré jù lọ" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Ìgbòrò tó kéré jù lọ" @@ -4137,15 +4108,15 @@ msgstr "Àyè àárín" msgid "workspace.options.layout.top" msgstr "Òkè" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "Àwọn àwọ̀ púpọ̀ sí i" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "Àwọn yàrá àwọ̀ púpọ̀ sí I" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "Àìríran" @@ -4154,27 +4125,27 @@ msgstr "Àìríran" msgid "workspace.options.position" msgstr "Ipò" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "Ìtẹ̀lé ìlànà" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "Ìdáméjì òbìrìkìtiì" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "Apá òsì ìsàlẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "Apá ọ̀tún ìsàle" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "Òkè òsì" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "Òkè ọ̀tún" @@ -4186,7 +4157,7 @@ msgstr "Àìpẹ́" msgid "workspace.options.retry" msgstr "Tún gbìyànjú" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "Yíyípo" @@ -4194,29 +4165,29 @@ msgstr "Yíyípo" msgid "workspace.options.search-font" msgstr "Àdàkọ ìwádìí" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "" "Yan ìrísi ,pátákó tàbí ẹgbẹ́ láti fa ìsopọ̀ mọ́ pátákó " "òmíràn." -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "Àwọn àwọ̀ tí a ti yàn" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "Ìmúṣẹ tí a yàn" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "Ipò ìlù tí a yàn" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "Rẹ́súrẹ́sú" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "Àwọ̀ òjíjí" @@ -4228,47 +4199,48 @@ msgstr "Da òjìjí" msgid "workspace.options.shadow-options.inner-shadow" msgstr "Òjìjí inú" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "Tànkálẹ̀" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "Òjìjí" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "Àwùjọ òjìjí" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "Òjìjí tí a yàn" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "Fihàn nínụ àgbéjáde" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "Fihàn nínú ipò wíwò" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "Ìwọ̀n" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "Àwọn àtòjọ" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "Ipò ìlà" @@ -4277,7 +4249,7 @@ msgstr "Ipò ìlà" msgid "workspace.options.stroke-cap.circle-marker" msgstr "Àmì yíyíká" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "Yíyíká" @@ -4286,7 +4258,7 @@ msgstr "Yíyíká" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "Àmì dáyámọ́ǹdì" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "Dáyámọ́ǹdì" @@ -4295,19 +4267,19 @@ msgstr "Dáyámọ́ǹdì" msgid "workspace.options.stroke-cap.line-arrow" msgstr "Ọfà ìlà" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "Ofà" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "Kòsí" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "Yíká" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "Alápoméjì" @@ -4316,7 +4288,7 @@ msgstr "Alápoméjì" msgid "workspace.options.stroke-cap.square-marker" msgstr "Àmì alápoméjì" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "Onígun mẹ́rin" @@ -4325,75 +4297,75 @@ msgstr "Onígun mẹ́rin" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "Ofà onígun mẹ́ta" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "Onígun mẹ́ta" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "Àwọ ìlà" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "Ìgbòrò ìlà" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "Àárín" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "Tó ní ìlà-ìlà" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "àmì tó tó tó" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "Nínú" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "Tí a ti dàpọ̀" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "Ìta" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "Ṣinsin" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "Mú dọ́gba abẹ́" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "Mú dọgba àárín" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "Mú dọ́gba òkè" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "LTR" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "RTL" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "Gíga aládàáṣiṣẹ́" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "Gbígbòòrò aládáàṣiṣé" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "Tí kò yíyadà" @@ -4415,35 +4387,35 @@ msgstr "Lẹ́tà kékeré" msgid "workspace.options.text-options.none" msgstr "Kòsí" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "Ìfọwọ́bàyíká (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "Mú dọ́gba àárín" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "Ìdálàre" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "Mú dọ́gba òsì" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "Mú dọ́gba ọ̀tún" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "Àyọkà" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "Àwùjọ àyọkà" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "Àṣàyàn ọ̀rọ̀" @@ -4452,7 +4424,7 @@ msgstr "Àṣàyàn ọ̀rọ̀" msgid "workspace.options.text-options.titlecase" msgstr "ipò ọ̀rọ̀ àkórí" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "Fífàlà (%s)" @@ -4461,21 +4433,21 @@ msgstr "Fífàlà (%s)" msgid "workspace.options.text-options.uppercase" msgstr "Lẹ́tà ńlá" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "" "Lo bọ́tìnì ìṣe tó wà lóori àkọsórí náà láti ṣakóso ìwò " "àkàwé." -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "Ìgbòrò" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "Ipò X" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Ipò Y" @@ -4539,7 +4511,7 @@ msgstr "dá padà sọ́wọ èyiǹ" msgid "workspace.shape.menu.copy" msgstr "Ṣẹ̀dà" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "Ṣèda àlàyé" @@ -4547,11 +4519,11 @@ msgstr "Ṣèda àlàyé" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "Yíyàn sí pátákó" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "Ṣẹ́dá àkóónú" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "Ṣẹ̀dá ọ̀pọ̀lọpọ̀ àkóónú" @@ -4559,7 +4531,7 @@ msgstr "Ṣẹ̀dá ọ̀pọ̀lọpọ̀ àkóónú" msgid "workspace.shape.menu.cut" msgstr "Gé" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "Parẹ́" @@ -4567,15 +4539,15 @@ msgstr "Parẹ́" msgid "workspace.shape.menu.delete-flow-start" msgstr "Pa ìbẹ̀ẹ̀rè ìsàn rẹ́" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "ṣẹ́ àpẹ̣ẹre yọ nípò" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "Ṣẹ́ àwọn àpẹẹrẹ yọ nípò" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "Ìyàtọ̀" @@ -4587,11 +4559,11 @@ msgstr "Sẹ ẹ̀dà" msgid "workspace.shape.menu.edit" msgstr "Sàtúnṣe" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "Ṣà yọ sílè" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "Tẹ́ pẹrẹsẹ" @@ -4624,19 +4596,19 @@ msgstr "Lọ sí olórí fáìlì àkóónú" msgid "workspace.shape.menu.group" msgstr "Àwùjọ" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "Tọ́jú" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "Fihàn/ Tọ́jú UI" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "Ìkòríta" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "Tì" @@ -4644,7 +4616,7 @@ msgstr "Tì" msgid "workspace.shape.menu.mask" msgstr "Ìbòjú" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "lẹ̀mọ́" @@ -4656,11 +4628,11 @@ msgstr "Ipa ọ̀nà" msgid "workspace.shape.menu.remove-flex" msgstr "Yọ àrọ ètò ìrísí kúrò" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "Ṣe àtúnṣe ìdojúkọ" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "Dạ àkóónú pàtàkì sí pò" @@ -4668,15 +4640,15 @@ msgstr "Dạ àkóónú pàtàkì sí pò" msgid "workspace.shape.menu.select-layer" msgstr "Yan ìpele" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "Ṣà fihàn" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "Ṣafihàn nínú atọ́ka àwọn ìgbìmọ̀ ìní" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "Ṣà fihàn àkóónú pàtàkì" @@ -4689,6 +4661,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "Fi sípò àwòrań aláṣojú" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "Yípadà sí pópó ọ̀nà" @@ -4696,11 +4669,11 @@ msgstr "Yípadà sí pópó ọ̀nà" msgid "workspace.shape.menu.ungroup" msgstr "Ṣe àìkójọ" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "Ìbáṣepò" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "Ṣíí" @@ -4721,11 +4694,11 @@ msgstr "Wó òpó ègbẹ́" msgid "workspace.sidebar.expand" msgstr "Fẹ òpó ẹ̀gbẹ́" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "Ìtàn" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "Àwọn ìpele" @@ -4765,7 +4738,7 @@ msgstr "Àwọn àyọkà" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "Gbígbé àwọn ànímọ́ SVG wọlé wá" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "Àwọn abala" @@ -4773,7 +4746,7 @@ msgstr "Àwọn abala" msgid "workspace.sitemap" msgstr "Máàpù ojú ìlà" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "Àwọn ohun ìní" @@ -4781,7 +4754,7 @@ msgstr "Àwọn ohun ìní" msgid "workspace.toolbar.color-palette" msgstr "Pálètì àwọ̀ (%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "Àwọn ìdáásí (%s)" @@ -4971,19 +4944,19 @@ msgstr "Iṣẹ́ parí %s" msgid "workspace.undo.title" msgstr "Ìtàn" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "Ta nù" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "Àlàyé síi" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "Àwọn imúdójúìwọ̀n wà nínú àwọn yàrá ìkàwẹ tí a pín" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "Ìmúdójúìwọ̀n" diff --git a/frontend/translations/zh_CN.po b/frontend/translations/zh_CN.po index 7f50e477ae..42982d55b3 100644 --- a/frontend/translations/zh_CN.po +++ b/frontend/translations/zh_CN.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-28 10:46+0000\n" -"Last-Translator: Jun Fang \n" -"Language-Team: Chinese (Simplified Han script) " -"\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" +"Last-Translator: Anonymous \n" +"Language-Team: Chinese (Simplified Han script) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 5.13\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -168,7 +168,7 @@ msgstr "设计与原型的开源解决方案。" msgid "auth.terms-and-privacy-agreement" msgstr "我同意 [服务条款](%s) 与 [隐私政策](%s)。" -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "服务协议" @@ -193,7 +193,7 @@ msgstr "品牌设计、插图、营销物料等。" msgid "comments.mentions.not-found" msgstr "未找到 @%s 相关人员" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "发布" @@ -263,7 +263,7 @@ msgstr "分享原型" msgid "common.share-link.view-all" msgstr "选择所有" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "未发布" @@ -381,7 +381,7 @@ msgstr "令牌无到期时限" msgid "dashboard.add-file" msgstr "新增文件" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "新增为共享库" @@ -389,31 +389,31 @@ msgstr "新增为共享库" msgid "dashboard.change-email" msgstr "修改电子邮件" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(复制)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "创建新团队" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "固定此版本" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "你的Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "删除团队" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "下载Penpot文件 (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "下载标准文件(.svg + .json)" @@ -441,6 +441,20 @@ msgstr "项目成员创建文件后,它将显示在这里。" msgid "dashboard.empty-placeholder-files-title" msgstr "还没有文件。" +#: src/app/main/ui/dashboard/placeholder.cljs:118 +#, markdown +msgid "dashboard.empty-placeholder-libraries" +msgstr "" +"添加至项目的库将显示在这里。您可以尝试共享您的文件,或从我们的[库和模板](https://penpot.app/libraries-" +"templates)添加。" + +#: src/app/main/ui/dashboard/placeholder.cljs +#, markdown, unused +msgid "dashboard.empty-placeholder-libraries-subtitle" +msgstr "" +"添加至项目的库将显示在这里。您可以尝试共享您的文件,或从我们的[库和模板](https://penpot.app/libraries-" +"templates)添加。" + #: src/app/main/ui/dashboard/placeholder.cljs:114 msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role" msgstr "添加至项目中的库将显示在这里。" @@ -481,7 +495,7 @@ msgstr "开始构建令人惊奇的材料" msgid "dashboard.export-binary-multi" msgstr "下载 %s Penpot文件 (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "将画板导出为 PDF 格式" @@ -497,7 +511,7 @@ msgstr "导出 %s 个文件" msgid "dashboard.export-multiple.selected" msgstr "已选择 %s / %s 元素" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "导出" @@ -647,6 +661,12 @@ msgstr "下面的文件有错误:" msgid "dashboard.import.import-error.message2" msgstr "有错误的文件将不会被上传。" +#: src/app/main/ui/dashboard/import.cljs:479 +msgid "dashboard.import.import-message" +msgid_plural "dashboard.import.import-message" +msgstr[0] "1个文件导入成功。" +msgstr[1] "%s 个文件导入成功。" + #: src/app/main/ui/dashboard/import.cljs:474 msgid "dashboard.import.import-warning" msgstr "一些包含无效对象的文档已被移除。" @@ -683,11 +703,11 @@ msgstr "数据上传中" msgid "dashboard.import.progress.upload-media" msgstr "文件上传中" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "邀请people" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "退出团队" @@ -695,7 +715,7 @@ msgstr "退出团队" msgid "dashboard.libraries-and-templates" msgstr "库和模板" -#: src/app/main/ui/dashboard/templates.cljs:259 +#: src/app/main/ui/dashboard/templates.cljs:267 msgid "dashboard.libraries-and-templates.description" msgstr "这里你有一些可以添加至你项目的库和模版" @@ -703,7 +723,7 @@ msgstr "这里你有一些可以添加至你项目的库和模版" msgid "dashboard.libraries-and-templates.explore" msgstr "探索更多内容,了解如何做出贡献" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "导入模板时发生错误。模板未导入成功。" @@ -739,7 +759,7 @@ msgstr "移动到其他团队" msgid "dashboard.new-file" msgstr "+ 新文档" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "新建文件" @@ -747,7 +767,7 @@ msgstr "新建文件" msgid "dashboard.new-project" msgstr "+ 新项目" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "新建项目" @@ -755,11 +775,11 @@ msgstr "新建项目" msgid "dashboard.no-matches-for" msgstr "没有找到“%s”的匹配项" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "被钉住的项目会显示在这儿" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "通知" @@ -771,7 +791,7 @@ msgstr "已经成功更新你的电子邮件" msgid "dashboard.notifications.email-verified-successfully" msgstr "已经成功验证你的电子邮件" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "通知设置已更新" @@ -779,11 +799,11 @@ msgstr "通知设置已更新" msgid "dashboard.notifications.password-saved" msgstr "已经成功保存密码!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "查看通知" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "成员%s人" @@ -815,7 +835,7 @@ msgstr "你现在是此团队的拥有者。" msgid "dashboard.permissions-change.viewer" msgstr "你现在是此团队的查看人员。" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "钉到侧边栏/取消钉住" @@ -852,7 +872,7 @@ msgstr "你现在不再是此团队“%s”的成员。" msgid "dashboard.save-settings" msgstr "保存设置" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "搜索…" @@ -944,7 +964,7 @@ msgstr "通知" msgid "dashboard.show-all-files" msgstr "显示全部文档" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "版本历史" @@ -968,7 +988,7 @@ msgstr[1] "您的多个文件已被成功复制" msgid "dashboard.success-duplicate-project" msgstr "成功创建了项目副本" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "成功移动了文件" @@ -980,15 +1000,15 @@ msgstr "成功移动了文件" msgid "dashboard.success-move-project" msgstr "成功移动了项目" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "团队信息" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "团队成员" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "团队项目" @@ -1008,7 +1028,7 @@ msgstr "搜索结果" msgid "dashboard.type-something" msgstr "输入关键词进行搜索" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "取消发布库" @@ -1016,47 +1036,47 @@ msgstr "取消发布库" msgid "dashboard.update-settings" msgstr "保存设置" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "无创作能力限制" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot 免费" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "处于活跃状态" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "当这个webhook被触发时,事件细节将被传递" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "您只能删除或修改由您创建的 webhooks。" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "内容类型" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "创建webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "Webhook创建成功。" -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "Webhooks是一种简单的方式,允许其他网站和应用程序在Penpot的某些事件发生时得到通知。我们将发送一个POST请求到你提供的每个URL。" -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "按“添加webhook”按钮添加一个。" -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "到目前为止还没有创建webhook。" @@ -1076,7 +1096,7 @@ msgstr "电子邮件" msgid "dashboard.your-name" msgstr "你的姓名" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "你的Penpot" @@ -1092,15 +1112,15 @@ msgstr "注意" msgid "ds.component-subtitle" msgstr "待更新的组件:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "允许" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "取消" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "OK" @@ -1108,6 +1128,26 @@ msgstr "OK" msgid "ds.confirm-title" msgstr "你确定?" +#: src/app/main/ui/ds/controls/numeric_input.cljs:98 +msgid "ds.inputs.numeric-input.no-applicable-tokens" +msgstr "活动集合或主题中无可用token。" + +#: src/app/main/ui/ds/controls/numeric_input.cljs:99 +msgid "ds.inputs.numeric-input.no-matches" +msgstr "无匹配项。" + +#: src/app/main/ui/ds/controls/numeric_input.cljs:641, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:138 +msgid "ds.inputs.numeric-input.open-token-list-dropdown" +msgstr "打开token列表" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:85, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:133 +msgid "ds.inputs.token-field.detach-token" +msgstr "分离token" + +#: src/app/main/ui/ds/controls/utilities/token_field.cljs:40, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:96, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:103 +msgid "ds.inputs.token-field.no-active-token-option" +msgstr "该token于任意活动集合或主题皆不可用。" + #: src/app/main/data/auth.cljs:314 msgid "errors.auth-provider-not-allowed" msgstr "认证提供者不允许访问此个人设定" @@ -1144,6 +1184,10 @@ msgstr "你的浏览器不支持该操作" msgid "errors.comment-error" msgstr "评论有错误" +#: src/app/main/errors.cljs:300 +msgid "errors.deprecated" +msgstr "抱歉!这是一个使用了已弃用的 Penpot 资源类型的旧文件,您无法打开它。" + #: src/app/main/errors.cljs:303 msgid "errors.deprecated.contact.after" msgstr "所以我们可以帮助你。" @@ -1156,7 +1200,7 @@ msgstr "虽然Penpot不再支持此类型的资源,但您可以" msgid "errors.deprecated.contact.text" msgstr "联系我们" -#: src/app/main/data/workspace/tokens/library_edit.cljs:266 +#: src/app/main/data/workspace/tokens/library_edit.cljs:274 msgid "errors.drop-token-set-parent-to-child" msgstr "无法将父集放置到自己的子路径中。" @@ -1180,11 +1224,11 @@ msgstr "邮件和此邀请不匹配。" msgid "errors.email-domain-not-allowed" msgstr "不允许使用此域名" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "电子邮件“%s”收到了非常多的永久退信报告。" -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "此邮箱[%s]已被标记为垃圾邮件或已被永久拉黑。" @@ -1196,11 +1240,6 @@ msgstr "看起来你正在打开一个启用了'%s'功能的文件,但当前pe msgid "errors.feature-not-supported" msgstr "不支持功能“%s”。" -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "最多可包含1个字符。" - #, unused msgid "errors.field-min-length" msgstr "至少需要包含1个字符。" @@ -1218,7 +1257,7 @@ msgstr "名称必须包含除空格外的其他字符。" msgid "errors.file-feature-mismatch" msgstr "看起来当前启用的功能,与正在打开的文件所依赖的功能不匹配。在打开文件前,需要应用对“%s”修改。" -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "发生了某种错误。" @@ -1268,10 +1307,14 @@ msgstr "此邀请可能已取消或已过期。" msgid "errors.ldap-disabled" msgstr "LDAP身份验证已禁用。" -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "您已达到“%s”报价。与支持人员联系。" +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 +msgid "errors.maximum-invitations-by-request-reached" +msgstr "已达到单次请求中可邀请的电子邮件数量上限(%s)" + #: src/app/main/data/workspace/media.cljs:190 msgid "errors.media-too-large" msgstr "图片尺寸过大,故无法插入。" @@ -1284,7 +1327,7 @@ msgstr "图片内容好像与文档扩展名不匹配。" msgid "errors.media-type-not-allowed" msgstr "该图片好像不可用。" -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "你邀请的人设置了邮件免打扰(报告垃圾邮件或者多次退信)。" @@ -1318,7 +1361,7 @@ msgstr "剪切板中为无效数据" msgid "errors.profile-blocked" msgstr "个人资料已被屏蔽" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "你设置了邮件免打扰(报告垃圾邮件或者多次退信)。" @@ -1334,19 +1377,19 @@ msgstr "SVG无效或格式错误" msgid "errors.team-feature-mismatch" msgstr "检测到不兼容功能“%s”" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "离开团队后成员不足,您可能要将其删除。" -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "您尝试分配的成员不存在。" -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "所有者不能离开团队,您必须转让所有者角色。" -#: src/app/main/data/workspace/tokens/library_edit.cljs:153, src/app/main/data/workspace/tokens/library_edit.cljs:183 +#: src/app/main/data/workspace/tokens/library_edit.cljs:150, src/app/main/data/workspace/tokens/library_edit.cljs:180 msgid "errors.token-set-already-exists" msgstr "同名的集已经存在" @@ -1355,11 +1398,11 @@ msgstr "同名的集已经存在" msgid "errors.token-set-doesnt-exists" msgstr "不能复制一个未知的集" -#: src/app/main/data/workspace/tokens/library_edit.cljs:265 +#: src/app/main/data/workspace/tokens/library_edit.cljs:273 msgid "errors.token-set-exists-on-drop" msgstr "无法完成删除,同名集合已存在于路径中。" -#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:99 +#: src/app/main/data/workspace/tokens/library_edit.cljs:77, src/app/main/data/workspace/tokens/library_edit.cljs:95 msgid "errors.token-theme-already-exists" msgstr "同名的主题选项已经存在" @@ -1387,31 +1430,31 @@ msgstr "此版本被锁定,不能被其他人删除" msgid "errors.version-not-supported" msgstr "文件具有不兼容的版本号" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "连接错误,无法访问 URL" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "网址未通过验证。" -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "上次交付不成功。" -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "SSL 验证时出错。" -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "超时" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "验证时出现意外错误" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "意外状态%s" @@ -1471,7 +1514,7 @@ msgstr "发生了一个错误" msgid "inspect.attributes.blur" msgstr "模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "值" @@ -1479,15 +1522,15 @@ msgstr "值" msgid "inspect.attributes.color" msgstr "颜色" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1495,7 +1538,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "填充" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "下载原图" @@ -1589,35 +1632,37 @@ msgstr "实线" msgid "inspect.attributes.stroke.width" msgstr "宽" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "排版" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "字体" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "字号" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "文字风格" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "字体粗细" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "字距" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "行高" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "文字装饰" @@ -1625,35 +1670,36 @@ msgstr "文字装饰" msgid "inspect.attributes.typography.text-decoration.line-through" msgstr "删除线" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "无" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "下划线" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "文本变换" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "首字母大写" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "小写" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "无" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "取消设置" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "大写" @@ -1665,15 +1711,15 @@ msgstr "变体属性" msgid "inspect.attributes.variants" msgstr "变体属性" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "如果您想了解有关设计检查的更多信息,请访问Penpot的帮助中心" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "有关检查的详细信息" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "选择形状、板或组以检查其属性和代码" @@ -1737,15 +1783,23 @@ msgstr "SVG" msgid "inspect.tabs.code.selected.text" msgstr "文本" +#: src/app/main/ui/inspect/right_sidebar.cljs:109 +msgid "inspect.tabs.computed" +msgstr "计算" + #: src/app/main/ui/inspect/right_sidebar.cljs:114 msgid "inspect.tabs.info" msgstr "信息" -#: src/app/main/ui/dashboard/comments.cljs:95 +#: src/app/main/ui/inspect/right_sidebar.cljs:165 +msgid "inspect.tabs.switcher.label" +msgstr "图层信息" + +#: src/app/main/ui/dashboard/comments.cljs:96 msgid "label.mark-all-as-read" msgstr "标记全部为已读" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "快捷方式" @@ -1757,11 +1811,11 @@ msgstr "接受" msgid "labels.access-tokens" msgstr "访问令牌" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "激活" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "新增" @@ -1769,11 +1823,11 @@ msgstr "新增" msgid "labels.add-custom-font" msgstr "添加自定义字体" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "新增..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "管理员" @@ -1781,7 +1835,7 @@ msgstr "管理员" msgid "labels.adobe-xd" msgstr "Adobe XD" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "全部" @@ -1802,7 +1856,7 @@ msgstr "请过会儿再来试试,我们正在对服务器进行一些简单维 msgid "labels.bad-gateway.main-message" msgstr "网关错误" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "取消" @@ -1810,11 +1864,11 @@ msgstr "取消" msgid "labels.canva" msgstr "Canva" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "关闭" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "折叠" @@ -1826,11 +1880,11 @@ msgstr "评论" msgid "labels.comment.mark-as-solved" msgstr "标记为已解决" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "评论" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "社区" @@ -1838,7 +1892,7 @@ msgstr "社区" msgid "labels.confirm-password" msgstr "确认密码" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "继续" @@ -1854,11 +1908,11 @@ msgstr "你可以使用Penpot帐号继续" msgid "labels.copy" msgstr "复制" -#: src/app/main/ui/inspect/attributes/common.cljs:118 +#: src/app/main/ui/inspect/attributes/common.cljs:99 msgid "labels.copy-color" msgstr "复制颜色" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "复制链接" @@ -1866,7 +1920,7 @@ msgstr "复制链接" msgid "labels.copyright" msgstr "Kaleidos @2024" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "创建" @@ -1886,7 +1940,7 @@ msgstr "自定义字体" msgid "labels.dashboard" msgstr "面板" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "删除" @@ -1898,7 +1952,7 @@ msgstr "删除该评论" msgid "labels.delete-comment-thread" msgstr "删除该讨论串" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "删除邀请" @@ -1915,19 +1969,19 @@ msgstr "开发者" msgid "labels.director" msgstr "主管" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "丢弃" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "草稿" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:65 msgid "labels.duplicate" msgstr "复制" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "编辑" @@ -1935,11 +1989,11 @@ msgstr "编辑" msgid "labels.edit-file" msgstr "编辑文档" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "编辑者" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:302 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:301 msgid "labels.empty" msgstr "空" @@ -1952,11 +2006,11 @@ msgstr "错误" msgid "labels.event" msgstr "事件" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "已到期" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "导出" @@ -1984,7 +2038,7 @@ msgstr "字体提供者" msgid "labels.font-variants" msgstr "样式" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "字体" @@ -1998,11 +2052,11 @@ msgstr "创始人/副总裁" msgid "labels.freelancer" msgstr "我是一名自由职业者" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Github仓库" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "提交反馈" @@ -2014,7 +2068,7 @@ msgstr "返回" msgid "labels.graphic-design" msgstr "平面设计" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "帮助中心" @@ -2022,15 +2076,15 @@ msgstr "帮助中心" msgid "labels.hide" msgstr "隐藏" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "隐藏已决定的评论" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "导入" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "未激活" @@ -2050,7 +2104,7 @@ msgstr "内部错误" msgid "labels.invision" msgstr "InVision" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "邀请" @@ -2058,7 +2112,7 @@ msgstr "邀请" msgid "labels.language" msgstr "语言" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "库&模板" @@ -2078,7 +2132,7 @@ msgstr "登录或注册" msgid "labels.login" msgstr "登录" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "登出" @@ -2086,11 +2140,11 @@ msgstr "登出" msgid "labels.marketing" msgstr "市场营销" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "成员" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "成员" @@ -2098,23 +2152,27 @@ msgstr "成员" msgid "labels.mention" msgstr "提及" +#: src/app/main/ui/ds/controls/numeric_input.cljs:619 +msgid "labels.mixed-values" +msgstr "混合" + #: src/app/main/ui/settings/password.cljs:84 msgid "labels.new-password" msgstr "新密码" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "下一项" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "你们都赶上了! 新的评论通知将出现在这里。" -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "没有待处理的邀请。" -#: src/app/main/ui/dashboard/team.cljs:761 +#: src/app/main/ui/dashboard/team.cljs:739 msgid "labels.no-invitations-gather-people" msgstr "召集你的人,一起建设伟大的事业。" @@ -2131,7 +2189,7 @@ msgstr "哎呀!" msgid "labels.notifications" msgstr "通知" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "共1个文档" @@ -2143,7 +2201,7 @@ msgid_plural "labels.num-of-frames" msgstr[0] "1个画板" msgstr[1] "%s个画板" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "1 个项目" @@ -2162,7 +2220,7 @@ msgstr "旧密码" msgid "labels.only-yours" msgstr "仅你的" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "选项" @@ -2178,7 +2236,7 @@ msgstr "其他(请注明)" msgid "labels.other-short" msgstr "其他" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "所有者" @@ -2186,11 +2244,11 @@ msgstr "所有者" msgid "labels.password" msgstr "密码" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "待办" -#: src/app/main/ui/dashboard/sidebar.cljs:750 +#: src/app/main/ui/dashboard/sidebar.cljs:751 msgid "labels.pinned-projects" msgstr "固定项目" @@ -2214,7 +2272,7 @@ msgstr "产品经理/项目经理" msgid "labels.profile" msgstr "个人资料" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "项目" @@ -2222,7 +2280,7 @@ msgstr "项目" msgid "labels.refresh" msgstr "刷新" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "发布说明" @@ -2236,11 +2294,11 @@ msgstr "重新加载文件" msgid "labels.remove" msgstr "移除" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "删除成员" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "重命名" @@ -2268,7 +2326,7 @@ msgstr "新回复" msgid "labels.reply.thread" msgstr "回复" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "重新发送邀请" @@ -2280,15 +2338,15 @@ msgstr "还原" msgid "labels.retry" msgstr "重试" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "角色" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "保存" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "搜索" @@ -2316,11 +2374,11 @@ msgstr "我们正在进行系统的程序维护。" msgid "labels.service-unavailable.main-message" msgstr "服务不可用" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "集" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "设置" @@ -2332,7 +2390,7 @@ msgstr "分享" msgid "labels.share-prototype" msgstr "分享原型" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "共享库" @@ -2340,7 +2398,7 @@ msgstr "共享库" msgid "labels.show" msgstr "显示" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "显示所有评论" @@ -2348,11 +2406,11 @@ msgstr "显示所有评论" msgid "labels.show-comments-list" msgstr "显示评论列表" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "只显示您的提及" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "只显示你的评论" @@ -2360,7 +2418,7 @@ msgstr "只显示你的评论" msgid "labels.sketch" msgstr "Sketch" -#: src/app/main/ui/dashboard/sidebar.cljs:729 +#: src/app/main/ui/dashboard/sidebar.cljs:730 msgid "labels.sources" msgstr "源" @@ -2368,7 +2426,7 @@ msgstr "源" msgid "labels.start" msgstr "开始" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "状态" @@ -2390,11 +2448,11 @@ msgstr "团队成员" msgid "labels.themes" msgstr "主题" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "教程" -#: src/app/main/data/workspace/tokens/errors.cljs:93 +#: src/app/main/data/workspace/tokens/errors.cljs:101 msgid "labels.unknown-error" msgstr "未知错误" @@ -2426,15 +2484,15 @@ msgstr "上传自定义字体" msgid "labels.uploading" msgstr "正在上传…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "仅查看" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "查看者" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhooks" @@ -2442,11 +2500,11 @@ msgstr "Webhooks" msgid "labels.write-new-comment" msgstr "写一条新评论" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(你)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "你的账户" @@ -2487,18 +2545,34 @@ msgstr "从您的设计中直接获取 CSS 和 SVG。" msgid "loader.tips.04.title" msgstr "导出为代码" +#: src/app/main/ui/ds/product/loader.cljs:29 +msgid "loader.tips.05.message" +msgstr "共享资产和风格以保持一致性。" + #: src/app/main/ui/ds/product/loader.cljs:28 msgid "loader.tips.05.title" msgstr "设计库" +#: src/app/main/ui/ds/product/loader.cljs:31 +msgid "loader.tips.06.message" +msgstr "通过动画和过渡让您的想法变为现实。" + #: src/app/main/ui/ds/product/loader.cljs:30 msgid "loader.tips.06.title" msgstr "交互式原型" +#: src/app/main/ui/ds/product/loader.cljs:33 +msgid "loader.tips.07.message" +msgstr "Penpot 使用 SVG 和 CSS 进行无缝开发。" + #: src/app/main/ui/ds/product/loader.cljs:32 msgid "loader.tips.07.title" msgstr "Web 标准格式" +#: src/app/main/ui/ds/product/loader.cljs:35 +msgid "loader.tips.08.message" +msgstr "使用便捷的快捷键(例如 Shift + A 用于自动布局)来加快您的工作流程。" + #: src/app/main/ui/ds/product/loader.cljs:34 msgid "loader.tips.08.title" msgstr "键盘快捷键" @@ -2511,27 +2585,31 @@ msgstr "选择适合您风格的主题。" msgid "loader.tips.09.title" msgstr "暗黑和浅色模式" +#: src/app/main/ui/ds/product/loader.cljs:39 +msgid "loader.tips.10.message" +msgstr "使用社区构建的插件扩展 Penpot 以获得额外的功能。" + #: src/app/main/ui/ds/product/loader.cljs:38 msgid "loader.tips.10.title" msgstr "插件支持" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "选择图片" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "渐变" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "图片" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "img" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "保持宽高比" @@ -2549,7 +2627,7 @@ msgstr "正在加载图片…" msgid "media.radial" msgstr "径向" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "纯色" @@ -2617,19 +2695,19 @@ msgstr "创建令牌" msgid "modals.create-access-token.title" msgstr "生成访问令牌" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "创建webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "创建webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "有效负载网址" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2673,11 +2751,11 @@ msgstr "你确定想要删除这个对话?该讨论串里的所有评论都会 msgid "modals.delete-comment-thread.title" msgstr "删除对话" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "你确定想要删除这个注释?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "删除注释" @@ -2721,11 +2799,11 @@ msgstr "你确定要删除这个字体吗?如果它被用在某个文件里的 msgid "modals.delete-font.title" msgstr "正在删除字体" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "你确定想要删除这个页面?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "删除页面" @@ -2771,27 +2849,27 @@ msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "删除文件" msgstr[1] "批量删除文件" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "删除团队" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "你确定想要删除这个团队?与该团队关联的所有项目和文档都会被永久删除。" -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "正在删除团队" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "删除成员" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "你确定想要从团队中删除这个成员?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "删除团队成员" @@ -2801,47 +2879,51 @@ msgid_plural "modals.delete-unpublish-shared-confirm.activated.hint" msgstr[0] "这个文件中被其他文件引用的素材依然在那(其他文件的现有设计不会被破坏)。" msgstr[1] "这些文件中被其他文件引用的素材依然在那(其他文件的现有设计不会被破坏)。" -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "删除webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "你确定要删除这个webhook吗?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "删除webhook" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "编辑webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "编辑webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "发送邀请" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "电子邮件,以逗号分隔" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "有些成员已经在团队中,我们将邀请其余成员。" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:222 +msgid "modals.invite-team-member.text" +msgstr "您可以邀请成员加入团队,以便他们可以访问此文件和所有团队文件。" + +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "邀请成员加入团队" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "由于你是这个团队的唯一成员,这个团队将连同其项目和文件一起被删除。" -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "您确定要离开 %s 团队吗?" @@ -2865,15 +2947,15 @@ msgstr "选择一位成员晋升" msgid "modals.leave-and-reassign.title" msgstr "在你离开之前" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "退出团队" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "你确定要离开本团队吗?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "正在退出团队" @@ -2895,35 +2977,35 @@ msgid_plural "modals.move-shared-confirm.title" msgstr[0] "移动共享库" msgstr[1] "移动多个共享库" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "微调量" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "转让所有权" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "如果你转移所有权,你的角色将变为管理员,失去对这个团队的一些权限。 " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "您是此团队的所有者,你确定想要将所有者转让给该成员?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "新增团队所有者" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "发布" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "你的库是空的。你确定想要发布它?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "发布空白库" @@ -2974,19 +3056,19 @@ msgstr "你即将更新共享库中的组件,这可能会影响使用这些组 msgid "modals.update-remote-component-in-bulk.message" msgstr "更新共享库组件" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "更新组件" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "取消" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "你即将更新共享库中的一个组件。这可能会对使用该组件的其他文档产生影响。" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "更新共享库中的一个组件" @@ -3018,6 +3100,10 @@ msgstr "免费注册" msgid "not-found.login.start-using" msgstr "并在数秒内开始使用 Penpot!" +#: src/app/main/ui/static.cljs:65 +msgid "not-found.made-with-love" +msgstr "用爱和开源制作" + #: src/app/main/ui/static.cljs:243 msgid "not-found.no-permission.already-requested.file" msgstr "您已经申请了对此文件的访问权限。" @@ -3078,15 +3164,19 @@ msgstr "要访问此文件,您可以询问团队拥有者。" msgid "not-found.no-permission.you-can-ask.project" msgstr "要访问此项目,您可以询问团队拥有者。" +#: src/app/main/data/common.cljs:89 +msgid "notifications.by-code.maintenance" +msgstr "维护中断:我们将在5分钟内进行短暂维护。" + #: src/app/main/data/common.cljs:82 msgid "notifications.by-code.upgrade-version" msgstr "有新版本可用,请刷新页面" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "成功发送邀请" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "邀请链接已复制" @@ -3215,7 +3305,7 @@ msgstr "邀请成员" msgid "onboarding.choice.team-up.invite-members-info" msgstr "记得将开发人员、设计师、经理……等各类人员都加进来:)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "邀请角色:" @@ -3251,6 +3341,10 @@ msgstr "让我们开始吧!" msgid "onboarding.questions.reasons.alternative" msgstr "寻找 Figma、XD等的替代者" +#: src/app/main/ui/onboarding/questions.cljs:243 +msgid "onboarding.questions.reasons.exploring" +msgstr "仅浏览" + #: src/app/main/ui/onboarding/questions.cljs:246 msgid "onboarding.questions.reasons.fit" msgstr "评估Penpot是否适合我的团队" @@ -3302,6 +3396,10 @@ msgstr "您将使用 Penpot 做什么?" msgid "onboarding.questions.step1.question2" msgstr "是什么让你今天来到 Penpot?" +#: src/app/main/ui/onboarding/questions.cljs:112 +msgid "onboarding.questions.step1.subtitle" +msgstr "请告诉我们一些关于您的信息,帮助我们完善 Penpot。您的回答将帮助我们确定新功能的优先级,并指导您如何开始使用。" + #: src/app/main/ui/onboarding/questions.cljs:110 msgid "onboarding.questions.step1.title" msgstr "帮助我们了解你" @@ -3420,193 +3518,193 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "去登录" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "分离" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "混合" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "移除颜色" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "选择使用此样式的项目" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "基础" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "仪表盘" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "观察者" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "工作区" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "对准" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "编辑" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "通用" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "通用" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "主菜单" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "修改图层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "导航" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "导航" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "导航" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "面板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "路径" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "形状" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "文本" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "工具" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "缩放" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "缩放" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "评论" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "添加节点" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "底部对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "居中对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "水平居中对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "两端对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "靠左对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "靠右对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "顶部对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "垂直居中对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "以所选内容创建画板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "切换粗体" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "布尔差" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "布尔排除" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "布尔交集" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "布尔合并" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "移至最下层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "移至下一层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "移至上一层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "移至最上层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "清除回退内容" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "拷贝" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "复制链接" @@ -3615,287 +3713,271 @@ msgstr "复制链接" msgid "shortcuts.copy-props" msgstr "复制属性" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "创建新的" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "剪切" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "缩小" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "删除" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "删除节点" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "拆分组件" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "曲线" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "椭圆" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "画板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "绘制路径" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "路径" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "长方形" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "文本" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "复制" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "取消" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "导出形状" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "缩放至适应所有" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "水平翻转" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "垂直翻转" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "缩小字体大小" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "增加字体大小" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "前往草稿" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "前往共享库" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "搜索" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "组" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "水平分布" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "显示/隐藏UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "放大" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "插入图片" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "切换斜体" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "链接节点" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "减少字母间距" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "减少字母间距" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "减少行高" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "增加行高" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "切换删除线" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "制作圆角" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "制作曲线" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "遮罩" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "合并节点" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "移动" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "快速下移" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "快速向左移动" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "快速向右移动" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "快速上移" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "移动节点" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "向下移动" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "左移" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "右移" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "上移" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "下个画板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "没找到快捷方式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "设置不透明度为100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "设置不透明度为10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "设置不透明度为20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "设置不透明度为30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "设置不透明度为40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "设置不透明度为50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "设置不透明度为60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "设置不透明度为70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "设置不透明度为80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "设置不透明度为90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "色彩拾取器" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "前往查阅者评论区" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "前往看板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "转到查看器检查部分" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "转往阅读器交互部分" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "转往阅读器交互部分" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "前往工作区" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " 或 " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "粘贴" @@ -3909,191 +3991,191 @@ msgstr "粘贴属性" msgid "shortcuts.plugins" msgstr "插件管理器" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "前一画板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "重做" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "重命名" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "重置缩放" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "缩放" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "搜索快捷方式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "选择所有" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "选择下一个图层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "选择上级图层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "选择上一个图层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "分离节点" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "显示/隐藏像素网格" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "显示/隐藏快捷方式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "对齐到节点" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "对齐像素网格" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "启用编辑" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "启用测量" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "停止测量" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "设置缩略图" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "快捷键" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "切换动态对齐" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "切换资产" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "切换调色板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "切换焦点模式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "切换全屏" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "显示/隐藏参考线" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "切换历史" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "切换层" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "添加/删除弹性布局" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "添加/移除网格布局" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "锁定所选" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "锁定比例" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "显示/隐藏标尺" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "吸附到参考线" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "吸附到标尺参考线" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "切换文本调色板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "更改主题" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "切换可见度" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "切换缩放样式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "切换下划线" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "回退" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "取消组合" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "取消遮罩" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "垂直分布" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "变焦镜头缩小" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "变焦镜头放大" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "缩放到选定对象" @@ -4105,6 +4187,11 @@ msgstr "企业计划" msgid "subscription.dashboard.power-up.enterprise-trial.top-title" msgstr "企业计划(实验)" +#: src/app/main/ui/dashboard/subscription.cljs:64 +#, markdown +msgid "subscription.dashboard.power-up.professional.bottom-text" +msgstr "获取无限套餐,为您的团队提供额外存储空间、文件恢复等更多功能。[Power up!|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:63 msgid "subscription.dashboard.power-up.professional.top-title" msgstr "专业计划" @@ -4114,6 +4201,11 @@ msgstr "专业计划" msgid "subscription.dashboard.power-up.subscribe" msgstr "订阅" +#: src/app/main/ui/dashboard/subscription.cljs:72 +#, markdown +msgid "subscription.dashboard.power-up.trial.bottom-description" +msgstr "试用体验良好?永久解锁完整访问权限。[订阅|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:71 msgid "subscription.dashboard.power-up.trial.top-title" msgstr "无限计划(试验)" @@ -4122,20 +4214,56 @@ msgstr "无限计划(试验)" msgid "subscription.dashboard.power-up.unlimited-plan" msgstr "无限计划" +#: src/app/main/ui/dashboard/subscription.cljs:78 +#, markdown +msgid "subscription.dashboard.power-up.unlimited.bottom-text" +msgstr "以固定价格为您的所有团队提供无限存储空间、扩展文件恢复能力和无限编辑器。[查看企业版。|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:70 #, unused msgid "subscription.dashboard.power-up.unlimited.cta" msgstr "看一看" +#: src/app/main/ui/dashboard/subscription.cljs:68 +#, unused +msgid "subscription.dashboard.power-up.unlimited.top-description" +msgstr "额外的编辑器、存储和自动保存的版本、文件备份等等。" + #: src/app/main/ui/dashboard/subscription.cljs:62, src/app/main/ui/dashboard/subscription.cljs:70, src/app/main/ui/dashboard/subscription.cljs:76, src/app/main/ui/dashboard/subscription.cljs:84, src/app/main/ui/dashboard/subscription.cljs:88 msgid "subscription.dashboard.power-up.your-subscription" msgstr "您的订阅:" +#: src/app/main/ui/dashboard/subscription.cljs:168 +msgid "subscription.dashboard.professional-dashboard-cta-title" +msgstr "您所拥有的团队共有 %s 名编辑,而您的专业计划最多可拥有 8 名编辑。" + +#: src/app/main/ui/dashboard/subscription.cljs:176 +#, markdown +msgid "subscription.dashboard.professional-dashboard-cta-upgrade-owner" +msgstr "请升级到无限版或企业版,以解锁更多编辑席位、存储空间和文件恢复功能。[立即订阅。|target:self](%s)" + #: src/app/main/ui/dashboard/subscription.cljs:111 msgid "subscription.dashboard.team-plan" msgstr "团队计划" -#: src/app/main/ui/dashboard/sidebar.cljs:858 +#: src/app/main/ui/dashboard/subscription.cljs:171 +msgid "subscription.dashboard.unlimited-dashboard-cta-title" +msgstr "您的团队不断壮大!您的无限套餐最多可容纳 %s 位编辑,但现在您有 %s 位。" + +#: src/app/main/ui/dashboard/subscription.cljs:179 +#, markdown +msgid "subscription.dashboard.unlimited-dashboard-cta-upgrade-owner" +msgstr "请升级以匹配您当前的编辑数量。[立即订阅。|target:self](%s)" + +#: src/app/main/ui/dashboard/subscription.cljs:156 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-text" +msgstr "只有您自有团队中的新编辑人员才会被计入未来账单。25 名及以上编辑人员仍需支付每月 175 美元的固定费用。" + +#: src/app/main/ui/dashboard/subscription.cljs:152 +msgid "subscription.dashboard.unlimited-members-extra-editors-cta-title" +msgstr "在无限套餐期间邀请他人" + +#: src/app/main/ui/dashboard/sidebar.cljs:978 msgid "subscription.dashboard.upgrade-plan.power-up" msgstr "升级" @@ -4143,6 +4271,22 @@ msgstr "升级" msgid "subscription.labels" msgstr "订阅" +#: src/app/main/ui/settings/subscription.cljs:373, src/app/main/ui/settings/subscription.cljs:397 +msgid "subscription.settings.add-payment-to-continue" +msgstr "添加付款方式以便在试用后继续" + +#: src/app/main/ui/settings/subscription.cljs:367, src/app/main/ui/settings/subscription.cljs:439 +msgid "subscription.settings.benefits.all-professional-benefits" +msgstr "所有专业计划权益以及:" + +#: src/app/main/ui/settings/subscription.cljs:379, src/app/main/ui/settings/subscription.cljs:391, src/app/main/ui/settings/subscription.cljs:401, src/app/main/ui/settings/subscription.cljs:453 +msgid "subscription.settings.benefits.all-unlimited-benefits" +msgstr "所有无限计划权益以及:" + +#: src/app/main/ui/settings/subscription.cljs:39 +msgid "subscription.settings.editors" +msgstr "(x %s 位编辑)" + #: src/app/main/ui/dashboard/subscription.cljs:119, src/app/main/ui/settings/subscription.cljs:72, src/app/main/ui/settings/subscription.cljs:346, src/app/main/ui/settings/subscription.cljs:399, src/app/main/ui/settings/subscription.cljs:449 msgid "subscription.settings.enterprise" msgstr "企业" @@ -4151,10 +4295,32 @@ msgstr "企业" msgid "subscription.settings.enterprise-trial" msgstr "企业(实验)" +#: src/app/main/ui/settings/subscription.cljs:393, src/app/main/ui/settings/subscription.cljs:403, src/app/main/ui/settings/subscription.cljs:455 +msgid "subscription.settings.enterprise.autosave" +msgstr "90 天自动保存版本和文件恢复" + +#: src/app/main/ui/settings/subscription.cljs:394, src/app/main/ui/settings/subscription.cljs:404, src/app/main/ui/settings/subscription.cljs:456 +msgid "subscription.settings.enterprise.capped-bill" +msgstr "每月固定费用" + +#: src/app/main/ui/settings/subscription.cljs:392, src/app/main/ui/settings/subscription.cljs:402, src/app/main/ui/settings/subscription.cljs:454 +msgid "subscription.settings.enterprise.unlimited-storage-benefit" +msgstr "无限存储空间" + #: src/app/main/ui/dashboard/subscription.cljs:124, src/app/main/ui/settings/subscription.cljs:371, src/app/main/ui/settings/subscription.cljs:383, src/app/main/ui/settings/subscription.cljs:395, src/app/main/ui/settings/subscription.cljs:405 msgid "subscription.settings.manage-your-subscription" msgstr "管理您的订阅" +#: src/app/main/ui/settings/subscription.cljs:131 +msgid "subscription.settings.management.dialog.currently-editors-title" +msgid_plural "subscription.settings.management.dialog.currently-editors-title" +msgstr[0] "目前,您的团队中有 %s 人可以编辑。" +msgstr[1] "目前,您的团队中有 %s 人可以编辑。" + +#: src/app/main/ui/settings/subscription.cljs:149 +msgid "subscription.settings.management.dialog.downgrade" +msgstr "注意:切换到较低的计划意味着更少的存储空间和更短的备份和版本历史记录。" + #: src/app/main/ui/settings/subscription.cljs:170, src/app/main/ui/settings/subscription.cljs:174 #, markdown msgid "subscription.settings.management.dialog.price-month" @@ -4199,7 +4365,7 @@ msgstr "你是 %s!" #: src/app/main/ui/settings/subscription.cljs:413 #, fuzzy msgid "subscription.settings.support-us-since" -msgstr "您一直支持我们的这个计划自从:%s" +msgstr "您自从 %s 一直支持我们的这个计划" #: src/app/main/ui/settings/subscription.cljs:443, src/app/main/ui/settings/subscription.cljs:457 msgid "subscription.settings.try-it-free" @@ -4217,7 +4383,7 @@ msgstr "无限(实验)" msgid "subscription.settings.unlimited.bill" msgstr "月度账单上限" -#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:933 +#: src/app/main/ui/dashboard/subscription.cljs:147, src/app/main/ui/workspace/main_menu.cljs:961 msgid "subscription.workspace.header.menu.option.power-up" msgstr "升级您的计划" @@ -4273,19 +4439,19 @@ msgstr "密码 - Penpot" msgid "title.settings.profile" msgstr "个人资料 - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "邀请函 - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "成员 - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "设置 - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -4355,43 +4521,43 @@ msgstr "点击时显示交互" msgid "viewer.header.sitemap" msgstr "站点地图" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "上次交付成功。" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "水平居中对齐 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "水平均匀分布 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "靠左对齐 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "靠右对齐 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "底部对齐 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "垂直居中对齐 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "垂直均匀分布 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "顶部对齐 (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "新增库" @@ -4400,19 +4566,19 @@ msgstr "新增库" msgid "workspace.assets.assets" msgstr "素材" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "所有素材" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "颜色" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "新增颜色" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "组件" @@ -4420,23 +4586,23 @@ msgstr "组件" msgid "workspace.assets.components.add-component" msgstr "新增组件" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:176, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:535 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:547 msgid "workspace.assets.components.num-variants" msgstr "%s 变体" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "创建组" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "这些物件将按照“组名/物件名”的格式自动命名" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "删除" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "创建副本" @@ -4444,11 +4610,11 @@ msgstr "创建副本" msgid "workspace.assets.duplicate-main" msgstr "重复主体" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "编辑" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "过滤器" @@ -4457,27 +4623,27 @@ msgstr "过滤器" msgid "workspace.assets.graphics" msgstr "图形" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "网格视图" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "组" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "组名" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "列表视图" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "本地库" -#: src/app/main/ui/workspace/sidebar/assets.cljs:168 +#: src/app/main/ui/workspace/sidebar/assets.cljs:177 msgid "workspace.assets.manage-library" msgstr "管理库" @@ -4489,15 +4655,15 @@ msgstr "未找到素材" msgid "workspace.assets.open-library" msgstr "打开库文档" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "重命名" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "重命名组" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "搜索素材" @@ -4513,21 +4679,21 @@ msgstr[1] "已选中%s个物件" msgid "workspace.assets.shared-library" msgstr "共享库" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1个组件" msgstr[1] "%s个组件" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "排序" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "排版" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "新增排版" @@ -4552,7 +4718,7 @@ msgstr "字距" msgid "workspace.assets.typography.line-height" msgstr "行高" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4564,59 +4730,59 @@ msgstr "文本样式" msgid "workspace.assets.typography.text-transform" msgstr "文本变换" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "解组" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "新建区域" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "新建画板" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "合并网格" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "在右侧添加一列" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "在左侧添加一列" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "删除此列" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "删除此列及其内容" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "复制此列" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "在下方添加一行" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "在上方添加一行" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "删除此行" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "删除此行及其内容" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "复制此行" @@ -4624,7 +4790,7 @@ msgstr "复制此行" msgid "workspace.focus.focus-mode" msgstr "禅模式" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "退出禅模式" @@ -4644,11 +4810,11 @@ msgstr "线性渐变" msgid "workspace.gradients.radial" msgstr "放射渐变" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "禁用动态对齐" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "禁用比例尺" @@ -4657,23 +4823,23 @@ msgstr "禁用比例尺" msgid "workspace.header.menu.disable-scale-text" msgstr "禁用缩放文本" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "禁用与参考线对齐" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "禁用像素对齐" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "禁用“吸附到标尺参考线”" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "启用动态对齐" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "启用比例尺" @@ -4682,51 +4848,51 @@ msgstr "启用比例尺" msgid "workspace.header.menu.enable-scale-text" msgstr "启用缩放文本" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "与参考线对齐" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "启用像素对齐" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "启用“吸附到标尺参考线”" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "隐藏画板名称" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "隐藏参考线" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "隐藏调色盘" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "隐藏像素网格" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "隐藏标尺" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "隐藏字体调色板" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "编辑" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "文件" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "帮助和信息" @@ -4735,63 +4901,63 @@ msgstr "帮助和信息" msgid "workspace.header.menu.option.power-up" msgstr "升级您的计划" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "首选项" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "视图" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "重做" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "全选" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "显示画板名称" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "显示参考线" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "显示调色盘" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "显示像素网格" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "显示标尺" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "显示字体调色板" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "切换到深色主题" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "切换到浅色主题" -#: src/app/main/ui/workspace/main_menu.cljs:287 +#: src/app/main/ui/workspace/main_menu.cljs:315 msgid "workspace.header.menu.toggle-system-theme" msgstr "切换至系统主题" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "撤销" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "重置" @@ -4807,7 +4973,7 @@ msgstr "已保存" msgid "workspace.header.saving" msgstr "正在保存" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "共享" @@ -4816,11 +4982,11 @@ msgstr "共享" msgid "workspace.header.unsaved" msgstr "未保存的修改" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "预览模式(%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "缩放" @@ -4832,7 +4998,7 @@ msgstr "填充 - 填充比例" msgid "workspace.header.zoom-fit" msgstr "适合 - 缩小以适合" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "缩放以适应所有" @@ -4840,43 +5006,43 @@ msgstr "缩放以适应所有" msgid "workspace.header.zoom-full-screen" msgstr "全屏" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "缩放到选定的位置" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "编辑网格" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "退出" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:429, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:435 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:436 msgid "workspace.layout_grid.editor.padding.bottom" msgstr "下内边距" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "显示4边内距选项" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:354, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:362 msgid "workspace.layout_grid.editor.padding.horizontal" msgstr "水平内边距" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:444, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:450 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:451 msgid "workspace.layout_grid.editor.padding.left" msgstr "左内边距" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:414, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:420 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:421 msgid "workspace.layout_grid.editor.padding.right" msgstr "右内边距" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:406 msgid "workspace.layout_grid.editor.padding.top" msgstr "上内边距" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:341, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:347 msgid "workspace.layout_grid.editor.padding.vertical" msgstr "垂直内边距" @@ -4892,7 +5058,7 @@ msgstr "完成" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "定位" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "定位网格布局" @@ -4901,10 +5067,6 @@ msgstr "定位网格布局" msgid "workspace.libraries.add" msgstr "添加" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s种颜色" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "你的库中还没有颜色风格" @@ -4931,43 +5093,35 @@ msgstr "最近使用的颜色" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB互补" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "保存颜色风格" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s个组件" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "或者添加一些这样的来试试:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "您的团队中没有共享库,您可以查找" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "这里有些模版" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "文档库" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s个图形" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "本文档中的库" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "库" @@ -4976,11 +5130,11 @@ msgstr "库" msgid "workspace.libraries.library" msgstr "库" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "共享库更新" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "加载中…" @@ -4989,51 +5143,47 @@ msgstr "加载中…" msgid "workspace.libraries.more-templates" msgstr "您可以搜索 " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "没有需要更新的共享库" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "没有找到“%s”的匹配项" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "搜索共享库" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "共享库" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "连接共享库" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "复合排版" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "断开所有排版的链接" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s个排版" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "断开共享库" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "更新" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "查看所有修改" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "更新" @@ -5041,31 +5191,31 @@ msgstr "更新" msgid "workspace.notification-pill.detail" msgstr "细节" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "单击 + 按钮以添加交互。" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "新增模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "移除模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "编组模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "选项模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "切换模糊" @@ -5073,79 +5223,79 @@ msgstr "切换模糊" msgid "workspace.options.canvas-background" msgstr "画布背景" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "剪辑内容" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "组件" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "注释" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "复制" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "创建注释" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "编辑注释" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "主要" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "交换组件" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "你的库中还没有素材" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:973 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:993 msgid "workspace.options.component.unlinked" msgstr "未链接" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:512 msgid "workspace.options.component.variant.duplicated.copy.locate" msgstr "转到主组件" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1246 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1281 msgid "workspace.options.component.variant.duplicated.group.locate" msgstr "定位到复制的变体" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1236 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1271 msgid "workspace.options.component.variant.malformed.group.locate" msgstr "定位无效的变体" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1268 msgid "workspace.options.component.variant.malformed.group.title" msgstr "一些变体的名字无效" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:252 msgid "workspace.options.component.variant.malformed.single.all" msgstr "这些变体的名字无效。" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:247 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:249 msgid "workspace.options.component.variant.malformed.single.one" msgstr "这个变体的名字无效。" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:253 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:255 msgid "workspace.options.component.variant.malformed.single.some" msgstr "其中一些变体的名字无效。" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:390 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:391 msgid "workspace.options.component.variant.malformed.structure.example" msgstr "[property]=[value], [property]=[value]" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:389 msgid "workspace.options.component.variant.malformed.structure.title" msgstr "尝试使用下面的结构:" @@ -5155,13 +5305,13 @@ msgstr "共享相同的名字。" #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:76 msgid "workspace.options.component.variants-help-modal.rule2" -msgstr "是相同的类型" +msgstr "是相同的类型。" #: src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:87 msgid "workspace.options.component.variants-help-modal.rule3" -msgstr "存在相同的层级" +msgstr "存在相同的层级。" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:935, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1157, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1191, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:47 msgid "workspace.options.component.variants-help-modal.title" msgstr "变体如何保持连接" @@ -5205,7 +5355,7 @@ msgstr "顶部固定" msgid "workspace.options.constraints.topbottom" msgstr "上下固定" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "设计" @@ -5218,21 +5368,21 @@ msgstr "导出" msgid "workspace.options.export-multiple" msgstr "导出已选择" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "输出1个元素" msgstr[1] "输出%s元素" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "新增导出" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "移除导出" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "后缀" @@ -5240,7 +5390,7 @@ msgstr "后缀" msgid "workspace.options.exporting-complete" msgstr "导出完成" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "正在导出…" @@ -5252,27 +5402,27 @@ msgstr "导出失败" msgid "workspace.options.exporting-object-slow" msgstr "导出速度意外缓慢" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "填充" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "新增填充" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "移除填充" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "调整画板适应内容大小" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "增加流程起点" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "流程" @@ -5281,19 +5431,19 @@ msgstr "流程" msgid "workspace.options.flows.flow-start" msgstr "流程起点" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "所有流程起点" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "移除流" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "自动" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "列" @@ -5302,7 +5452,7 @@ msgstr "列" msgid "workspace.options.grid.grid-title" msgstr "网格" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "颜色" @@ -5311,15 +5461,15 @@ msgstr "颜色" msgid "workspace.options.grid.params.columns" msgstr "列" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "栅格间隔" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "高" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "外边距" @@ -5328,7 +5478,7 @@ msgstr "外边距" msgid "workspace.options.grid.params.rows" msgstr "行" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "设为默认" @@ -5342,159 +5492,159 @@ msgstr "尺寸" msgid "workspace.options.grid.params.type" msgstr "类型" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "底" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "居中" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "左" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "右" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "拉伸" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "顶" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "使用默认" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "宽" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "行" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "正方形" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "编组填充" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "编组边框" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "新增辅助线" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "移除辅助线" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "参考线" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "切换辅助线" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "高度" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "检查" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "执行" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "延迟后" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "动画" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "解散" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "无" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "推送" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "滑动" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "自动" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "添加背景覆盖" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "点击外部时关闭" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "关闭覆盖" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "关闭遮罩层: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "延迟" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "目的地" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "持续时间" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "平滑" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "缓解" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "缓入" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "缓进缓出" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "缓出" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "线性" @@ -5503,47 +5653,47 @@ msgstr "线性" msgid "workspace.options.interaction-in" msgstr "在" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "鼠标进入" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "鼠标离开" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "ms" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "导航至" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "导航到: %s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(未设定)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "偏移效果" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "点击时" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "打开叠加层" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "打开覆盖:%s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "打开网址" @@ -5552,87 +5702,87 @@ msgstr "打开网址" msgid "workspace.options.interaction-out" msgstr "外" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "底部居中" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "左下角" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "右下角" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "居中" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "手册" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "顶部居中" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "左上角" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "右上角" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "位置" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "保留滚动位置" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "上一个屏幕" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "相对于" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "自己" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "切换覆盖层" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "切换覆盖:%s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "触发器" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "URL" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "悬停时" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "按下时" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "交互" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "新增交互" @@ -5641,67 +5791,67 @@ msgstr "新增交互" msgid "workspace.options.interactions.remove-interaction" msgstr "移除交互" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "颜色" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "颜色加深" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "颜色减淡" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "变暗" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "差值" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "排除" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "强光" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "色相" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "变亮" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "亮度" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "正片叠底" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "正常" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "叠加" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "饱和度" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "滤色" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "柔光" @@ -5720,7 +5870,7 @@ msgstr "图层组" msgid "workspace.options.layer-options.title.multiple" msgstr "已选中的图层" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "显示/隐藏图层" @@ -5729,19 +5879,19 @@ msgstr "显示/隐藏图层" msgid "workspace.options.layout-item.advanced-ops" msgstr "高级选项" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "最大高度" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "最大宽度" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "最小高度" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "最小宽度" @@ -5855,15 +6005,15 @@ msgstr "间隔留空" msgid "workspace.options.layout.top" msgstr "顶部" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "更多颜色" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "更多共享库颜色" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "不透明度" @@ -5872,31 +6022,31 @@ msgstr "不透明度" msgid "workspace.options.position" msgstr "位置" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "原型" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "圆角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "左下角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "右下角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "左上角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "右上角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "显示独立的圆角" @@ -5908,7 +6058,7 @@ msgstr "最近的" msgid "workspace.options.retry" msgstr "重试" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "旋转" @@ -5916,31 +6066,31 @@ msgstr "旋转" msgid "workspace.options.search-font" msgstr "搜索字体" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "选择一个形状、画板或编组,拖至另一个画板,以创建关联。" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "已选颜色" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "选项填充" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "选项边框" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "新增阴影" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "阴影颜色" @@ -5952,63 +6102,64 @@ msgstr "外阴影" msgid "workspace.options.shadow-options.inner-shadow" msgstr "内阴影" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "移除阴影" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "展开" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "阴影" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "编组阴影" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "选项阴影" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "切换阴影" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "在导出中显示" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "在预览模式显示" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "尺寸" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "尺寸预设" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.lock" msgstr "锁定比率" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:534 msgid "workspace.options.size.unlock" msgstr "解锁比率" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "边框" @@ -6017,7 +6168,7 @@ msgstr "边框" msgid "workspace.options.stroke-cap.circle-marker" msgstr "圆形标记" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "圆形" @@ -6026,7 +6177,7 @@ msgstr "圆形" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "钻石标记" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "钻石" @@ -6035,19 +6186,19 @@ msgstr "钻石" msgid "workspace.options.stroke-cap.line-arrow" msgstr "箭头" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "箭头" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "无边框" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "圆头" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "方头" @@ -6056,7 +6207,7 @@ msgstr "方头" msgid "workspace.options.stroke-cap.square-marker" msgstr "方形标记" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "矩形" @@ -6065,83 +6216,83 @@ msgstr "矩形" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "三角箭头" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "三角形" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "线条颜色" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "线宽" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "新增描边颜色" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "居中" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "长虚线" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "虚线" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "内部" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "混合" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "外部" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "移除描边" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "实线" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "底部对齐" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "垂直居中" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "顶部对齐" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "从左到右" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "从右到左" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "自动高度" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "自动宽度" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "固定" @@ -6163,35 +6314,35 @@ msgstr "小写" msgid "workspace.options.text-options.none" msgstr "无" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "删除线 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "水平居中" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "两端对齐" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "靠左对齐" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "靠右对齐" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "文本" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "编组文本" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "选项文本" @@ -6200,7 +6351,7 @@ msgstr "选项文本" msgid "workspace.options.text-options.titlecase" msgstr "首字母大写" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "下划线 (%s)" @@ -6209,19 +6360,19 @@ msgstr "下划线 (%s)" msgid "workspace.options.text-options.uppercase" msgstr "大写" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "点击页面顶端的播放按钮预览原型。" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "宽度" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X轴" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y轴" @@ -6265,76 +6416,76 @@ msgstr "拆分节点(%s)" msgid "workspace.path.actions.snap-nodes" msgstr "对接节点 (%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "打开" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "发现 [more plugins](%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "未安装插件" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "插件清单不正确。" -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "安装" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "已安装的插件" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "插件管理器" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "插件" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "更新此插件" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "开始文件下载。" -#: src/app/main/ui/workspace/plugins.cljs:285 +#: src/app/main/ui/workspace/plugins.cljs:286 msgid "workspace.plugins.permissions.allow-localstorage" msgstr "保存数据至浏览器。" -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "阅读您的评论和回复。" -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "阅读您的库和资源。" -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "阅读和修改您的库和资源。" -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "'%s' 插件需要访问:" -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "插件列表" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "移除插件" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "写入插件 URL" @@ -6342,19 +6493,19 @@ msgstr "写入插件 URL" msgid "workspace.plugins.success" msgstr "插件已正确载入。" -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "插件" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "不是现在" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "'%s' 插件已为您的使用者安装!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "尝试插件" @@ -6366,15 +6517,15 @@ msgstr "添加弹性布局" msgid "workspace.shape.menu.add-grid" msgstr "添加网格布局" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "新增布局" -#: src/app/main/ui/workspace/context_menu.cljs:608, src/app/main/ui/workspace/sidebar/assets/common.cljs:505, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:941, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1161 +#: src/app/main/ui/workspace/context_menu.cljs:610, src/app/main/ui/workspace/sidebar/assets/common.cljs:514, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:961, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1195 msgid "workspace.shape.menu.add-variant" msgstr "创建变体" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:509, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:990, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1082, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1198 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:518, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1010, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1115, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1233 msgid "workspace.shape.menu.add-variant-property" msgstr "新增新属性" @@ -6386,11 +6537,11 @@ msgstr "移至底层" msgid "workspace.shape.menu.backward" msgstr "向下移动一层" -#: src/app/main/ui/workspace/context_menu.cljs:615, src/app/main/ui/workspace/sidebar/assets/components.cljs:638, src/app/main/ui/workspace/sidebar/assets/groups.cljs:74, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1021 +#: src/app/main/ui/workspace/context_menu.cljs:617, src/app/main/ui/workspace/sidebar/assets/components.cljs:634, src/app/main/ui/workspace/sidebar/assets/groups.cljs:75, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1041 msgid "workspace.shape.menu.combine-as-variants" msgstr "合并为变体" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:640 +#: src/app/main/ui/workspace/sidebar/assets/components.cljs:636 msgid "workspace.shape.menu.combine-as-variants-error" msgstr "组件需要在同一个页面中" @@ -6426,7 +6577,7 @@ msgstr "复制为 SVG" msgid "workspace.shape.menu.copy-text" msgstr "复制为文本" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "创建注释" @@ -6434,11 +6585,11 @@ msgstr "创建注释" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "转为画板" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "创建组件" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "创建多个组件" @@ -6446,7 +6597,7 @@ msgstr "创建多个组件" msgid "workspace.shape.menu.cut" msgstr "剪切" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "删除" @@ -6454,15 +6605,15 @@ msgstr "删除" msgid "workspace.shape.menu.delete-flow-start" msgstr "删除流程起点" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "解绑实例" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "解绑实例" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "差集" @@ -6474,11 +6625,11 @@ msgstr "创建副本" msgid "workspace.shape.menu.edit" msgstr "编辑" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "相减" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "展平" @@ -6511,19 +6662,19 @@ msgstr "前往主组件文档" msgid "workspace.shape.menu.group" msgstr "编组" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "隐藏" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "显示/隐藏界面" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "差集" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "锁定" @@ -6531,7 +6682,7 @@ msgstr "锁定" msgid "workspace.shape.menu.mask" msgstr "蒙板" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "粘贴" @@ -6551,15 +6702,15 @@ msgstr "删除弹性布局" msgid "workspace.shape.menu.remove-grid" msgstr "移除网格布局" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "移除布局" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1222 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1257 msgid "workspace.shape.menu.remove-variant-property" msgstr "移除属性" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1221 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1256 msgid "workspace.shape.menu.remove-variant-property.last-property" msgstr "变体至少需要有一个属性" @@ -6567,15 +6718,15 @@ msgstr "变体至少需要有一个属性" msgid "workspace.shape.menu.rename" msgstr "重命名" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "还原自定义选项" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "恢复主要组件" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:504 msgid "workspace.shape.menu.restore-variant" msgstr "恢复变体" @@ -6583,15 +6734,15 @@ msgstr "恢复变体" msgid "workspace.shape.menu.select-layer" msgstr "选择图层" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "显示" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "在素材面板中显示" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "显示主组件" @@ -6604,6 +6755,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "设为缩略图" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "转换为路径" @@ -6611,11 +6763,11 @@ msgstr "转换为路径" msgid "workspace.shape.menu.ungroup" msgstr "取消编组" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "相加" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "取消锁定" @@ -6628,7 +6780,7 @@ msgstr "取消蒙版" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "更新主要组件" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "更新主组件" @@ -6640,11 +6792,11 @@ msgstr "收起侧边栏" msgid "workspace.sidebar.expand" msgstr "展开侧边栏" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "历史" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "图层" @@ -6684,11 +6836,11 @@ msgstr "文本" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "已导入SVG属性" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "页面" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "新增页" @@ -6705,27 +6857,27 @@ msgstr "%s 个活动的主题" msgid "workspace.tokens.add set" msgstr "新增集" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:329 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:62, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:165, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 msgid "workspace.tokens.add-new-theme" msgstr "新增新主题" -#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:60 +#: src/app/main/ui/workspace/tokens/sets/context_menu.cljs:62 msgid "workspace.tokens.add-set-to-group" msgstr "新增集至此编组" -#: src/app/main/ui/workspace/tokens/management/group.cljs:113 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:197, src/app/main/ui/workspace/tokens/management/group.cljs:115 msgid "workspace.tokens.add-token" msgstr "新增令牌:%s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "应用于" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:315 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:316 msgid "workspace.tokens.axis" msgstr "轴" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "返回到主题列表" @@ -6751,11 +6903,11 @@ msgstr "颜色" msgid "workspace.tokens.create-new-theme" msgstr "现在创建您的第一个主题。" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "创建一个。" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "删除 token" @@ -6763,19 +6915,19 @@ msgstr "删除 token" msgid "workspace.tokens.delete-theme-title" msgstr "删除主题" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "复制 token" -#: src/app/main/data/workspace/tokens/library_edit.cljs:201, src/app/main/data/workspace/tokens/library_edit.cljs:405 +#: src/app/main/data/workspace/tokens/library_edit.cljs:197, src/app/main/data/workspace/tokens/library_edit.cljs:415 msgid "workspace.tokens.duplicate-suffix" msgstr "复制" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "编辑 token" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "编辑主题" @@ -6783,10 +6935,6 @@ msgstr "编辑主题" msgid "workspace.tokens.edit-themes" msgstr "编辑主题" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "编辑 token" - #: src/app/main/data/workspace/tokens/errors.cljs:15 msgid "workspace.tokens.error-parse" msgstr "导入错误:不能解析 JSON。" @@ -6807,7 +6955,7 @@ msgstr "预览:" msgid "workspace.tokens.export.single-file" msgstr "单文件" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:229 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:228 msgid "workspace.tokens.gaps" msgstr "间隔" @@ -6820,7 +6968,7 @@ msgstr "错误: " msgid "workspace.tokens.group-name" msgstr "编组名称" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:232 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:233 msgid "workspace.tokens.import-button-prefix" msgstr "导入 %s" @@ -6828,22 +6976,43 @@ msgstr "导入 %s" msgid "workspace.tokens.import-error" msgstr "导入错误:" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:273 msgid "workspace.tokens.import-menu-folder-option" msgstr "文件夹" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:272 msgid "workspace.tokens.import-menu-json-option" msgstr "单 JSON 文件" -#: src/app/main/ui/workspace/tokens/import/modal.cljs:270 +#: src/app/main/ui/workspace/tokens/import/modal.cljs:271 msgid "workspace.tokens.import-menu-zip-option" msgstr "ZIP 文件" +#: src/app/main/ui/workspace/tokens/sidebar.cljs:414, src/app/main/ui/workspace/tokens/sidebar.cljs:415 +#, unused +msgid "workspace.tokens.import-tooltip" +msgstr "导入 JSON 文件将覆盖所有当前令牌、集合和主题" + +#: src/app/main/ui/workspace/tokens/import/modal.cljs:247 +msgid "workspace.tokens.import-warning" +msgstr "导入 token 将覆盖您当前的所有令牌、集合和主题。" + +#: src/app/main/ui/workspace/tokens/management.cljs:141 +msgid "workspace.tokens.inactive-set" +msgstr "不激活" + +#: src/app/main/ui/workspace/tokens/management.cljs:132 +msgid "workspace.tokens.inactive-set-description" +msgstr "此设置未启用。请更改主题或启用此设置以在视口中查看更改" + #: src/app/main/data/workspace/tokens/errors.cljs:49 msgid "workspace.tokens.invalid-color" msgstr "无效的颜色值:%s" +#: src/app/main/data/workspace/tokens/errors.cljs:89 +msgid "workspace.tokens.invalid-font-weight-token-value" +msgstr "字体粗细值无效:使用数值(100-950)或标准名称(细、亮、常规、粗体等),后跟可选的“斜体”" + #: src/app/main/data/workspace/tokens/errors.cljs:23 msgid "workspace.tokens.invalid-json" msgstr "导入错误:JSON 中存在无效的令牌数据。" @@ -6852,6 +7021,20 @@ msgstr "导入错误:JSON 中存在无效的令牌数据。" msgid "workspace.tokens.invalid-json-token-name" msgstr "导入错误;JSON中存在无效的令牌名。" +#: src/app/main/data/workspace/tokens/errors.cljs:28 +msgid "workspace.tokens.invalid-json-token-name-detail" +msgstr "" +"“%s” 不是有效的 token 名称。\n" +"token 名称只能包含字母和数字,并以 . 字符分隔,并且不能以 $ 符号开头。" + +#: src/app/main/data/workspace/tokens/errors.cljs:81 +msgid "workspace.tokens.invalid-text-case-token-value" +msgstr "无效的token值:仅接受无、大写、小写或大写" + +#: src/app/main/data/workspace/tokens/errors.cljs:85 +msgid "workspace.tokens.invalid-text-decoration-token-value" +msgstr "无效的token值:仅接受无、下划线和删除线" + #: src/app/main/data/workspace/tokens/errors.cljs:61, src/app/main/data/workspace/tokens/errors.cljs:73, src/app/main/data/workspace/tokens/errors.cljs:77 msgid "workspace.tokens.invalid-value" msgstr "无效的令牌值:%s" @@ -6872,24 +7055,89 @@ msgstr "主题" msgid "workspace.tokens.label.theme-placeholder" msgstr "新增一个主题(如浅色)" +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:220 +msgid "workspace.tokens.margins" +msgstr "边距" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:256 +msgid "workspace.tokens.max-size" +msgstr "最大尺寸" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:250 +msgid "workspace.tokens.min-size" +msgstr "最小尺寸" + +#: src/app/main/data/workspace/tokens/errors.cljs:57 +msgid "workspace.tokens.missing-references" +msgstr "缺少token引用: " + +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:123 +msgid "workspace.tokens.more-options" +msgstr "右键单击查看选项" + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:149 +msgid "workspace.tokens.no-active-sets" +msgstr "没有活动集" + #: src/app/main/ui/workspace/tokens/themes/theme_selector.cljs:91 msgid "workspace.tokens.no-active-theme" msgstr "主题未启用" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 +msgid "workspace.tokens.no-permisions-set" +msgstr "您需要成为编辑才能激活/停用集合" + +#: src/app/main/ui/workspace/tokens/themes.cljs:53 +msgid "workspace.tokens.no-permission-themes" +msgstr "您需要成为一名编辑才能使用主题" + +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 +msgid "workspace.tokens.no-sets-create" +msgstr "尚未定义任何集合。请先创建一个。" + +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "尚不存在任何集。" +#: src/app/main/ui/workspace/tokens/themes.cljs:40 +msgid "workspace.tokens.no-themes" +msgstr "目前没有主题。" + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:49 +msgid "workspace.tokens.no-themes-currently" +msgstr "您目前没有主题。" + +#: src/app/main/data/workspace/tokens/errors.cljs:19 +msgid "workspace.tokens.no-token-files-found" +msgstr "在此文件中未找到任何标记、集合或主题。" + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:148 +msgid "workspace.tokens.num-active-sets" +msgstr "%s 个活跃集" + +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 +#, fuzzy +msgid "workspace.tokens.original-value" +msgstr "原始值:%s" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:204 +msgid "workspace.tokens.paddings" +msgstr "内边距" + #: src/app/main/ui/workspace/tokens/management/context_menu.cljs:280 msgid "workspace.tokens.radius" msgstr "圆角半径" +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 +msgid "workspace.tokens.ref-not-valid" +msgstr "引用无效或不在任何活动集中" + #: src/app/main/ui/workspace/tokens/style_dictionary.cljs #, unused msgid "workspace.tokens.reference-error" msgstr "参考错误: " -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "解析的值:%s" @@ -6898,11 +7146,28 @@ msgstr "解析的值:%s" msgid "workspace.tokens.save-theme" msgstr "保存主题" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "选择集。" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:245 +#: src/app/main/data/workspace/tokens/errors.cljs:45 +msgid "workspace.tokens.self-reference" +msgstr "Token存在自我引用" + +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:60 +msgid "workspace.tokens.set-edit-placeholder" +msgstr "输入名称(组名使用“/”)" + +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 +msgid "workspace.tokens.set-selection-theme" +msgstr "定义应使用哪些 token 集作为此主题选项的一部分:" + +#: src/app/main/ui/workspace/tokens/token_pill.cljs:47 +#, unused +msgid "workspace.tokens.set.not-active" +msgstr "Token 集未激活" + +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:244 msgid "workspace.tokens.size" msgstr "大小" @@ -6914,20 +7179,20 @@ msgstr "主题 %s" msgid "workspace.tokens.themes-list" msgstr "主题列表" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "描述" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "名称" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "工具" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "素材" @@ -6935,7 +7200,7 @@ msgstr "素材" msgid "workspace.toolbar.color-palette" msgstr "调色盘(%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "评论(%s)" @@ -7142,19 +7407,19 @@ msgstr "操作覆盖%s" msgid "workspace.undo.title" msgstr "历史" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "忽略" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "更多信息" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "共享库有更新" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "更新" @@ -7218,7 +7483,7 @@ msgstr "你想要恢复此版本吗?" msgid "workspace.versions.snapshot-menu" msgstr "打开快照菜单" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "历史" diff --git a/frontend/translations/zh_Hant.po b/frontend/translations/zh_Hant.po index a8ab707d87..7e591c9b1b 100644 --- a/frontend/translations/zh_Hant.po +++ b/frontend/translations/zh_Hant.po @@ -1,15 +1,15 @@ msgid "" msgstr "" -"PO-Revision-Date: 2025-08-11 07:21+0000\n" +"PO-Revision-Date: 2025-10-13 09:26+0000\n" "Last-Translator: william chen \n" -"Language-Team: Chinese (Traditional Han script) " -"\n" +"Language-Team: Chinese (Traditional Han script) \n" "Language: zh_Hant\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.13-dev\n" +"X-Generator: Weblate 5.14-dev\n" #: src/app/main/ui/auth/register.cljs:215, src/app/main/ui/static.cljs:153, src/app/main/ui/viewer/login.cljs:98 msgid "auth.already-have-account" @@ -168,7 +168,7 @@ msgstr "設計與原型製作的開源解決方案。" msgid "auth.terms-and-privacy-agreement" msgstr "我同意[服務條款](%s)和[隱私權政策](%s)。" -#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:927, src/app/main/ui/workspace/main_menu.cljs:156 +#: src/app/main/ui/auth/register.cljs:253, src/app/main/ui/dashboard/sidebar.cljs:884, src/app/main/ui/workspace/main_menu.cljs:184 msgid "auth.terms-of-service" msgstr "服務條款" @@ -193,7 +193,7 @@ msgstr "...品牌設計、插畫、行銷素材等。" msgid "comments.mentions.not-found" msgstr "未找到 @%s 的聯絡人" -#: src/app/main/ui/workspace/libraries.cljs:308 +#: src/app/main/ui/workspace/libraries.cljs:333 msgid "common.publish" msgstr "發怖" @@ -262,7 +262,7 @@ msgstr "分享原型" msgid "common.share-link.view-all" msgstr "全選" -#: src/app/main/ui/workspace/libraries.cljs:304 +#: src/app/main/ui/workspace/libraries.cljs:329 msgid "common.unpublish" msgstr "未發怖" @@ -380,7 +380,7 @@ msgstr "權杖沒有到期時間" msgid "dashboard.add-file" msgstr "加入檔案" -#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:620 +#: src/app/main/ui/dashboard/file_menu.cljs:304, src/app/main/ui/workspace/main_menu.cljs:648 msgid "dashboard.add-shared" msgstr "加入為共享檔案庫" @@ -388,31 +388,31 @@ msgstr "加入為共享檔案庫" msgid "dashboard.change-email" msgstr "更改電子郵件" -#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:524, src/app/main/data/workspace/pages.cljs:178 +#: src/app/main/data/dashboard.cljs:296, src/app/main/data/dashboard.cljs:530, src/app/main/data/workspace/pages.cljs:192 msgid "dashboard.copy-suffix" msgstr "(複製)" -#: src/app/main/ui/dashboard/sidebar.cljs:328 +#: src/app/main/ui/dashboard/sidebar.cljs:329 msgid "dashboard.create-new-team" msgstr "建立新團隊" -#: src/app/main/ui/workspace/main_menu.cljs:631 +#: src/app/main/ui/workspace/main_menu.cljs:659 msgid "dashboard.create-version-menu" msgstr "固定此版本" -#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:548 +#: src/app/main/ui/components/context_menu_a11y.cljs:288, src/app/main/ui/dashboard/sidebar.cljs:549 msgid "dashboard.default-team-name" msgstr "你的 Penpot" -#: src/app/main/ui/dashboard/sidebar.cljs:476 +#: src/app/main/ui/dashboard/sidebar.cljs:477 msgid "dashboard.delete-team" msgstr "刪除團隊" -#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:661, src/app/main/ui/workspace/main_menu.cljs:670 +#: src/app/main/ui/dashboard/file_menu.cljs:311, src/app/main/ui/dashboard/file_menu.cljs:316, src/app/main/ui/workspace/main_menu.cljs:689, src/app/main/ui/workspace/main_menu.cljs:698 msgid "dashboard.download-binary-file" msgstr "下載 Penpot 檔案 (.penpot)" -#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:679 +#: src/app/main/ui/dashboard/file_menu.cljs:321, src/app/main/ui/workspace/main_menu.cljs:707 msgid "dashboard.download-standard-file" msgstr "下載標準檔案 (.svg + .json)" @@ -466,7 +466,7 @@ msgstr "還沒有圖庫。" msgid "dashboard.export-binary-multi" msgstr "下載 %s 個Penpot 檔案 (.penpot)" -#: src/app/main/ui/workspace/main_menu.cljs:687 +#: src/app/main/ui/workspace/main_menu.cljs:715 msgid "dashboard.export-frames" msgstr "將 boards 匯出為 PDF" @@ -482,7 +482,7 @@ msgstr "匯出 %s 個檔案" msgid "dashboard.export-multiple.selected" msgstr "已選取%s / %s elements" -#: src/app/main/ui/workspace/main_menu.cljs:649 +#: src/app/main/ui/workspace/main_menu.cljs:677 msgid "dashboard.export-shapes" msgstr "匯出" @@ -661,11 +661,11 @@ msgstr "上傳資料至伺服器 (%s/%s)" msgid "dashboard.import.progress.upload-media" msgstr "正在上傳檔案:%s" -#: src/app/main/ui/dashboard/team.cljs:120, src/app/main/ui/dashboard/team.cljs:766 +#: src/app/main/ui/dashboard/team.cljs:122, src/app/main/ui/dashboard/team.cljs:744 msgid "dashboard.invite-profile" msgstr "邀請人員" -#: src/app/main/ui/dashboard/sidebar.cljs:458, src/app/main/ui/dashboard/sidebar.cljs:465, src/app/main/ui/dashboard/sidebar.cljs:470, src/app/main/ui/dashboard/team.cljs:349 +#: src/app/main/ui/dashboard/sidebar.cljs:459, src/app/main/ui/dashboard/sidebar.cljs:466, src/app/main/ui/dashboard/sidebar.cljs:471, src/app/main/ui/dashboard/team.cljs:351 msgid "dashboard.leave-team" msgstr "離開團隊" @@ -677,7 +677,7 @@ msgstr "資料庫和範本" msgid "dashboard.libraries-and-templates.explore" msgstr "探索更多內容並了解如何貢獻" -#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:151 +#: src/app/main/ui/dashboard/import.cljs:365, src/app/main/ui/workspace/libraries.cljs:152 msgid "dashboard.libraries-and-templates.import-error" msgstr "匯入範本時出現問題。範本並未匯入。" @@ -709,7 +709,7 @@ msgstr "移至其他團隊" msgid "dashboard.new-file" msgstr "+ 新檔案" -#: src/app/main/data/dashboard.cljs:495, src/app/main/data/dashboard.cljs:607 +#: src/app/main/data/dashboard.cljs:501, src/app/main/data/dashboard.cljs:613 msgid "dashboard.new-file-prefix" msgstr "新檔案" @@ -717,7 +717,7 @@ msgstr "新檔案" msgid "dashboard.new-project" msgstr "+ 新的專案" -#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:610 +#: src/app/main/data/dashboard.cljs:255, src/app/main/data/dashboard.cljs:616 msgid "dashboard.new-project-prefix" msgstr "新專案" @@ -725,11 +725,11 @@ msgstr "新專案" msgid "dashboard.no-matches-for" msgstr "找不到符合 「%s」的項目" -#: src/app/main/ui/dashboard/sidebar.cljs:762 +#: src/app/main/ui/dashboard/sidebar.cljs:763 msgid "dashboard.no-projects-placeholder" msgstr "釘選的專案會在此顯示" -#: src/app/main/ui/dashboard/comments.cljs:90 +#: src/app/main/ui/dashboard/comments.cljs:91 msgid "dashboard.notifications" msgstr "通知" @@ -741,7 +741,7 @@ msgstr "已成功更改您的電子郵件地址" msgid "dashboard.notifications.email-verified-successfully" msgstr "已成功驗證您的電子郵件地址" -#: src/app/main/data/profile.cljs:272 +#: src/app/main/data/profile.cljs:273 msgid "dashboard.notifications.notifications-saved" msgstr "通知設定已更新" @@ -749,11 +749,11 @@ msgstr "通知設定已更新" msgid "dashboard.notifications.password-saved" msgstr "密碼已儲存成功!" -#: src/app/main/ui/dashboard/comments.cljs:44 +#: src/app/main/ui/dashboard/comments.cljs:45 msgid "dashboard.notifications.view" msgstr "查看通知" -#: src/app/main/ui/dashboard/team.cljs:1162 +#: src/app/main/ui/dashboard/team.cljs:1340 msgid "dashboard.num-of-members" msgstr "%s 位成員" @@ -785,7 +785,7 @@ msgstr "您現在是這個團隊的老大。" msgid "dashboard.permissions-change.viewer" msgstr "您現在是該團隊的查看者。" -#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96 +#: src/app/main/ui/dashboard/pin_button.cljs:23, src/app/main/ui/dashboard/project_menu.cljs:96 msgid "dashboard.pin-unpin" msgstr "釘選/取消釘選" @@ -822,7 +822,7 @@ msgstr "您不再是團隊“%s”的成員。" msgid "dashboard.save-settings" msgstr "儲存設定" -#: src/app/main/ui/dashboard/sidebar.cljs:257, src/app/main/ui/dashboard/sidebar.cljs:258 +#: src/app/main/ui/dashboard/sidebar.cljs:258, src/app/main/ui/dashboard/sidebar.cljs:259 msgid "dashboard.search-placeholder" msgstr "搜尋…" @@ -902,7 +902,7 @@ msgstr "通知" msgid "dashboard.show-all-files" msgstr "顯示所有檔案" -#: src/app/main/ui/workspace/main_menu.cljs:638 +#: src/app/main/ui/workspace/main_menu.cljs:666 msgid "dashboard.show-version-history" msgstr "版本歷史記錄" @@ -924,7 +924,7 @@ msgstr[0] "已成功為您的檔案建立副本" msgid "dashboard.success-duplicate-project" msgstr "你的專案已成功複製" -#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:164 +#: src/app/main/ui/dashboard/file_menu.cljs:132, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:165 msgid "dashboard.success-move-file" msgstr "已成功移動您的檔案" @@ -936,15 +936,15 @@ msgstr "已成功移動您的檔案" msgid "dashboard.success-move-project" msgstr "已成功移動您的專案" -#: src/app/main/ui/dashboard/team.cljs:1145 +#: src/app/main/ui/dashboard/team.cljs:1323 msgid "dashboard.team-info" msgstr "團隊資訊" -#: src/app/main/ui/dashboard/team.cljs:1151 +#: src/app/main/ui/dashboard/team.cljs:1329 msgid "dashboard.team-members" msgstr "團隊成員" -#: src/app/main/ui/dashboard/team.cljs:1166 +#: src/app/main/ui/dashboard/team.cljs:1344 msgid "dashboard.team-projects" msgstr "團隊專案" @@ -960,7 +960,7 @@ msgstr "搜尋結果" msgid "dashboard.type-something" msgstr "輸入以搜尋" -#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612 +#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:640 msgid "dashboard.unpublish-shared" msgstr "取消發佈資料庫" @@ -968,47 +968,47 @@ msgstr "取消發佈資料庫" msgid "dashboard.update-settings" msgstr "更新設定" -#: src/app/main/ui/dashboard/sidebar.cljs:856 +#: src/app/main/ui/dashboard/sidebar.cljs:976 msgid "dashboard.upgrade-plan.no-limits" msgstr "無建立限制" -#: src/app/main/ui/dashboard/sidebar.cljs:854 +#: src/app/main/ui/dashboard/sidebar.cljs:974 msgid "dashboard.upgrade-plan.penpot-free" msgstr "Penpot 免費" -#: src/app/main/ui/dashboard/team.cljs:937 +#: src/app/main/ui/dashboard/team.cljs:1115 msgid "dashboard.webhooks.active" msgstr "正在生效" -#: src/app/main/ui/dashboard/team.cljs:938 +#: src/app/main/ui/dashboard/team.cljs:1116 msgid "dashboard.webhooks.active.explain" msgstr "當觸發此Webhook時,將會傳遞事件詳細信息" -#: src/app/main/ui/dashboard/team.cljs:982 +#: src/app/main/ui/dashboard/team.cljs:1160 msgid "dashboard.webhooks.cant-edit" msgstr "您只能刪除或修改您建立的 webhook。" -#: src/app/main/ui/dashboard/team.cljs:928 +#: src/app/main/ui/dashboard/team.cljs:1106 msgid "dashboard.webhooks.content-type" msgstr "內容類型" -#: src/app/main/ui/dashboard/team.cljs:961 +#: src/app/main/ui/dashboard/team.cljs:1139 msgid "dashboard.webhooks.create" msgstr "設置Webhook" -#: src/app/main/ui/dashboard/team.cljs:853 +#: src/app/main/ui/dashboard/team.cljs:1031 msgid "dashboard.webhooks.create.success" msgstr "成功添加Webhook。" -#: src/app/main/ui/dashboard/team.cljs:958 +#: src/app/main/ui/dashboard/team.cljs:1136 msgid "dashboard.webhooks.description" msgstr "當Penpot 發生特定事件時,Webhook 是一種使其他網站和應用程式收到通知的簡單方法。我們會向你指定的每個網址發送 POST 請求。" -#: src/app/main/ui/dashboard/team.cljs:1087 +#: src/app/main/ui/dashboard/team.cljs:1265 msgid "dashboard.webhooks.empty.add-one" msgstr "按「設置Webhook」添加。" -#: src/app/main/ui/dashboard/team.cljs:1086 +#: src/app/main/ui/dashboard/team.cljs:1264 msgid "dashboard.webhooks.empty.no-webhooks" msgstr "未有設置任何Webhook。" @@ -1028,7 +1028,7 @@ msgstr "電子郵件" msgid "dashboard.your-name" msgstr "你的名字" -#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:301, src/app/main/ui/dashboard/team.cljs:535, src/app/main/ui/dashboard/team.cljs:805, src/app/main/ui/dashboard/team.cljs:1073, src/app/main/ui/dashboard/team.cljs:1120 +#: src/app/main/ui/dashboard/file_menu.cljs:40, src/app/main/ui/dashboard/fonts.cljs:42, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:347, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:302, src/app/main/ui/dashboard/team.cljs:537, src/app/main/ui/dashboard/team.cljs:983, src/app/main/ui/dashboard/team.cljs:1251, src/app/main/ui/dashboard/team.cljs:1298 msgid "dashboard.your-penpot" msgstr "你的 Penpot" @@ -1044,15 +1044,15 @@ msgstr "注意" msgid "ds.component-subtitle" msgstr "待更新的元件:" -#: src/app/main/ui/workspace/plugins.cljs:338, src/app/main/ui/workspace/plugins.cljs:392 +#: src/app/main/ui/workspace/plugins.cljs:339, src/app/main/ui/workspace/plugins.cljs:393 msgid "ds.confirm-allow" msgstr "允許" -#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:332, src/app/main/ui/workspace/plugins.cljs:386 +#: src/app/main/ui/comments.cljs:673, src/app/main/ui/confirm.cljs:37, src/app/main/ui/settings/subscription.cljs:191, src/app/main/ui/settings/subscription.cljs:203, src/app/main/ui/workspace/plugins.cljs:333, src/app/main/ui/workspace/plugins.cljs:387 msgid "ds.confirm-cancel" msgstr "取消" -#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 +#: src/app/main/ui/confirm.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:156, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:101 msgid "ds.confirm-ok" msgstr "Ok" @@ -1104,11 +1104,11 @@ msgstr "你的電郵地址不能用作密碼" msgid "errors.email-domain-not-allowed" msgstr "不允許此域名" -#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:629, src/app/main/ui/settings/change_email.cljs:37 +#: src/app/main/ui/auth/recovery_request.cljs:57, src/app/main/ui/auth/register.cljs:98, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/dashboard/team.cljs:627, src/app/main/ui/settings/change_email.cljs:37 msgid "errors.email-has-permanent-bounces" msgstr "電子郵件«%s»有許多永久退件報告。" -#: src/app/main/ui/dashboard/team.cljs:194, src/app/main/ui/onboarding/team_choice.cljs:110 +#: src/app/main/ui/dashboard/team.cljs:196, src/app/main/ui/dashboard/team.cljs:858, src/app/main/ui/onboarding/team_choice.cljs:110 msgid "errors.email-spam-or-permanent-bounces" msgstr "電子郵件 «%s» 已被報告為垃圾郵件或永久退件。" @@ -1120,11 +1120,6 @@ msgstr "你正開啟的檔案包含Penpot尚未支援或停用'%s' 功能。" msgid "errors.feature-not-supported" msgstr "不支援 「%s」功能。" -#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/setti ngs/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs -#, unused -msgid "errors.field-max-length" -msgstr "最多可包含 1 個字元。" - #, unused msgid "errors.field-min-length" msgstr "至少須含 1 個字元。" @@ -1138,7 +1133,7 @@ msgstr "名稱必須包含除空格之外的字元。" msgid "errors.file-feature-mismatch" msgstr "似乎啟用的功能和您嘗試打開的文件的功能不相容。需要先整合套用「%s」才能開啟該檔案。" -#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:197, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 +#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:81, src/app/main/ui/auth/login.cljs:122, src/app/main/ui/auth/register.cljs:110, src/app/main/ui/auth/register.cljs:304, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:199, src/app/main/ui/dashboard/team.cljs:861, src/app/main/ui/onboarding/team_choice.cljs:113, src/app/main/ui/settings/access_tokens.cljs:79, src/app/main/ui/settings/feedback.cljs:49 msgid "errors.generic" msgstr "發生了一些錯誤。" @@ -1171,11 +1166,11 @@ msgstr "本邀請或已被取消或過期。" msgid "errors.ldap-disabled" msgstr "LDAP 驗證已停用。" -#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:189, src/app/main/ui/onboarding/team_choice.cljs:105 +#: src/app/main/errors.cljs:289, src/app/main/ui/dashboard/team.cljs:191, src/app/main/ui/onboarding/team_choice.cljs:105 msgid "errors.max-quota-reached" msgstr "你已達「%s」上限。請聯絡支援。" -#: src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:101 +#: src/app/main/ui/dashboard/team.cljs:187, src/app/main/ui/dashboard/team.cljs:849, src/app/main/ui/onboarding/team_choice.cljs:101 msgid "errors.maximum-invitations-by-request-reached" msgstr "已達到單次請求中可邀請的電子郵件數量上限(%s)" @@ -1191,7 +1186,7 @@ msgstr "似乎圖形檔案的格式內容與檔案擴展名不匹配。" msgid "errors.media-type-not-allowed" msgstr "這好像不是個能用的影像。" -#: src/app/main/ui/dashboard/team.cljs:624 +#: src/app/main/ui/dashboard/team.cljs:622 msgid "errors.member-is-muted" msgstr "您邀請的人員設置了電子郵件靜音(垃圾郵件報告或高退件率)。" @@ -1217,7 +1212,7 @@ msgstr "剪貼簿中的資料無效" msgid "errors.profile-blocked" msgstr "已封鎖用戶" -#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:180, src/app/main/ui/dashboard/team.cljs:620, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 +#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:182, src/app/main/ui/dashboard/team.cljs:618, src/app/main/ui/dashboard/team.cljs:844, src/app/main/ui/onboarding/team_choice.cljs:97, src/app/main/ui/settings/change_email.cljs:33 msgid "errors.profile-is-muted" msgstr "您的個人資料電子郵件關閉通知(垃圾郵件報告或高退回率)。" @@ -1229,15 +1224,15 @@ msgstr "目前並不開放註冊。" msgid "errors.team-feature-mismatch" msgstr "檢測到不相容的功能“%s”" -#: src/app/main/ui/dashboard/sidebar.cljs:354, src/app/main/ui/dashboard/team.cljs:391 +#: src/app/main/ui/dashboard/sidebar.cljs:355, src/app/main/ui/dashboard/team.cljs:393 msgid "errors.team-leave.insufficient-members" msgstr "成員不足,無法離開團隊,您可能希望將其刪除。" -#: src/app/main/ui/dashboard/sidebar.cljs:357, src/app/main/ui/dashboard/team.cljs:394 +#: src/app/main/ui/dashboard/sidebar.cljs:358, src/app/main/ui/dashboard/team.cljs:396 msgid "errors.team-leave.member-does-not-exists" msgstr "查無此人。" -#: src/app/main/ui/dashboard/sidebar.cljs:360, src/app/main/ui/dashboard/team.cljs:397 +#: src/app/main/ui/dashboard/sidebar.cljs:361, src/app/main/ui/dashboard/team.cljs:399 msgid "errors.team-leave.owner-cant-leave" msgstr "團隊擁有者不能離開其團隊,你須重新委任團隊擁有者角色。" @@ -1257,31 +1252,31 @@ msgstr "驗證錯誤" msgid "errors.version-not-supported" msgstr "檔案的版本號碼不相容" -#: src/app/main/ui/dashboard/team.cljs:873 +#: src/app/main/ui/dashboard/team.cljs:1051 msgid "errors.webhooks.connection" msgstr "連線錯誤,無法接上網址" -#: src/app/main/ui/dashboard/team.cljs:867 +#: src/app/main/ui/dashboard/team.cljs:1045 msgid "errors.webhooks.invalid-uri" msgstr "網址未能通過驗証。" -#: src/app/main/ui/dashboard/team.cljs:1026 +#: src/app/main/ui/dashboard/team.cljs:1204 msgid "errors.webhooks.last-delivery" msgstr "上一次傳送未能成功。" -#: src/app/main/ui/dashboard/team.cljs:869, src/app/main/ui/dashboard/team.cljs:1029 +#: src/app/main/ui/dashboard/team.cljs:1047, src/app/main/ui/dashboard/team.cljs:1207 msgid "errors.webhooks.ssl-validation" msgstr "SSL證書驗證錯誤。" -#: src/app/main/ui/dashboard/team.cljs:871 +#: src/app/main/ui/dashboard/team.cljs:1049 msgid "errors.webhooks.timeout" msgstr "連線逾時" -#: src/app/main/ui/dashboard/team.cljs:865 +#: src/app/main/ui/dashboard/team.cljs:1043 msgid "errors.webhooks.unexpected" msgstr "驗證時出現未有預料的錯誤" -#: src/app/main/ui/dashboard/team.cljs:875, src/app/main/ui/dashboard/team.cljs:1032 +#: src/app/main/ui/dashboard/team.cljs:1053, src/app/main/ui/dashboard/team.cljs:1210 msgid "errors.webhooks.unexpected-status" msgstr "未預料狀態 %s" @@ -1341,19 +1336,19 @@ msgstr "出現錯誤" msgid "inspect.attributes.blur" msgstr "模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:124 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:125 msgid "inspect.attributes.blur.value" msgstr "數值" -#: src/app/main/ui/inspect/attributes/common.cljs:110, src/app/main/ui/inspect/right_sidebar.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:91, src/app/main/ui/inspect/right_sidebar.cljs:97 msgid "inspect.attributes.color.hex" msgstr "HEX" -#: src/app/main/ui/inspect/attributes/common.cljs:112, src/app/main/ui/inspect/right_sidebar.cljs:101 +#: src/app/main/ui/inspect/attributes/common.cljs:93, src/app/main/ui/inspect/right_sidebar.cljs:101 msgid "inspect.attributes.color.hsla" msgstr "HSLA" -#: src/app/main/ui/inspect/attributes/common.cljs:111, src/app/main/ui/inspect/right_sidebar.cljs:99 +#: src/app/main/ui/inspect/attributes/common.cljs:92, src/app/main/ui/inspect/right_sidebar.cljs:99 msgid "inspect.attributes.color.rgba" msgstr "RGBA" @@ -1361,7 +1356,7 @@ msgstr "RGBA" msgid "inspect.attributes.fill" msgstr "填充" -#: src/app/main/ui/inspect/attributes/common.cljs:97 +#: src/app/main/ui/inspect/attributes/common.cljs:78, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:127 msgid "inspect.attributes.image.download" msgstr "下載原始圖片" @@ -1455,79 +1450,82 @@ msgstr "實線" msgid "inspect.attributes.stroke.width" msgstr "寬度" -#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:191 +#: src/app/main/ui/inspect/attributes/text.cljs:78, src/app/main/ui/inspect/attributes/text.cljs:184 msgid "inspect.attributes.typography" msgstr "字體" -#: src/app/main/ui/inspect/attributes/text.cljs:86, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:303 msgid "inspect.attributes.typography.font-family" msgstr "字型家族" -#: src/app/main/ui/inspect/attributes/text.cljs:104, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:321, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:327 msgid "inspect.attributes.typography.font-size" msgstr "字體大小" -#: src/app/main/ui/inspect/attributes/text.cljs:95, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:338 msgid "inspect.attributes.typography.font-style" msgstr "字體樣式" #: src/app/main/ui/inspect/attributes/text.cljs:113 +#, unused msgid "inspect.attributes.typography.font-weight" msgstr "字體粗細" -#: src/app/main/ui/inspect/attributes/text.cljs:131, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:388 msgid "inspect.attributes.typography.letter-spacing" msgstr "字母間距" -#: src/app/main/ui/inspect/attributes/text.cljs:122, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371 msgid "inspect.attributes.typography.line-height" msgstr "行高" #: src/app/main/ui/inspect/attributes/text.cljs:140 +#, unused msgid "inspect.attributes.typography.text-decoration" msgstr "文字修飾" -#: src/app/main/ui/inspect/attributes/text.cljs:142 +#: src/app/main/ui/inspect/attributes/text.cljs:136 msgid "inspect.attributes.typography.text-decoration.none" msgstr "無" -#: src/app/main/ui/inspect/attributes/text.cljs:144 +#: src/app/main/ui/inspect/attributes/text.cljs:138 msgid "inspect.attributes.typography.text-decoration.underline" msgstr "底線" #: src/app/main/ui/inspect/attributes/text.cljs:153 +#, unused msgid "inspect.attributes.typography.text-transform" msgstr "文字轉換" -#: src/app/main/ui/inspect/attributes/text.cljs:157, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 +#: src/app/main/ui/inspect/attributes/text.cljs:150, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429 msgid "inspect.attributes.typography.text-transform.capitalize" msgstr "詞首字母大寫" -#: src/app/main/ui/inspect/attributes/text.cljs:155, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 +#: src/app/main/ui/inspect/attributes/text.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:433 msgid "inspect.attributes.typography.text-transform.lowercase" msgstr "全小寫" -#: src/app/main/ui/inspect/attributes/text.cljs:156 +#: src/app/main/ui/inspect/attributes/text.cljs:149 msgid "inspect.attributes.typography.text-transform.none" msgstr "無" -#: src/app/main/ui/inspect/attributes/text.cljs:159 +#: src/app/main/ui/inspect/attributes/text.cljs:152 msgid "inspect.attributes.typography.text-transform.unset" msgstr "取消設定" -#: src/app/main/ui/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 +#: src/app/main/ui/inspect/attributes/text.cljs:151, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:423 msgid "inspect.attributes.typography.text-transform.uppercase" msgstr "全大寫" -#: src/app/main/ui/inspect/right_sidebar.cljs:230 +#: src/app/main/ui/inspect/right_sidebar.cljs:232 msgid "inspect.empty.help" msgstr "如果您想瞭解更多關於設計檢查的資訊,請訪問Penpot的幫助中心" -#: src/app/main/ui/inspect/right_sidebar.cljs:233 +#: src/app/main/ui/inspect/right_sidebar.cljs:235 msgid "inspect.empty.more-info" msgstr "有關檢查的詳細資訊" -#: src/app/main/ui/inspect/right_sidebar.cljs:225 +#: src/app/main/ui/inspect/right_sidebar.cljs:227 msgid "inspect.empty.select" msgstr "選擇一個形狀、版面或群組來檢查它們的屬性和程式碼" @@ -1587,7 +1585,7 @@ msgstr "文字" msgid "inspect.tabs.info" msgstr "資訊" -#: src/app/main/ui/workspace/main_menu.cljs:164 +#: src/app/main/ui/workspace/main_menu.cljs:192 msgid "label.shortcuts" msgstr "捷徑" @@ -1599,11 +1597,11 @@ msgstr "接受" msgid "labels.access-tokens" msgstr "存取權杖(tokens)" -#: src/app/main/ui/dashboard/team.cljs:1045 +#: src/app/main/ui/dashboard/team.cljs:1223 msgid "labels.active" msgstr "啟用" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.add" msgstr "新增" @@ -1611,11 +1609,11 @@ msgstr "新增" msgid "labels.add-custom-font" msgstr "新增自訂字體" -#: src/app/main/ui/workspace/libraries.cljs:176 +#: src/app/main/ui/workspace/libraries.cljs:177 msgid "labels.adding" msgstr "新增..." -#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:318, src/app/main/ui/dashboard/team.cljs:563, src/app/main/ui/dashboard/team.cljs:593, src/app/main/ui/onboarding/team_choice.cljs:58 +#: src/app/main/ui/dashboard/team.cljs:134, src/app/main/ui/dashboard/team.cljs:320, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:595, src/app/main/ui/onboarding/team_choice.cljs:58 msgid "labels.admin" msgstr "管理員" @@ -1623,7 +1621,7 @@ msgstr "管理員" msgid "labels.adobe-xd" msgstr "Adobe XD 軟體" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:90, src/app/main/ui/workspace/tokens/management/context_menu.cljs:124, src/app/main/ui/workspace/tokens/management/token_pill.cljs:141 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:89, src/app/main/ui/workspace/tokens/management/context_menu.cljs:123, src/app/main/ui/workspace/tokens/management/token_pill.cljs:116 msgid "labels.all" msgstr "全部" @@ -1644,7 +1642,7 @@ msgstr "伺服器正在進行小型維修,請稍後重試。" msgid "labels.bad-gateway.main-message" msgstr "無效的閘道" -#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:944, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:158, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:268, src/app/main/ui/workspace/tokens/management/create/form.cljs:613, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 +#: src/app/main/data/common.cljs:129, src/app/main/ui/dashboard/change_owner.cljs:64, src/app/main/ui/dashboard/import.cljs:515, src/app/main/ui/dashboard/team.cljs:780, src/app/main/ui/dashboard/team.cljs:1122, src/app/main/ui/delete_shared.cljs:36, src/app/main/ui/exports/assets.cljs:162, src/app/main/ui/exports/files.cljs:191, src/app/main/ui/settings/access_tokens.cljs:175, src/app/main/ui/viewer/share_link.cljs:205, src/app/main/ui/workspace/sidebar/assets/groups.cljs:159, src/app/main/ui/workspace/tokens/export/modal.cljs:44, src/app/main/ui/workspace/tokens/import/modal.cljs:269, src/app/main/ui/workspace/tokens/management/create/form.cljs:632, src/app/main/ui/workspace/tokens/settings/menu.cljs:104, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:228 msgid "labels.cancel" msgstr "取消" @@ -1652,11 +1650,11 @@ msgstr "取消" msgid "labels.canva" msgstr "油畫" -#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:623, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar.cljs:243, src/app/main/ui/workspace/tokens/export.cljs:24, src/app/main/ui/workspace/tokens/import.cljs:18, src/app/main/ui/workspace/tokens/management/create/modals.cljs:90, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:442 +#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/comments.cljs:103, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:209, src/app/main/ui/settings/access_tokens.cljs:170, src/app/main/ui/settings/subscription.cljs:246, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:176, src/app/main/ui/workspace/comments.cljs:129, src/app/main/ui/workspace/libraries.cljs:656, src/app/main/ui/workspace/sidebar/debug.cljs:41, src/app/main/ui/workspace/sidebar/layers.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/variants_help_modal.cljs:43, src/app/main/ui/workspace/sidebar/shortcuts.cljs:496, src/app/main/ui/workspace/sidebar.cljs:244, src/app/main/ui/workspace/tokens/export.cljs:25, src/app/main/ui/workspace/tokens/import.cljs:19, src/app/main/ui/workspace/tokens/management/create/modals.cljs:91, src/app/main/ui/workspace/tokens/settings/menu.cljs:78, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:58, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:161, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:441 msgid "labels.close" msgstr "關閉" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:186 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:181 msgid "labels.collapse" msgstr "摺疊" @@ -1668,11 +1666,11 @@ msgstr "留言" msgid "labels.comment.mark-as-solved" msgstr "標記為已解決" -#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126 +#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:127 msgid "labels.comments" msgstr "評論" -#: src/app/main/ui/dashboard/sidebar.cljs:899, src/app/main/ui/workspace/main_menu.cljs:116 +#: src/app/main/ui/dashboard/sidebar.cljs:840, src/app/main/ui/workspace/main_menu.cljs:144 msgid "labels.community" msgstr "社群" @@ -1680,7 +1678,7 @@ msgstr "社群" msgid "labels.confirm-password" msgstr "確認密碼" -#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 +#: src/app/main/ui/dashboard/import.cljs:521, src/app/main/ui/dashboard/team.cljs:787, src/app/main/ui/exports/files.cljs:196, src/app/main/ui/onboarding/newsletter.cljs:106, src/app/main/ui/settings/subscription.cljs:195, src/app/main/ui/settings/subscription.cljs:210 msgid "labels.continue" msgstr "繼續" @@ -1692,7 +1690,7 @@ msgstr "繼續" msgid "labels.continue-with-penpot" msgstr "以Penpot帳戶繼續" -#: src/app/main/ui/dashboard/team.cljs:692 +#: src/app/main/ui/dashboard/team.cljs:650 msgid "labels.copy-invitation-link" msgstr "複製連結" @@ -1700,7 +1698,7 @@ msgstr "複製連結" msgid "labels.copyright" msgstr "Kaleidos @2025" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:202 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205 msgid "labels.create" msgstr "建立" @@ -1720,7 +1718,7 @@ msgstr "自訂字體" msgid "labels.dashboard" msgstr "控制台" -#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:980, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:221, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:607, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:64, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:362 +#: src/app/main/ui/dashboard/file_menu.cljs:329, src/app/main/ui/dashboard/fonts.cljs:267, src/app/main/ui/dashboard/fonts.cljs:343, src/app/main/ui/dashboard/fonts.cljs:357, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:1158, src/app/main/ui/settings/access_tokens.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:224, src/app/main/ui/workspace/sidebar/versions.cljs:215, src/app/main/ui/workspace/tokens/management/create/form.cljs:626, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:66, src/app/main/ui/workspace/tokens/themes/create_modal.cljs:361 msgid "labels.delete" msgstr "刪除" @@ -1732,7 +1730,7 @@ msgstr "刪除留言" msgid "labels.delete-comment-thread" msgstr "刪除 thread" -#: src/app/main/ui/dashboard/team.cljs:698 +#: src/app/main/ui/dashboard/team.cljs:941 msgid "labels.delete-invitation" msgstr "刪除邀請" @@ -1749,15 +1747,15 @@ msgstr "開發者" msgid "labels.director" msgstr "導演" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:211 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:214 msgid "labels.discard" msgstr "捨棄" -#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:724 +#: src/app/main/ui/dashboard/file_menu.cljs:30, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:178, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:725 msgid "labels.drafts" msgstr "草稿" -#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:978, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:217, src/app/main/ui/workspace/tokens/themes.cljs:51 +#: src/app/main/ui/comments.cljs:1005, src/app/main/ui/dashboard/fonts.cljs:264, src/app/main/ui/dashboard/team.cljs:1156, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:220, src/app/main/ui/workspace/tokens/themes.cljs:51 msgid "labels.edit" msgstr "編輯" @@ -1765,7 +1763,7 @@ msgstr "編輯" msgid "labels.edit-file" msgstr "編輯檔案" -#: src/app/main/ui/dashboard/team.cljs:130, src/app/main/ui/dashboard/team.cljs:315, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:597, src/app/main/ui/onboarding/team_choice.cljs:57 +#: src/app/main/ui/dashboard/team.cljs:132, src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:566, src/app/main/ui/dashboard/team.cljs:599, src/app/main/ui/onboarding/team_choice.cljs:57 msgid "labels.editor" msgstr "編輯者" @@ -1774,11 +1772,11 @@ msgstr "編輯者" msgid "labels.event" msgstr "事件" -#: src/app/main/ui/dashboard/team.cljs:714 +#: src/app/main/ui/dashboard/team.cljs:668 msgid "labels.expired-invitation" msgstr "過期" -#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:137 +#: src/app/main/ui/exports/assets.cljs:171, src/app/main/ui/workspace/tokens/sidebar.cljs:133 msgid "labels.export" msgstr "匯出" @@ -1806,7 +1804,7 @@ msgstr "字體提供者" msgid "labels.font-variants" msgstr "樣式" -#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:737 +#: src/app/main/ui/dashboard/fonts.cljs:61, src/app/main/ui/dashboard/sidebar.cljs:738 msgid "labels.fonts" msgstr "字型" @@ -1820,11 +1818,11 @@ msgstr "執行長或創辦人" msgid "labels.freelancer" msgstr "自由工作者" -#: src/app/main/ui/dashboard/sidebar.cljs:922, src/app/main/ui/workspace/main_menu.cljs:148 +#: src/app/main/ui/dashboard/sidebar.cljs:834, src/app/main/ui/workspace/main_menu.cljs:176 msgid "labels.github-repo" msgstr "Github 倉庫" -#: src/app/main/ui/dashboard/sidebar.cljs:935, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:177 +#: src/app/main/ui/dashboard/sidebar.cljs:809, src/app/main/ui/settings/sidebar.cljs:136, src/app/main/ui/workspace/main_menu.cljs:205 msgid "labels.give-feedback" msgstr "給予迴響" @@ -1836,19 +1834,19 @@ msgstr "返回" msgid "labels.graphic-design" msgstr "平面設計" -#: src/app/main/ui/dashboard/sidebar.cljs:894, src/app/main/ui/workspace/main_menu.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1084, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1109, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295 +#: src/app/main/ui/dashboard/sidebar.cljs:792, src/app/main/ui/workspace/main_menu.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1085, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1110, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1296 msgid "labels.help-center" msgstr "説明中心" -#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73 +#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:74 msgid "labels.hide-resolved-comments" msgstr "隱藏已解決的評論" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:134 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:130 msgid "labels.import" msgstr "匯入" -#: src/app/main/ui/dashboard/team.cljs:1046 +#: src/app/main/ui/dashboard/team.cljs:1224 msgid "labels.inactive" msgstr "未啟用" @@ -1868,7 +1866,7 @@ msgstr "內部錯誤" msgid "labels.invision" msgstr "InVision 軟體" -#: src/app/main/ui/dashboard/sidebar.cljs:435, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108, src/app/main/ui/dashboard/team.cljs:784 +#: src/app/main/ui/dashboard/sidebar.cljs:436, src/app/main/ui/dashboard/team.cljs:102, src/app/main/ui/dashboard/team.cljs:110, src/app/main/ui/dashboard/team.cljs:944 msgid "labels.invitations" msgstr "邀請" @@ -1876,7 +1874,7 @@ msgstr "邀請" msgid "labels.language" msgstr "語言" -#: src/app/main/ui/dashboard/sidebar.cljs:917, src/app/main/ui/workspace/main_menu.cljs:140 +#: src/app/main/ui/workspace/main_menu.cljs:168 msgid "labels.libraries-and-templates" msgstr "圖庫與範本" @@ -1892,7 +1890,7 @@ msgstr "登錄或註冊" msgid "labels.login" msgstr "登入" -#: src/app/main/ui/dashboard/sidebar.cljs:941 +#: src/app/main/ui/dashboard/sidebar.cljs:1053 msgid "labels.logout" msgstr "登出" @@ -1900,11 +1898,11 @@ msgstr "登出" msgid "labels.marketing" msgstr "行銷" -#: src/app/main/ui/dashboard/team.cljs:510 +#: src/app/main/ui/dashboard/team.cljs:512 msgid "labels.member" msgstr "成員" -#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:98, src/app/main/ui/dashboard/team.cljs:106 +#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:100, src/app/main/ui/dashboard/team.cljs:108 msgid "labels.members" msgstr "成員" @@ -1912,15 +1910,15 @@ msgstr "成員" msgid "labels.new-password" msgstr "新密碼" -#: src/app/main/ui/dashboard/templates.cljs:293, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 +#: src/app/main/ui/dashboard/templates.cljs:301, src/app/main/ui/onboarding/questions.cljs:54, src/app/main/ui/viewer.cljs:112 msgid "labels.next" msgstr "下一個" -#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164 +#: src/app/main/ui/dashboard/comments.cljs:122, src/app/main/ui/workspace/comments.cljs:165 msgid "labels.no-comments-available" msgstr "你都瞭解了!新的評論通知將顯示在這裡。" -#: src/app/main/ui/dashboard/team.cljs:759 +#: src/app/main/ui/dashboard/team.cljs:737 msgid "labels.no-invitations" msgstr "沒有待處理的邀請。" @@ -1937,7 +1935,7 @@ msgstr "喔不!" msgid "labels.notifications" msgstr "通知" -#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1176 +#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1354 msgid "labels.num-of-files" msgid_plural "labels.num-of-files" msgstr[0] "%s 個檔案" @@ -1947,7 +1945,7 @@ msgid "labels.num-of-frames" msgid_plural "labels.num-of-frames" msgstr[0] "1 版面" -#: src/app/main/ui/dashboard/team.cljs:1171 +#: src/app/main/ui/dashboard/team.cljs:1349 msgid "labels.num-of-projects" msgid_plural "labels.num-of-projects" msgstr[0] "%s 個專案" @@ -1965,7 +1963,7 @@ msgstr "原有密碼" msgid "labels.only-yours" msgstr "只有你" -#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:338 +#: src/app/main/ui/comments.cljs:923, src/app/main/ui/comments.cljs:988, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:310, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:339 msgid "labels.options" msgstr "選項" @@ -1981,7 +1979,7 @@ msgstr "其他(請註明)" msgid "labels.other-short" msgstr "其他" -#: src/app/main/ui/dashboard/team.cljs:322, src/app/main/ui/dashboard/team.cljs:562, src/app/main/ui/dashboard/team.cljs:1157 +#: src/app/main/ui/dashboard/team.cljs:324, src/app/main/ui/dashboard/team.cljs:564, src/app/main/ui/dashboard/team.cljs:1335 msgid "labels.owner" msgstr "擁有者" @@ -1989,7 +1987,7 @@ msgstr "擁有者" msgid "labels.password" msgstr "密碼" -#: src/app/main/ui/dashboard/team.cljs:715 +#: src/app/main/ui/dashboard/team.cljs:669 msgid "labels.pending-invitation" msgstr "待辦" @@ -2013,11 +2011,11 @@ msgstr "產品管理" msgid "labels.profile" msgstr "個人檔案" -#: src/app/main/ui/dashboard/sidebar.cljs:717 +#: src/app/main/ui/dashboard/sidebar.cljs:718 msgid "labels.projects" msgstr "專案" -#: src/app/main/ui/dashboard/sidebar.cljs:909, src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:132 +#: src/app/main/ui/settings/sidebar.cljs:129, src/app/main/ui/workspace/main_menu.cljs:160 msgid "labels.release-notes" msgstr "更新日誌" @@ -2031,11 +2029,11 @@ msgstr "重新載入檔案" msgid "labels.remove" msgstr "移除" -#: src/app/main/ui/dashboard/team.cljs:353 +#: src/app/main/ui/dashboard/team.cljs:355 msgid "labels.remove-member" msgstr "移除團隊成員" -#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:452, src/app/main/ui/workspace/sidebar/assets/groups.cljs:166, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:61 +#: src/app/main/ui/dashboard/file_menu.cljs:281, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:453, src/app/main/ui/workspace/sidebar/assets/groups.cljs:167, src/app/main/ui/workspace/sidebar/versions.cljs:191, src/app/main/ui/workspace/tokens/sets/context_menu.cljs:63 msgid "labels.rename" msgstr "重新命名" @@ -2063,7 +2061,7 @@ msgstr "新回覆" msgid "labels.reply.thread" msgstr "回覆" -#: src/app/main/ui/dashboard/team.cljs:695 +#: src/app/main/ui/dashboard/team.cljs:938 msgid "labels.resend-invitation" msgstr "重新發送邀請" @@ -2075,15 +2073,15 @@ msgstr "還原" msgid "labels.retry" msgstr "重試" -#: src/app/main/ui/dashboard/team.cljs:511, src/app/main/ui/dashboard/team.cljs:785 +#: src/app/main/ui/dashboard/team.cljs:513, src/app/main/ui/dashboard/team.cljs:945 msgid "labels.role" msgstr "角色" -#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:203, src/app/main/ui/workspace/tokens/management/create/form.cljs:618, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 +#: src/app/main/ui/dashboard/fonts.cljs:393, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206, src/app/main/ui/workspace/tokens/management/create/form.cljs:637, src/app/main/ui/workspace/tokens/settings/menu.cljs:108 msgid "labels.save" msgstr "儲存" -#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:715 +#: src/app/main/ui/workspace/sidebar/layers.cljs:421, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:730 msgid "labels.search" msgstr "搜尋" @@ -2111,11 +2109,11 @@ msgstr "系統正在進行定期保養。" msgid "labels.service-unavailable.main-message" msgstr "暫停服務" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:79 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:75 msgid "labels.sets" msgstr "套" -#: src/app/main/ui/dashboard/sidebar.cljs:445, src/app/main/ui/dashboard/team.cljs:99, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 +#: src/app/main/ui/dashboard/sidebar.cljs:446, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:115, src/app/main/ui/settings/options.cljs:87, src/app/main/ui/settings/sidebar.cljs:109 msgid "labels.settings" msgstr "設定" @@ -2127,11 +2125,11 @@ msgstr "分享" msgid "labels.share-prototype" msgstr "分享原型" -#: src/app/main/ui/dashboard/sidebar.cljs:744 +#: src/app/main/ui/dashboard/sidebar.cljs:745 msgid "labels.shared-libraries" msgstr "檔案庫" -#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137 +#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:56, src/app/main/ui/workspace/comments.cljs:138 msgid "labels.show-all-comments" msgstr "顯示所有留言" @@ -2139,11 +2137,11 @@ msgstr "顯示所有留言" msgid "labels.show-comments-list" msgstr "顯示留言列表" -#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139 +#: src/app/main/ui/workspace/comments.cljs:68, src/app/main/ui/workspace/comments.cljs:140 msgid "labels.show-mentions" msgstr "僅顯示您的提及" -#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138 +#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:62, src/app/main/ui/workspace/comments.cljs:139 msgid "labels.show-your-comments" msgstr "僅顯示您的評論" @@ -2155,7 +2153,7 @@ msgstr "sketch" msgid "labels.start" msgstr "開始" -#: src/app/main/ui/dashboard/team.cljs:786 +#: src/app/main/ui/dashboard/team.cljs:954 msgid "labels.status" msgstr "狀態" @@ -2177,7 +2175,7 @@ msgstr "隊員" msgid "labels.themes" msgstr "佈景主題" -#: src/app/main/ui/dashboard/sidebar.cljs:904, src/app/main/ui/workspace/main_menu.cljs:124 +#: src/app/main/ui/workspace/main_menu.cljs:152 msgid "labels.tutorials" msgstr "教學" @@ -2205,15 +2203,15 @@ msgstr "上傳自訂字體" msgid "labels.uploading" msgstr "正在上傳…" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:245 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246 msgid "labels.view-only" msgstr "僅供查閱" -#: src/app/main/ui/dashboard/team.cljs:129, src/app/main/ui/dashboard/team.cljs:312, src/app/main/ui/dashboard/team.cljs:565, src/app/main/ui/dashboard/team.cljs:601, src/app/main/ui/onboarding/team_choice.cljs:56 +#: src/app/main/ui/dashboard/team.cljs:131, src/app/main/ui/dashboard/team.cljs:314, src/app/main/ui/dashboard/team.cljs:567, src/app/main/ui/dashboard/team.cljs:603, src/app/main/ui/onboarding/team_choice.cljs:56 msgid "labels.viewer" msgstr "檢視者" -#: src/app/main/ui/dashboard/sidebar.cljs:440, src/app/main/ui/dashboard/team.cljs:101, src/app/main/ui/dashboard/team.cljs:111, src/app/main/ui/dashboard/team.cljs:956 +#: src/app/main/ui/dashboard/sidebar.cljs:441, src/app/main/ui/dashboard/team.cljs:103, src/app/main/ui/dashboard/team.cljs:113, src/app/main/ui/dashboard/team.cljs:1134 msgid "labels.webhooks" msgstr "Webhook" @@ -2221,11 +2219,11 @@ msgstr "Webhook" msgid "labels.write-new-comment" msgstr "撰寫新留言" -#: src/app/main/ui/dashboard/team.cljs:266 +#: src/app/main/ui/dashboard/team.cljs:268 msgid "labels.you" msgstr "(你)" -#: src/app/main/ui/dashboard/sidebar.cljs:886 +#: src/app/main/ui/dashboard/sidebar.cljs:1006 msgid "labels.your-account" msgstr "你的帳戶" @@ -2234,23 +2232,23 @@ msgstr "你的帳戶" msgid "labels.youtube" msgstr "YouTube" -#: src/app/main/ui/workspace/colorpicker.cljs:449, src/app/main/ui/workspace/colorpicker.cljs:450, src/app/main/ui/workspace/colorpicker.cljs:452 +#: src/app/main/ui/workspace/colorpicker.cljs:486, src/app/main/ui/workspace/colorpicker.cljs:487, src/app/main/ui/workspace/colorpicker.cljs:489 msgid "media.choose-image" msgstr "選擇圖片" -#: src/app/main/ui/workspace/colorpicker.cljs:244 +#: src/app/main/ui/workspace/colorpicker.cljs:256 msgid "media.gradient" msgstr "坡度" -#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:44, src/app/main/ui/ds/utilities/swatch.cljs:57, src/app/main/ui/inspect/attributes/common.cljs:63, src/app/main/ui/workspace/colorpicker.cljs:246, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:251 +#: src/app/main/data/workspace/media.cljs:270, src/app/main/ui/components/color_bullet.cljs:33, src/app/main/ui/components/color_bullet.cljs:46, src/app/main/ui/ds/utilities/swatch.cljs:45, src/app/main/ui/ds/utilities/swatch.cljs:58, src/app/main/ui/inspect/attributes/common.cljs:44, src/app/main/ui/inspect/styles/rows/color_properties_row.cljs:65, src/app/main/ui/workspace/colorpicker.cljs:258, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:395 msgid "media.image" msgstr "圖片" -#: src/app/main/ui/inspect/attributes/common.cljs:74 +#: src/app/main/ui/inspect/attributes/common.cljs:55 msgid "media.image.short" msgstr "圖" -#: src/app/main/ui/workspace/colorpicker.cljs:442 +#: src/app/main/ui/workspace/colorpicker.cljs:479 msgid "media.keep-aspect-ratio" msgstr "維持長寬比" @@ -2268,7 +2266,7 @@ msgstr "正在載入圖片…" msgid "media.radial" msgstr "放射狀的" -#: src/app/main/ui/workspace/colorpicker.cljs:242 +#: src/app/main/ui/workspace/colorpicker.cljs:254 msgid "media.solid" msgstr "實心的" @@ -2336,19 +2334,19 @@ msgstr "建立權杖(token)" msgid "modals.create-access-token.title" msgstr "產生存取權杖(token)" -#: src/app/main/ui/dashboard/team.cljs:949 +#: src/app/main/ui/dashboard/team.cljs:1127 msgid "modals.create-webhook.submit-label" msgstr "設置Webhook" -#: src/app/main/ui/dashboard/team.cljs:914 +#: src/app/main/ui/dashboard/team.cljs:1092 msgid "modals.create-webhook.title" msgstr "設置Webhook" -#: src/app/main/ui/dashboard/team.cljs:925 +#: src/app/main/ui/dashboard/team.cljs:1103 msgid "modals.create-webhook.url.label" msgstr "訊息負載網址" -#: src/app/main/ui/dashboard/team.cljs:926 +#: src/app/main/ui/dashboard/team.cljs:1104 msgid "modals.create-webhook.url.placeholder" msgstr "https://example.com/postreceive" @@ -2392,11 +2390,11 @@ msgstr "您確定要刪除此對話嗎?此主題下的所有留言都將被刪 msgid "modals.delete-comment-thread.title" msgstr "刪除對話" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:155 msgid "modals.delete-component-annotation.message" msgstr "您確實要刪除該註釋嗎?" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:154 msgid "modals.delete-component-annotation.title" msgstr "刪除註釋" @@ -2440,11 +2438,11 @@ msgstr "您確實要刪除該字體嗎?如果在文件中使用,它將不會 msgid "modals.delete-font.title" msgstr "刪除字型" -#: src/app/main/ui/workspace/context_menu.cljs:670, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 +#: src/app/main/ui/workspace/context_menu.cljs:673, src/app/main/ui/workspace/sidebar/sitemap.cljs:72 msgid "modals.delete-page.body" msgstr "您確定要刪除這個頁面嗎?" -#: src/app/main/ui/workspace/context_menu.cljs:669, src/app/main/ui/workspace/sidebar/sitemap.cljs:70 +#: src/app/main/ui/workspace/context_menu.cljs:672, src/app/main/ui/workspace/sidebar/sitemap.cljs:71 msgid "modals.delete-page.title" msgstr "刪除頁面" @@ -2485,27 +2483,27 @@ msgid "modals.delete-shared-confirm.title" msgid_plural "modals.delete-shared-confirm.title" msgstr[0] "刪除文件" -#: src/app/main/ui/dashboard/sidebar.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:425 msgid "modals.delete-team-confirm.accept" msgstr "刪除團體" -#: src/app/main/ui/dashboard/sidebar.cljs:423 +#: src/app/main/ui/dashboard/sidebar.cljs:424 msgid "modals.delete-team-confirm.message" msgstr "您確定要刪除該團隊嗎?與團隊相關的所有專案和文件將永久刪除。" -#: src/app/main/ui/dashboard/sidebar.cljs:422 +#: src/app/main/ui/dashboard/sidebar.cljs:423 msgid "modals.delete-team-confirm.title" msgstr "正在刪除團體" -#: src/app/main/ui/dashboard/team.cljs:459 +#: src/app/main/ui/dashboard/team.cljs:461 msgid "modals.delete-team-member-confirm.accept" msgstr "刪除成員" -#: src/app/main/ui/dashboard/team.cljs:458 +#: src/app/main/ui/dashboard/team.cljs:460 msgid "modals.delete-team-member-confirm.message" msgstr "您確定要從團隊中刪除該成員嗎?" -#: src/app/main/ui/dashboard/team.cljs:457 +#: src/app/main/ui/dashboard/team.cljs:459 msgid "modals.delete-team-member-confirm.title" msgstr "刪除團隊成員" @@ -2514,51 +2512,51 @@ msgid "modals.delete-unpublish-shared-confirm.activated.hint" msgid_plural "modals.delete-unpublish-shared-confirm.activated.hint" msgstr[0] "此文件中已使用的資產將保留在那裡(不會破壞任何設計)。" -#: src/app/main/ui/dashboard/team.cljs:1019 +#: src/app/main/ui/dashboard/team.cljs:1197 msgid "modals.delete-webhook.accept" msgstr "刪除 webhook" -#: src/app/main/ui/dashboard/team.cljs:1018 +#: src/app/main/ui/dashboard/team.cljs:1196 msgid "modals.delete-webhook.message" msgstr "您確定要刪除此 webhook 嗎?" -#: src/app/main/ui/dashboard/team.cljs:1017 +#: src/app/main/ui/dashboard/team.cljs:1195 msgid "modals.delete-webhook.title" msgstr "刪除 Webhook" -#: src/app/main/ui/dashboard/team.cljs:948 +#: src/app/main/ui/dashboard/team.cljs:1126 msgid "modals.edit-webhook.submit-label" msgstr "修改 Webhook" -#: src/app/main/ui/dashboard/team.cljs:913 +#: src/app/main/ui/dashboard/team.cljs:1091 msgid "modals.edit-webhook.title" msgstr "修改 Webhook" -#: src/app/main/ui/dashboard/team.cljs:247 +#: src/app/main/ui/dashboard/team.cljs:249 msgid "modals.invite-member-confirm.accept" msgstr "發送邀請" -#: src/app/main/ui/dashboard/team.cljs:243, src/app/main/ui/onboarding/team_choice.cljs:203 +#: src/app/main/ui/dashboard/team.cljs:245, src/app/main/ui/onboarding/team_choice.cljs:203 msgid "modals.invite-member.emails" msgstr "電子郵件,以逗號分隔" -#: src/app/main/ui/dashboard/team.cljs:227 +#: src/app/main/ui/dashboard/team.cljs:229 msgid "modals.invite-member.repeated-invitation" msgstr "有些電子郵件來自現任團隊成員。他們的邀請將不會被發送。" -#: src/app/main/ui/dashboard/team.cljs:220 +#: src/app/main/ui/dashboard/team.cljs:222 msgid "modals.invite-team-member.text" msgstr "您可以邀請成員加入團隊,以便他們可以存取此文件和所有團隊文件。" -#: src/app/main/ui/dashboard/team.cljs:216 +#: src/app/main/ui/dashboard/team.cljs:218 msgid "modals.invite-team-member.title" msgstr "邀請成員加入團隊" -#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:425 +#: src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:427 msgid "modals.leave-and-close-confirm.hint" msgstr "由於您是該團隊的唯一成員,因此該團隊及其專案和文件將一起被刪除。" -#: src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:424 +#: src/app/main/ui/dashboard/sidebar.cljs:412, src/app/main/ui/dashboard/team.cljs:426 msgid "modals.leave-and-close-confirm.message" msgstr "您確定要離開 %s 團隊嗎?" @@ -2582,15 +2580,15 @@ msgstr "選擇要上位的會員" msgid "modals.leave-and-reassign.title" msgstr "離開前" -#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/sidebar.cljs:413, src/app/main/ui/dashboard/team.cljs:426, src/app/main/ui/dashboard/team.cljs:448 +#: src/app/main/ui/dashboard/sidebar.cljs:392, src/app/main/ui/dashboard/sidebar.cljs:414, src/app/main/ui/dashboard/team.cljs:428, src/app/main/ui/dashboard/team.cljs:450 msgid "modals.leave-confirm.accept" msgstr "離開團隊" -#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/team.cljs:447 +#: src/app/main/ui/dashboard/sidebar.cljs:391, src/app/main/ui/dashboard/team.cljs:449 msgid "modals.leave-confirm.message" msgstr "您確定要離開這個團隊嗎?" -#: src/app/main/ui/dashboard/sidebar.cljs:389, src/app/main/ui/dashboard/sidebar.cljs:410, src/app/main/ui/dashboard/team.cljs:423, src/app/main/ui/dashboard/team.cljs:446 +#: src/app/main/ui/dashboard/sidebar.cljs:390, src/app/main/ui/dashboard/sidebar.cljs:411, src/app/main/ui/dashboard/team.cljs:425, src/app/main/ui/dashboard/team.cljs:448 msgid "modals.leave-confirm.title" msgstr "正在離開團隊" @@ -2609,35 +2607,35 @@ msgid "modals.move-shared-confirm.title" msgid_plural "modals.move-shared-confirm.title" msgstr[0] "移動圖庫" -#: src/app/main/ui/workspace/main_menu.cljs:274, src/app/main/ui/workspace/nudge.cljs:46 +#: src/app/main/ui/workspace/main_menu.cljs:302, src/app/main/ui/workspace/nudge.cljs:46 msgid "modals.nudge-title" msgstr "微調量" -#: src/app/main/ui/dashboard/team.cljs:378 +#: src/app/main/ui/dashboard/team.cljs:380 msgid "modals.promote-owner-confirm.accept" msgstr "轉讓所有權" -#: src/app/main/ui/dashboard/team.cljs:377 +#: src/app/main/ui/dashboard/team.cljs:379 msgid "modals.promote-owner-confirm.hint" msgstr "如果您轉移所有權,您的角色將變為管理員,並失去對該團隊的一些權限。 " -#: src/app/main/ui/dashboard/team.cljs:376 +#: src/app/main/ui/dashboard/team.cljs:378 msgid "modals.promote-owner-confirm.message" msgstr "您是此團隊的當前擁有者。您是否確實要使 %s 成為團隊的新擁有者?" -#: src/app/main/ui/dashboard/team.cljs:375 +#: src/app/main/ui/dashboard/team.cljs:377 msgid "modals.promote-owner-confirm.title" msgstr "新團隊老大" -#: src/app/main/ui/workspace/libraries.cljs:270 +#: src/app/main/ui/workspace/libraries.cljs:295 msgid "modals.publish-empty-library.accept" msgstr "發布" -#: src/app/main/ui/workspace/libraries.cljs:269 +#: src/app/main/ui/workspace/libraries.cljs:294 msgid "modals.publish-empty-library.message" msgstr "你的圖庫是空的。您確定要發布它嗎?" -#: src/app/main/ui/workspace/libraries.cljs:268 +#: src/app/main/ui/workspace/libraries.cljs:293 msgid "modals.publish-empty-library.title" msgstr "發布空圖庫" @@ -2685,19 +2683,19 @@ msgstr "您即將更新共用圖庫中的元件。這可能會影響使用它的 msgid "modals.update-remote-component-in-bulk.message" msgstr "更新共用圖庫中的元件" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:424 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 msgid "modals.update-remote-component.accept" msgstr "更新" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:423 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 msgid "modals.update-remote-component.cancel" msgstr "取消" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:422 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 msgid "modals.update-remote-component.hint" msgstr "您即將更新共用圖庫中的元件。這可能會影響使用它的其他文件。" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:421 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:420 msgid "modals.update-remote-component.message" msgstr "更新共用圖庫中的元件" @@ -2801,11 +2799,11 @@ msgstr "中斷維護:我們將在5分鐘內進行短暫維護。" msgid "notifications.by-code.upgrade-version" msgstr "有新版本可用,請重新整理頁面" -#: src/app/main/ui/dashboard/team.cljs:168, src/app/main/ui/dashboard/team.cljs:645 +#: src/app/main/ui/dashboard/team.cljs:170, src/app/main/ui/dashboard/team.cljs:867 msgid "notifications.invitation-email-sent" msgstr "邀請已成功發送" -#: src/app/main/ui/dashboard/team.cljs:666 +#: src/app/main/ui/dashboard/team.cljs:635 msgid "notifications.invitation-link-copied" msgstr "邀請連結已複製" @@ -2934,7 +2932,7 @@ msgstr "邀請成員" msgid "onboarding.choice.team-up.invite-members-info" msgstr "記得把每個人都包括在內。開發人員、設計師、經理......多元化加起來:)" -#: src/app/main/ui/dashboard/team.cljs:232, src/app/main/ui/onboarding/team_choice.cljs:194 +#: src/app/main/ui/dashboard/team.cljs:234, src/app/main/ui/onboarding/team_choice.cljs:194 msgid "onboarding.choice.team-up.roles" msgstr "邀請角色:" @@ -3147,665 +3145,649 @@ msgstr "Penpot" msgid "profile.recovery.go-to-login" msgstr "前往登入" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:366 msgid "settings.detach" msgstr "分離" -#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:376, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:967, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1181, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:206, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:360, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:404, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:415, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:462, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:345, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:259, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173 +#: src/app/main/ui/inspect/exports.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:377, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:454, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:987, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1216, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:137, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:223, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:246, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:346, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:361, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:112, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:513, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:524, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:567, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:578, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:607, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:331, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:382, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:414, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:214 msgid "settings.multiple" msgstr "混合" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:283 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:423 msgid "settings.remove-color" msgstr "移除顏色" -#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:288 +#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:428 msgid "settings.select-this-color" msgstr "使用此樣式選擇項目" # SECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:409 msgid "shortcut-section.basics" msgstr "基本" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415 msgid "shortcut-section.dashboard" msgstr "儀表板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:424 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 msgid "shortcut-section.viewer" msgstr "檢視者" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:418 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:412 msgid "shortcut-section.workspace" msgstr "工作區" # SUBSECTIONS -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 msgid "shortcut-subsection.alignment" msgstr "對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 msgid "shortcut-subsection.edit" msgstr "編輯" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 msgid "shortcut-subsection.general-dashboard" msgstr "一般" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 msgid "shortcut-subsection.general-viewer" msgstr "一般" -#: src/app/main/ui/workspace/main_menu.cljs:845, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60 +#: src/app/main/ui/workspace/main_menu.cljs:873, src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 msgid "shortcut-subsection.main-menu" msgstr "主功能表" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 msgid "shortcut-subsection.modify-layers" msgstr "修改圖層" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 msgid "shortcut-subsection.navigation-dashboard" msgstr "導航" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 msgid "shortcut-subsection.navigation-viewer" msgstr "導航" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 msgid "shortcut-subsection.navigation-workspace" msgstr "導航" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 msgid "shortcut-subsection.panels" msgstr "面板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 msgid "shortcut-subsection.path-editor" msgstr "路徑" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 msgid "shortcut-subsection.shape" msgstr "形狀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 msgid "shortcut-subsection.text-editor" msgstr "文字" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 msgid "shortcut-subsection.tools" msgstr "工具" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:70 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 msgid "shortcut-subsection.zoom-viewer" msgstr "縮放" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:71 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 msgid "shortcut-subsection.zoom-workspace" msgstr "縮放" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:72 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 msgid "shortcuts.add-comment" msgstr "評論" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 msgid "shortcuts.add-node" msgstr "新增節點" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 msgid "shortcuts.align-bottom" msgstr "底部對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 msgid "shortcuts.align-center" msgstr "居中對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 msgid "shortcuts.align-hcenter" msgstr "水平居中對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 msgid "shortcuts.align-justify" msgstr "兩端對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 msgid "shortcuts.align-left" msgstr "左對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 msgid "shortcuts.align-right" msgstr "右對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 msgid "shortcuts.align-top" msgstr "頂部對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 msgid "shortcuts.align-vcenter" msgstr "垂直居中對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 msgid "shortcuts.artboard-selection" msgstr "從選擇中建立板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 msgid "shortcuts.bold" msgstr "切換粗體" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 msgid "shortcuts.bool-difference" msgstr "布林差集" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 msgid "shortcuts.bool-exclude" msgstr "布林排除" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 msgid "shortcuts.bool-intersection" msgstr "布林交集" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 msgid "shortcuts.bool-union" msgstr "布林聯集" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 msgid "shortcuts.bring-back" msgstr "置於最底層" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 msgid "shortcuts.bring-backward" msgstr "向後發送" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 msgid "shortcuts.bring-forward" msgstr "向前移動" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 msgid "shortcuts.bring-front" msgstr "置於最前面" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 msgid "shortcuts.clear-undo" msgstr "清除undo" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95 msgid "shortcuts.copy" msgstr "複製" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 msgid "shortcuts.copy-link" msgstr "將連結複製到剪貼簿" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 msgid "shortcuts.create-new-project" msgstr "建立新的" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 msgid "shortcuts.cut" msgstr "剪下" -#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98 +#: src/app/main/ui/workspace/right_header.cljs:85, src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 msgid "shortcuts.decrease-zoom" msgstr "縮小" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 msgid "shortcuts.delete" msgstr "刪除" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 msgid "shortcuts.delete-node" msgstr "刪除節點" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 msgid "shortcuts.detach-component" msgstr "分離元件" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 msgid "shortcuts.draw-curve" msgstr "曲線" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 msgid "shortcuts.draw-ellipse" msgstr "橢圓" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 msgid "shortcuts.draw-frame" msgstr "畫板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 msgid "shortcuts.draw-nodes" msgstr "繪製路徑" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 msgid "shortcuts.draw-path" msgstr "路徑" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:107 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 msgid "shortcuts.draw-rect" msgstr "矩形" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:108 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 msgid "shortcuts.draw-text" msgstr "文字" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:109 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 msgid "shortcuts.duplicate" msgstr "複本" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:110 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 msgid "shortcuts.escape" msgstr "取消" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 msgid "shortcuts.export-shapes" msgstr "匯出形狀" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 msgid "shortcuts.fit-all" msgstr "縮放以適合全部" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 msgid "shortcuts.flip-horizontal" msgstr "水平翻轉" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 msgid "shortcuts.flip-vertical" msgstr "垂直翻轉" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 msgid "shortcuts.font-size-dec" msgstr "減小字體大小" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 msgid "shortcuts.font-size-inc" msgstr "增加字體大小" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 msgid "shortcuts.go-to-drafts" msgstr "轉至草稿" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 msgid "shortcuts.go-to-libs" msgstr "轉至共享圖庫" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 msgid "shortcuts.go-to-search" msgstr "搜尋" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:120 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 msgid "shortcuts.group" msgstr "群組" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 msgid "shortcuts.h-distribute" msgstr "水平分佈" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 msgid "shortcuts.hide-ui" msgstr "顯示/隱藏 UI" -#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123 +#: src/app/main/ui/workspace/right_header.cljs:90, src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 msgid "shortcuts.increase-zoom" msgstr "放大" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 msgid "shortcuts.insert-image" msgstr "插入圖片" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 msgid "shortcuts.italic" msgstr "切換斜體" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 msgid "shortcuts.join-nodes" msgstr "加入節點" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:127 -msgid "shortcuts.letter-spacing-dec" -msgstr "減少字母間距" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:128 -msgid "shortcuts.letter-spacing-inc" -msgstr "增加字母間距" - #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:129 -msgid "shortcuts.line-height-dec" -msgstr "減少行高" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 -msgid "shortcuts.line-height-inc" -msgstr "增加行高" - -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.line-through" msgstr "切換刪除線" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130 msgid "shortcuts.make-corner" msgstr "製作轉角" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131 msgid "shortcuts.make-curve" msgstr "製作曲線" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:132 msgid "shortcuts.mask" msgstr "遮罩" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133 msgid "shortcuts.merge-nodes" msgstr "合併節點" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134 msgid "shortcuts.move" msgstr "移動" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135 msgid "shortcuts.move-fast-down" msgstr "快速向下移動" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136 msgid "shortcuts.move-fast-left" msgstr "快速向左移動" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137 msgid "shortcuts.move-fast-right" msgstr "快速向右移動" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138 msgid "shortcuts.move-fast-up" msgstr "快速上升" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139 msgid "shortcuts.move-nodes" msgstr "移動節點" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140 msgid "shortcuts.move-unit-down" msgstr "下移" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141 msgid "shortcuts.move-unit-left" msgstr "向左移動" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142 msgid "shortcuts.move-unit-right" msgstr "右移" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143 msgid "shortcuts.move-unit-up" msgstr "向上移動" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144 msgid "shortcuts.next-frame" msgstr "下一個畫板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:513 msgid "shortcuts.not-found" msgstr "未找到快捷方式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145 msgid "shortcuts.opacity-0" msgstr "將不透明度設為 100%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146 msgid "shortcuts.opacity-1" msgstr "將不透明度設為 10%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147 msgid "shortcuts.opacity-2" msgstr "將不透明度設為 20%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148 msgid "shortcuts.opacity-3" msgstr "將不透明度設為 30%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149 msgid "shortcuts.opacity-4" msgstr "將不透明度設為 40%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150 msgid "shortcuts.opacity-5" msgstr "將不透明度設為 50%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151 msgid "shortcuts.opacity-6" msgstr "將不透明度設為 60%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152 msgid "shortcuts.opacity-7" msgstr "將不透明度設為 70%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153 msgid "shortcuts.opacity-8" msgstr "將不透明度設為 80%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154 msgid "shortcuts.opacity-9" msgstr "將不透明度設為 90%" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155 msgid "shortcuts.open-color-picker" msgstr "顏色選擇器" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156 msgid "shortcuts.open-comments" msgstr "前往查看者留言區" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157 msgid "shortcuts.open-dashboard" msgstr "轉至儀表板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158 msgid "shortcuts.open-inspect" msgstr "進入查看者檢查區塊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159 msgid "shortcuts.open-interactions" msgstr "進入查看者互動區" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160 msgid "shortcuts.open-viewer" msgstr "進入查看者互動區" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161 msgid "shortcuts.open-workspace" msgstr "轉至工作區" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:255 msgid "shortcuts.or" msgstr " 或 " -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162 msgid "shortcuts.paste" msgstr "貼上" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163 msgid "shortcuts.prev-frame" msgstr "上一個畫板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164 msgid "shortcuts.redo" msgstr "復原" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165 msgid "shortcuts.rename" msgstr "重新命名" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166 msgid "shortcuts.reset-zoom" msgstr "重置縮放" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167 msgid "shortcuts.scale" msgstr "縮放" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168 msgid "shortcuts.search-placeholder" msgstr "搜尋快捷鍵" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169 msgid "shortcuts.select-all" msgstr "全選" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170 msgid "shortcuts.select-next" msgstr "選取下一層" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171 msgid "shortcuts.select-parent-layer" msgstr "選取父層" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172 msgid "shortcuts.select-prev" msgstr "選取前一層" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173 msgid "shortcuts.separate-nodes" msgstr "分離節點" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174 msgid "shortcuts.show-pixel-grid" msgstr "顯示/隱藏像素格線" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175 msgid "shortcuts.show-shortcuts" msgstr "顯示/隱藏快捷方式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176 msgid "shortcuts.snap-nodes" msgstr "對齊到節點" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177 msgid "shortcuts.snap-pixel-grid" msgstr "對齊到像素網格" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178 msgid "shortcuts.start-editing" msgstr "開始編輯" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179 msgid "shortcuts.start-measure" msgstr "開始測量" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180 msgid "shortcuts.stop-measure" msgstr "停止測量" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181 msgid "shortcuts.thumbnail-set" msgstr "設定縮圖" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:491, src/app/main/ui/workspace/sidebar/shortcuts.cljs:502 msgid "shortcuts.title" msgstr "鍵盤快速鍵" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182 msgid "shortcuts.toggle-alignment" msgstr "切換動態對齊" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183 msgid "shortcuts.toggle-assets" msgstr "切換資產" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184 msgid "shortcuts.toggle-colorpalette" msgstr "切換調色板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185 msgid "shortcuts.toggle-focus-mode" msgstr "切換專注模式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186 msgid "shortcuts.toggle-fullscreen" msgstr "切換全螢幕" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187 msgid "shortcuts.toggle-guides" msgstr "顯示/隱藏導引線" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188 msgid "shortcuts.toggle-history" msgstr "切換歷史記錄" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189 msgid "shortcuts.toggle-layers" msgstr "切換圖層" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190 msgid "shortcuts.toggle-layout-flex" msgstr "新增/移除彈性佈局" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:191 msgid "shortcuts.toggle-layout-grid" msgstr "新增/移除網格佈局" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192 msgid "shortcuts.toggle-lock" msgstr "鎖定選擇" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193 msgid "shortcuts.toggle-lock-size" msgstr "鎖定比例" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194 msgid "shortcuts.toggle-rulers" msgstr "顯示/隱藏尺規" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:195 msgid "shortcuts.toggle-snap-guides" msgstr "對齊到導引線" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196 msgid "shortcuts.toggle-snap-ruler-guide" msgstr "對齊到標尺指導線" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197 msgid "shortcuts.toggle-textpalette" msgstr "切換文字調色板" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198 msgid "shortcuts.toggle-theme" msgstr "更改主題" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199 msgid "shortcuts.toggle-visibility" msgstr "顯示 / 隱藏" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 msgid "shortcuts.toggle-zoom-style" msgstr "切換縮放模式" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201 msgid "shortcuts.underline" msgstr "顯示/隱藏底線" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 msgid "shortcuts.undo" msgstr "撤回" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203 msgid "shortcuts.ungroup" msgstr "取消群組" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204 msgid "shortcuts.unmask" msgstr "解除遮罩" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205 msgid "shortcuts.v-distribute" msgstr "垂直分佈" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206 msgid "shortcuts.zoom-lense-decrease" msgstr "縮小焦距" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207 msgid "shortcuts.zoom-lense-increase" msgstr "放大焦距" -#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214 +#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208 msgid "shortcuts.zoom-selected" msgstr "縮放至選取範圍" @@ -3861,19 +3843,19 @@ msgstr "密碼 - Penpot" msgid "title.settings.profile" msgstr "個人資料 - Penpot" -#: src/app/main/ui/dashboard/team.cljs:803 +#: src/app/main/ui/dashboard/team.cljs:981 msgid "title.team-invitations" msgstr "邀請 - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:533 +#: src/app/main/ui/dashboard/team.cljs:535 msgid "title.team-members" msgstr "成員 - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1118 +#: src/app/main/ui/dashboard/team.cljs:1296 msgid "title.team-settings" msgstr "設定 - %s - Penpot" -#: src/app/main/ui/dashboard/team.cljs:1071 +#: src/app/main/ui/dashboard/team.cljs:1249 msgid "title.team-webhooks" msgstr "Webhooks - %s - Penpot" @@ -3943,43 +3925,43 @@ msgstr "點擊時顯示互動" msgid "viewer.header.sitemap" msgstr "網站地圖" -#: src/app/main/ui/dashboard/team.cljs:1025 +#: src/app/main/ui/dashboard/team.cljs:1203 msgid "webhooks.last-delivery.success" msgstr "上次交付成功。" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:59 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:56 msgid "workspace.align.hcenter" msgstr "水平居中對齊 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:75 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:72 msgid "workspace.align.hdistribute" msgstr "水平間距分佈 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:48 msgid "workspace.align.hleft" msgstr "左對齊 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:67 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:64 msgid "workspace.align.hright" msgstr "右對齊 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:100 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:97 msgid "workspace.align.vbottom" msgstr "底部對齊 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:92 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:89 msgid "workspace.align.vcenter" msgstr "垂直居中對齊 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:102 msgid "workspace.align.vdistribute" msgstr "垂直間距分佈 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:84 +#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:81 msgid "workspace.align.vtop" msgstr "頂部對齊 (%s)" -#: src/app/main/ui/workspace/sidebar/assets.cljs:163 +#: src/app/main/ui/workspace/sidebar/assets.cljs:172 msgid "workspace.assets.add-library" msgstr "新增圖庫" @@ -3988,19 +3970,19 @@ msgstr "新增圖庫" msgid "workspace.assets.assets" msgstr "資產" -#: src/app/main/ui/workspace/sidebar/assets.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets.cljs:152 msgid "workspace.assets.box-filter-all" msgstr "所有資源" -#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:485, src/app/main/ui/workspace/sidebar/assets.cljs:148 +#: src/app/main/ui/dashboard/grid.cljs:148, src/app/main/ui/dashboard/grid.cljs:180, src/app/main/ui/workspace/sidebar/assets/colors.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:158 msgid "workspace.assets.colors" msgstr "顏色" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:493 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:497 msgid "workspace.assets.colors.add-color" msgstr "新增顏色" -#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:144 +#: src/app/main/ui/dashboard/grid.cljs:144, src/app/main/ui/dashboard/grid.cljs:159, src/app/main/ui/workspace/sidebar/assets/components.cljs:560, src/app/main/ui/workspace/sidebar/assets.cljs:155 msgid "workspace.assets.components" msgstr "元件" @@ -4008,19 +3990,19 @@ msgstr "元件" msgid "workspace.assets.components.add-component" msgstr "新增元件" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:140 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 msgid "workspace.assets.create-group" msgstr "建立群組" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:152 msgid "workspace.assets.create-group-hint" msgstr "您的項目將自動命名為「群組名稱 / 項目名稱」" -#: src/app/main/ui/workspace/context_menu.cljs:679, src/app/main/ui/workspace/sidebar/assets/colors.cljs:249, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442 +#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:251, src/app/main/ui/workspace/sidebar/assets/components.cljs:641, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:443 msgid "workspace.assets.delete" msgstr "刪除" -#: src/app/main/ui/workspace/context_menu.cljs:684 +#: src/app/main/ui/workspace/context_menu.cljs:687 msgid "workspace.assets.duplicate" msgstr "複本" @@ -4028,11 +4010,11 @@ msgstr "複本" msgid "workspace.assets.duplicate-main" msgstr "複製主要資源" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:245, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:247, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:439 msgid "workspace.assets.edit" msgstr "編輯" -#: src/app/main/ui/workspace/sidebar/assets.cljs:177 +#: src/app/main/ui/workspace/sidebar/assets.cljs:186 msgid "workspace.assets.filter" msgstr "篩選資源" @@ -4041,23 +4023,23 @@ msgstr "篩選資源" msgid "workspace.assets.graphics" msgstr "圖形" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:576 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:190, src/app/main/ui/workspace/sidebar/assets/components.cljs:576 msgid "workspace.assets.grid-view" msgstr "網格視圖" -#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:253, src/app/main/ui/workspace/sidebar/assets/components.cljs:629, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447 +#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:255, src/app/main/ui/workspace/sidebar/assets/components.cljs:625, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:448 msgid "workspace.assets.group" msgstr "群組" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:150 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:151 msgid "workspace.assets.group-name" msgstr "群組名稱" -#: src/app/main/ui/workspace/sidebar/assets/components.cljs:572 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:191, src/app/main/ui/workspace/sidebar/assets/components.cljs:572 msgid "workspace.assets.list-view" msgstr "列表視圖" -#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:617 +#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:108, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:631 msgid "workspace.assets.local-library" msgstr "本地圖庫" @@ -4069,15 +4051,15 @@ msgstr "未找到資源" msgid "workspace.assets.open-library" msgstr "開啟圖庫檔案" -#: src/app/main/ui/workspace/context_menu.cljs:682, src/app/main/ui/workspace/sidebar/assets/colors.cljs:241, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:66, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433 +#: src/app/main/ui/workspace/context_menu.cljs:685, src/app/main/ui/workspace/sidebar/assets/colors.cljs:243, src/app/main/ui/workspace/sidebar/assets/components.cljs:616, src/app/main/ui/workspace/sidebar/assets/groups.cljs:67, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:434 msgid "workspace.assets.rename" msgstr "重新命名" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:141 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:142 msgid "workspace.assets.rename-group" msgstr "重新命名群組" -#: src/app/main/ui/workspace/sidebar/assets.cljs:174 +#: src/app/main/ui/workspace/sidebar/assets.cljs:183 msgid "workspace.assets.search" msgstr "搜尋資源" @@ -4092,20 +4074,20 @@ msgstr[0] "選取了 %s 項目" msgid "workspace.assets.shared-library" msgstr "共享圖庫" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:237 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235 msgid "workspace.assets.sidebar.components" msgid_plural "workspace.assets.sidebar.components" msgstr[0] "1個元件" -#: src/app/main/ui/workspace/sidebar/assets.cljs:193 +#: src/app/main/ui/workspace/sidebar/assets.cljs:204 msgid "workspace.assets.sort" msgstr "排序" -#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:152 +#: src/app/main/ui/dashboard/grid.cljs:152, src/app/main/ui/dashboard/grid.cljs:207, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:397, src/app/main/ui/workspace/sidebar/assets.cljs:161 msgid "workspace.assets.typography" msgstr "字體排版設計" -#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404 +#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:405 msgid "workspace.assets.typography.add-typography" msgstr "新增字體排版" @@ -4130,7 +4112,7 @@ msgstr "字距" msgid "workspace.assets.typography.line-height" msgstr "行高" -#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:546, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 +#: src/app/main/ui/dashboard/grid.cljs:217, src/app/main/ui/workspace/libraries.cljs:579, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:480, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:506, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:613, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:633 msgid "workspace.assets.typography.sample" msgstr "Ag" @@ -4142,59 +4124,59 @@ msgstr "文字樣式" msgid "workspace.assets.typography.text-transform" msgstr "文字變換" -#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:69 +#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:70 msgid "workspace.assets.ungroup" msgstr "取消群組" -#: src/app/main/ui/workspace/context_menu.cljs:791 +#: src/app/main/ui/workspace/context_menu.cljs:794 msgid "workspace.context-menu.grid-cells.area" msgstr "建立區域" -#: src/app/main/ui/workspace/context_menu.cljs:794 +#: src/app/main/ui/workspace/context_menu.cljs:797 msgid "workspace.context-menu.grid-cells.create-board" msgstr "建立版面" -#: src/app/main/ui/workspace/context_menu.cljs:786 +#: src/app/main/ui/workspace/context_menu.cljs:789 msgid "workspace.context-menu.grid-cells.merge" msgstr "合併單元格" -#: src/app/main/ui/workspace/context_menu.cljs:749 +#: src/app/main/ui/workspace/context_menu.cljs:752 msgid "workspace.context-menu.grid-track.column.add-after" msgstr "在右邊新增 1 列" -#: src/app/main/ui/workspace/context_menu.cljs:748 +#: src/app/main/ui/workspace/context_menu.cljs:751 msgid "workspace.context-menu.grid-track.column.add-before" msgstr "在左邊新增 1 列" -#: src/app/main/ui/workspace/context_menu.cljs:750 +#: src/app/main/ui/workspace/context_menu.cljs:753 msgid "workspace.context-menu.grid-track.column.delete" msgstr "刪除欄位" -#: src/app/main/ui/workspace/context_menu.cljs:751 +#: src/app/main/ui/workspace/context_menu.cljs:754 msgid "workspace.context-menu.grid-track.column.delete-shapes" msgstr "刪除欄位和圖形" -#: src/app/main/ui/workspace/context_menu.cljs:747 +#: src/app/main/ui/workspace/context_menu.cljs:750 msgid "workspace.context-menu.grid-track.column.duplicate" msgstr "複製欄位" -#: src/app/main/ui/workspace/context_menu.cljs:756 +#: src/app/main/ui/workspace/context_menu.cljs:759 msgid "workspace.context-menu.grid-track.row.add-after" msgstr "在下方新增 1 行" -#: src/app/main/ui/workspace/context_menu.cljs:755 +#: src/app/main/ui/workspace/context_menu.cljs:758 msgid "workspace.context-menu.grid-track.row.add-before" msgstr "在上方新增 1 行" -#: src/app/main/ui/workspace/context_menu.cljs:757 +#: src/app/main/ui/workspace/context_menu.cljs:760 msgid "workspace.context-menu.grid-track.row.delete" msgstr "刪除列" -#: src/app/main/ui/workspace/context_menu.cljs:758 +#: src/app/main/ui/workspace/context_menu.cljs:761 msgid "workspace.context-menu.grid-track.row.delete-shapes" msgstr "刪除列和圖形" -#: src/app/main/ui/workspace/context_menu.cljs:754 +#: src/app/main/ui/workspace/context_menu.cljs:757 msgid "workspace.context-menu.grid-track.row.duplicate" msgstr "複製列" @@ -4202,7 +4184,7 @@ msgstr "複製列" msgid "workspace.focus.focus-mode" msgstr "焦點模式" -#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:706 +#: src/app/main/ui/workspace/context_menu.cljs:395, src/app/main/ui/workspace/context_menu.cljs:709 msgid "workspace.focus.focus-off" msgstr "退出焦點模式" @@ -4222,11 +4204,11 @@ msgstr "線性漸層" msgid "workspace.gradients.radial" msgstr "放射狀漸層" -#: src/app/main/ui/workspace/main_menu.cljs:246 +#: src/app/main/ui/workspace/main_menu.cljs:274 msgid "workspace.header.menu.disable-dynamic-alignment" msgstr "關閉動態對齊" -#: src/app/main/ui/workspace/main_menu.cljs:200 +#: src/app/main/ui/workspace/main_menu.cljs:228 msgid "workspace.header.menu.disable-scale-content" msgstr "關閉等比縮放" @@ -4235,23 +4217,23 @@ msgstr "關閉等比縮放" msgid "workspace.header.menu.disable-scale-text" msgstr "關閉文字縮放" -#: src/app/main/ui/workspace/main_menu.cljs:231 +#: src/app/main/ui/workspace/main_menu.cljs:259 msgid "workspace.header.menu.disable-snap-guides" msgstr "禁用對齊至導向線" -#: src/app/main/ui/workspace/main_menu.cljs:261 +#: src/app/main/ui/workspace/main_menu.cljs:289 msgid "workspace.header.menu.disable-snap-pixel-grid" msgstr "關閉對齊至像素" -#: src/app/main/ui/workspace/main_menu.cljs:215 +#: src/app/main/ui/workspace/main_menu.cljs:243 msgid "workspace.header.menu.disable-snap-ruler-guides" msgstr "關閉對齊至尺規導向線" -#: src/app/main/ui/workspace/main_menu.cljs:247 +#: src/app/main/ui/workspace/main_menu.cljs:275 msgid "workspace.header.menu.enable-dynamic-alignment" msgstr "啟用動態對齊" -#: src/app/main/ui/workspace/main_menu.cljs:201 +#: src/app/main/ui/workspace/main_menu.cljs:229 msgid "workspace.header.menu.enable-scale-content" msgstr "啟用等比縮放" @@ -4260,51 +4242,51 @@ msgstr "啟用等比縮放" msgid "workspace.header.menu.enable-scale-text" msgstr "啟用文字縮放" -#: src/app/main/ui/workspace/main_menu.cljs:232 +#: src/app/main/ui/workspace/main_menu.cljs:260 msgid "workspace.header.menu.enable-snap-guides" msgstr "對齊至導向線" -#: src/app/main/ui/workspace/main_menu.cljs:262 +#: src/app/main/ui/workspace/main_menu.cljs:290 msgid "workspace.header.menu.enable-snap-pixel-grid" msgstr "啟用對齊至像素" -#: src/app/main/ui/workspace/main_menu.cljs:216 +#: src/app/main/ui/workspace/main_menu.cljs:244 msgid "workspace.header.menu.enable-snap-ruler-guides" msgstr "對齊至尺規導向線" -#: src/app/main/ui/workspace/main_menu.cljs:394 +#: src/app/main/ui/workspace/main_menu.cljs:422 msgid "workspace.header.menu.hide-artboard-names" msgstr "隱藏版面名稱" -#: src/app/main/ui/workspace/main_menu.cljs:348 +#: src/app/main/ui/workspace/main_menu.cljs:376 msgid "workspace.header.menu.hide-guides" msgstr "隱藏導向線" -#: src/app/main/ui/workspace/main_menu.cljs:365 +#: src/app/main/ui/workspace/main_menu.cljs:393 msgid "workspace.header.menu.hide-palette" msgstr "隱藏顏色調色盤" -#: src/app/main/ui/workspace/main_menu.cljs:406 +#: src/app/main/ui/workspace/main_menu.cljs:434 msgid "workspace.header.menu.hide-pixel-grid" msgstr "隱藏像素網格" -#: src/app/main/ui/workspace/main_menu.cljs:332 +#: src/app/main/ui/workspace/main_menu.cljs:360 msgid "workspace.header.menu.hide-rules" msgstr "隱藏尺規" -#: src/app/main/ui/workspace/main_menu.cljs:379 +#: src/app/main/ui/workspace/main_menu.cljs:407 msgid "workspace.header.menu.hide-textpalette" msgstr "隱藏字型面板" -#: src/app/main/ui/workspace/main_menu.cljs:872 +#: src/app/main/ui/workspace/main_menu.cljs:900 msgid "workspace.header.menu.option.edit" msgstr "編輯" -#: src/app/main/ui/workspace/main_menu.cljs:861 +#: src/app/main/ui/workspace/main_menu.cljs:889 msgid "workspace.header.menu.option.file" msgstr "檔案" -#: src/app/main/ui/workspace/main_menu.cljs:918 +#: src/app/main/ui/workspace/main_menu.cljs:946 msgid "workspace.header.menu.option.help-info" msgstr "幫助和資訊" @@ -4313,59 +4295,59 @@ msgstr "幫助和資訊" msgid "workspace.header.menu.option.power-up" msgstr "升級您的計劃" -#: src/app/main/ui/workspace/main_menu.cljs:894 +#: src/app/main/ui/workspace/main_menu.cljs:922 msgid "workspace.header.menu.option.preferences" msgstr "偏好設定" -#: src/app/main/ui/workspace/main_menu.cljs:883 +#: src/app/main/ui/workspace/main_menu.cljs:911 msgid "workspace.header.menu.option.view" msgstr "檢視" -#: src/app/main/ui/workspace/main_menu.cljs:478 +#: src/app/main/ui/workspace/main_menu.cljs:506 msgid "workspace.header.menu.redo" msgstr "復原上一步操作" -#: src/app/main/ui/workspace/main_menu.cljs:449 +#: src/app/main/ui/workspace/main_menu.cljs:477 msgid "workspace.header.menu.select-all" msgstr "全選" -#: src/app/main/ui/workspace/main_menu.cljs:395 +#: src/app/main/ui/workspace/main_menu.cljs:423 msgid "workspace.header.menu.show-artboard-names" msgstr "顯示版面名稱" -#: src/app/main/ui/workspace/main_menu.cljs:349 +#: src/app/main/ui/workspace/main_menu.cljs:377 msgid "workspace.header.menu.show-guides" msgstr "顯示導向線" -#: src/app/main/ui/workspace/main_menu.cljs:366 +#: src/app/main/ui/workspace/main_menu.cljs:394 msgid "workspace.header.menu.show-palette" msgstr "顯示顏色調色盤" -#: src/app/main/ui/workspace/main_menu.cljs:407 +#: src/app/main/ui/workspace/main_menu.cljs:435 msgid "workspace.header.menu.show-pixel-grid" msgstr "顯示像素網格" -#: src/app/main/ui/workspace/main_menu.cljs:333 +#: src/app/main/ui/workspace/main_menu.cljs:361 msgid "workspace.header.menu.show-rules" msgstr "顯示尺規" -#: src/app/main/ui/workspace/main_menu.cljs:380 +#: src/app/main/ui/workspace/main_menu.cljs:408 msgid "workspace.header.menu.show-textpalette" msgstr "顯示字型面板" -#: src/app/main/ui/workspace/main_menu.cljs:288 +#: src/app/main/ui/workspace/main_menu.cljs:316 msgid "workspace.header.menu.toggle-dark-theme" msgstr "切換到深色主題" -#: src/app/main/ui/workspace/main_menu.cljs:286, src/app/main/ui/workspace/main_menu.cljs:289 +#: src/app/main/ui/workspace/main_menu.cljs:314, src/app/main/ui/workspace/main_menu.cljs:317 msgid "workspace.header.menu.toggle-light-theme" msgstr "切換到明亮主題" -#: src/app/main/ui/workspace/main_menu.cljs:464 +#: src/app/main/ui/workspace/main_menu.cljs:492 msgid "workspace.header.menu.undo" msgstr "撤回" -#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94 +#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:95 msgid "workspace.header.reset-zoom" msgstr "重設" @@ -4381,7 +4363,7 @@ msgstr "已儲存" msgid "workspace.header.saving" msgstr "正在儲存" -#: src/app/main/ui/workspace/right_header.cljs:239 +#: src/app/main/ui/workspace/right_header.cljs:240 msgid "workspace.header.share" msgstr "共享" @@ -4390,11 +4372,11 @@ msgstr "共享" msgid "workspace.header.unsaved" msgstr "變更尚未儲存" -#: src/app/main/ui/workspace/right_header.cljs:244 +#: src/app/main/ui/workspace/right_header.cljs:245 msgid "workspace.header.viewer" msgstr "檢視模式 (%s)" -#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77 +#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:78 msgid "workspace.header.zoom" msgstr "縮放" @@ -4406,7 +4388,7 @@ msgstr "填滿 - 按比例縮放以填滿" msgid "workspace.header.zoom-fit" msgstr "填滿 - 按比例縮小以適合" -#: src/app/main/ui/workspace/right_header.cljs:97 +#: src/app/main/ui/workspace/right_header.cljs:98 msgid "workspace.header.zoom-fit-all" msgstr "縮放至適合顯示全部" @@ -4414,19 +4396,19 @@ msgstr "縮放至適合顯示全部" msgid "workspace.header.zoom-full-screen" msgstr "全螢幕" -#: src/app/main/ui/workspace/right_header.cljs:104 +#: src/app/main/ui/workspace/right_header.cljs:105 msgid "workspace.header.zoom-selected" msgstr "縮放至選取範圍" -#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:273, src/app/main/ui/workspace/sidebar/options/menus/grid_cell.cljs:275, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:621 msgid "workspace.layout_grid.editor.options.edit-grid" msgstr "編輯網格" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1300 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1301 msgid "workspace.layout_grid.editor.options.exit" msgstr "離開" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:490, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:491 msgid "workspace.layout_grid.editor.padding.expand" msgstr "顯示四邊內距選項" @@ -4442,7 +4424,7 @@ msgstr "完成" msgid "workspace.layout_grid.editor.top-bar.locate" msgstr "定位" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1326 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1327 msgid "workspace.layout_grid.editor.top-bar.locate.tooltip" msgstr "定位網格佈局" @@ -4451,10 +4433,6 @@ msgstr "定位網格佈局" msgid "workspace.libraries.add" msgstr "新增" -#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132 -msgid "workspace.libraries.colors" -msgstr "%s 顏色" - #: src/app/main/ui/workspace/color_palette.cljs:147 msgid "workspace.libraries.colors.empty-palette" msgstr "您的圖庫中還沒有顏色樣式" @@ -4481,43 +4459,35 @@ msgstr "最近使用的顏色" msgid "workspace.libraries.colors.rgb-complementary" msgstr "RGB 互補色" -#: src/app/main/ui/workspace/colorpicker.cljs:346 +#: src/app/main/ui/workspace/colorpicker.cljs:358 msgid "workspace.libraries.colors.rgba" msgstr "RGBA" -#: src/app/main/ui/workspace/colorpicker.cljs:516 +#: src/app/main/ui/workspace/colorpicker.cljs:557 msgid "workspace.libraries.colors.save-color" msgstr "儲存顏色樣式" -#: src/app/main/ui/workspace/libraries.cljs:100, src/app/main/ui/workspace/libraries.cljs:124 -msgid "workspace.libraries.components" -msgstr "%s 元件" - -#: src/app/main/ui/workspace/libraries.cljs:371 +#: src/app/main/ui/workspace/libraries.cljs:404 msgid "workspace.libraries.empty.add-some" msgstr "或增加這些來試試:" -#: src/app/main/ui/workspace/libraries.cljs:365 +#: src/app/main/ui/workspace/libraries.cljs:398 msgid "workspace.libraries.empty.no-libraries" msgstr "您的團隊中沒有共享圖庫,您可以尋找" -#: src/app/main/ui/workspace/libraries.cljs:369 +#: src/app/main/ui/workspace/libraries.cljs:402 msgid "workspace.libraries.empty.some-templates" msgstr "這裡的一些範本" -#: src/app/main/ui/workspace/libraries.cljs:297 +#: src/app/main/ui/workspace/libraries.cljs:322 msgid "workspace.libraries.file-library" msgstr "檔案圖庫" -#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128 -msgid "workspace.libraries.graphics" -msgstr "%s 圖形" - -#: src/app/main/ui/workspace/libraries.cljs:291 +#: src/app/main/ui/workspace/libraries.cljs:316 msgid "workspace.libraries.in-this-file" msgstr "此檔案中的圖庫" -#: src/app/main/ui/workspace/libraries.cljs:609, src/app/main/ui/workspace/libraries.cljs:627 +#: src/app/main/ui/workspace/libraries.cljs:642, src/app/main/ui/workspace/libraries.cljs:660 msgid "workspace.libraries.libraries" msgstr "檔案庫" @@ -4526,11 +4496,11 @@ msgstr "檔案庫" msgid "workspace.libraries.library" msgstr "檔案庫" -#: src/app/main/ui/workspace/libraries.cljs:467 +#: src/app/main/ui/workspace/libraries.cljs:500 msgid "workspace.libraries.library-updates" msgstr "圖庫更新" -#: src/app/main/ui/workspace/libraries.cljs:360 +#: src/app/main/ui/workspace/libraries.cljs:393 msgid "workspace.libraries.loading" msgstr "載入中…" @@ -4539,79 +4509,75 @@ msgstr "載入中…" msgid "workspace.libraries.more-templates" msgstr "您可以搜尋 " -#: src/app/main/ui/workspace/libraries.cljs:465 +#: src/app/main/ui/workspace/libraries.cljs:498 msgid "workspace.libraries.no-libraries-need-sync" msgstr "沒有需要更新的共享圖庫" -#: src/app/main/ui/workspace/libraries.cljs:378 +#: src/app/main/ui/workspace/libraries.cljs:411 msgid "workspace.libraries.no-matches-for" msgstr "沒有找到符合 '%s' 的" -#: src/app/main/ui/workspace/libraries.cljs:334 +#: src/app/main/ui/workspace/libraries.cljs:367 msgid "workspace.libraries.search-shared-libraries" msgstr "搜尋共享圖庫" -#: src/app/main/ui/workspace/libraries.cljs:330 +#: src/app/main/ui/workspace/libraries.cljs:363 msgid "workspace.libraries.shared-libraries" msgstr "共享圖庫" -#: src/app/main/ui/workspace/libraries.cljs:352 +#: src/app/main/ui/workspace/libraries.cljs:385 msgid "workspace.libraries.shared-library-btn" msgstr "連接圖庫" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:325 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:326 msgid "workspace.libraries.text.multiple-typography" msgstr "多種字體樣式" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:329 msgid "workspace.libraries.text.multiple-typography-tooltip" msgstr "解除所有字體樣式的連結" -#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136 -msgid "workspace.libraries.typography" -msgstr "%s 字體樣式" - -#: src/app/main/ui/workspace/libraries.cljs:323 +#: src/app/main/ui/workspace/libraries.cljs:354 msgid "workspace.libraries.unlink-library-btn" msgstr "取消圖庫連接" -#: src/app/main/ui/workspace/libraries.cljs:487 +#: src/app/main/ui/workspace/libraries.cljs:520 msgid "workspace.libraries.update" msgstr "更新" -#: src/app/main/ui/workspace/libraries.cljs:563 +#: src/app/main/ui/workspace/libraries.cljs:596 msgid "workspace.libraries.update.see-all-changes" msgstr "查看所有變更" -#: src/app/main/ui/workspace/libraries.cljs:611 +#: src/app/main/ui/workspace/libraries.cljs:644 msgid "workspace.libraries.updates" msgstr "更新" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:746 msgid "workspace.options.add-interaction" msgstr "按一下 + 按鈕來新增互動。" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:96 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:97 msgid "workspace.options.blur-options.add-blur" msgstr "加入模糊效果" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:117 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:118 msgid "workspace.options.blur-options.remove-blur" msgstr "移除模糊效果" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:93, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:111 msgid "workspace.options.blur-options.title" msgstr "模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:92 msgid "workspace.options.blur-options.title.group" msgstr "群組模糊效果" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91 msgid "workspace.options.blur-options.title.multiple" msgstr "選擇模糊效果" -#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:114 msgid "workspace.options.blur-options.toggle-blur" msgstr "切換模糊效果" @@ -4619,39 +4585,39 @@ msgstr "切換模糊效果" msgid "workspace.options.canvas-background" msgstr "畫布背景" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:630 msgid "workspace.options.clip-content" msgstr "裁切內容" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:917, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:923, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1149 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:937, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:943, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1183 msgid "workspace.options.component" msgstr "元件" -#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:193 +#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:196 msgid "workspace.options.component.annotation" msgstr "註解" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:931 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:951 msgid "workspace.options.component.copy" msgstr "複製" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:185 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188 msgid "workspace.options.component.create-annotation" msgstr "建立註解" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:184 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:187 msgid "workspace.options.component.edit-annotation" msgstr "建立註解" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:930, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1153 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1187 msgid "workspace.options.component.main" msgstr "主要" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:706 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:721 msgid "workspace.options.component.swap" msgstr "替換元件" -#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:765 msgid "workspace.options.component.swap.empty" msgstr "這個圖庫目前沒有資源" @@ -4695,7 +4661,7 @@ msgstr "上" msgid "workspace.options.constraints.topbottom" msgstr "上和下" -#: src/app/main/ui/workspace/sidebar/options.cljs:157 +#: src/app/main/ui/workspace/sidebar/options.cljs:181 msgid "workspace.options.design" msgstr "設計" @@ -4708,20 +4674,20 @@ msgstr "匯出" msgid "workspace.options.export-multiple" msgstr "匯出已選取項目" -#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249 +#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:275 msgid "workspace.options.export-object" msgid_plural "workspace.options.export-object" msgstr[0] "匯出 %s 元素" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:214 msgid "workspace.options.export.add-export" msgstr "新增匯出" -#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:226, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:261 msgid "workspace.options.export.remove-export" msgstr "移除匯出" -#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229 +#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:255 msgid "workspace.options.export.suffix" msgstr "後綴" @@ -4729,7 +4695,7 @@ msgstr "後綴" msgid "workspace.options.exporting-complete" msgstr "完成匯出" -#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248 +#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/exports/assets.cljs:241, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:274 msgid "workspace.options.exporting-object" msgstr "正在匯出…" @@ -4741,27 +4707,27 @@ msgstr "匯出失敗" msgid "workspace.options.exporting-object-slow" msgstr "匯出異常緩慢" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:111, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:221 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:121, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:261 msgid "workspace.options.fill" msgstr "填充" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:194 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:234 msgid "workspace.options.fill.add-fill" msgstr "新增填充顏色" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:208 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:248 msgid "workspace.options.fill.remove-fill" msgstr "移除填充顏色" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:392 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:474 msgid "workspace.options.fit-content" msgstr "調整畫布以符合內容大小" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:183 msgid "workspace.options.flows.add-flow-start" msgstr "新增流程起點" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:179 msgid "workspace.options.flows.flow" msgstr "流程" @@ -4770,19 +4736,19 @@ msgstr "流程" msgid "workspace.options.flows.flow-start" msgstr "流程起點" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:165 msgid "workspace.options.flows.flow-starts" msgstr "流程起點" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:155 msgid "workspace.options.flows.remove-flow" msgstr "移除流程" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:32 msgid "workspace.options.grid.auto" msgstr "自動" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 msgid "workspace.options.grid.column" msgstr "欄" @@ -4791,7 +4757,7 @@ msgstr "欄" msgid "workspace.options.grid.grid-title" msgstr "網格" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:201, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:243 msgid "workspace.options.grid.params.color" msgstr "顏色" @@ -4800,15 +4766,15 @@ msgstr "顏色" msgid "workspace.options.grid.params.columns" msgstr "欄" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:266 msgid "workspace.options.grid.params.gutter" msgstr "網格間距" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:253 msgid "workspace.options.grid.params.height" msgstr "高度" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:277 msgid "workspace.options.grid.params.margin" msgstr "邊距" @@ -4817,7 +4783,7 @@ msgstr "邊距" msgid "workspace.options.grid.params.rows" msgstr "列" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:220, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:294 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:222, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:297 msgid "workspace.options.grid.params.set-default" msgstr "設置為預設值" @@ -4831,159 +4797,159 @@ msgstr "尺寸" msgid "workspace.options.grid.params.type" msgstr "類型" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:237 msgid "workspace.options.grid.params.type.bottom" msgstr "下" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:235 msgid "workspace.options.grid.params.type.center" msgstr "中" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:232 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:234 msgid "workspace.options.grid.params.type.left" msgstr "左" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:236 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:238 msgid "workspace.options.grid.params.type.right" msgstr "右" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 msgid "workspace.options.grid.params.type.stretch" msgstr "延展" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:233 msgid "workspace.options.grid.params.type.top" msgstr "上" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:292 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:217, src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:295 msgid "workspace.options.grid.params.use-default" msgstr "使用預設" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:254 msgid "workspace.options.grid.params.width" msgstr "寬度" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:160 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:161 msgid "workspace.options.grid.row" msgstr "列" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:159 msgid "workspace.options.grid.square" msgstr "正方形" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:120 msgid "workspace.options.group-fill" msgstr "群組填充" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:45 msgid "workspace.options.group-stroke" msgstr "群組描邊" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:326 msgid "workspace.options.guides.add-guide" msgstr "新增輔助線" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:188 msgid "workspace.options.guides.remove-guide" msgstr "移除輔助線" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323 msgid "workspace.options.guides.title" msgstr "輔助線" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:184 msgid "workspace.options.guides.toggle-guide" msgstr "切換輔助線" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:520 msgid "workspace.options.height" msgstr "高度" -#: src/app/main/ui/workspace/sidebar/options.cljs:161 +#: src/app/main/ui/workspace/sidebar/options.cljs:185 msgid "workspace.options.inspect" msgstr "檢視" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:475 msgid "workspace.options.interaction-action" msgstr "動作" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:373 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:43, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:374 msgid "workspace.options.interaction-after-delay" msgstr "延遲執行" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:621 msgid "workspace.options.interaction-animation" msgstr "動畫" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 msgid "workspace.options.interaction-animation-dissolve" msgstr "淡出" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412 msgid "workspace.options.interaction-animation-none" msgstr "無" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:419 msgid "workspace.options.interaction-animation-push" msgstr "推動" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:414 msgid "workspace.options.interaction-animation-slide" msgstr "滑動" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:398 msgid "workspace.options.interaction-auto" msgstr "自動" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:611 msgid "workspace.options.interaction-background" msgstr "新增背景疊加層" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:597 msgid "workspace.options.interaction-close-outside" msgstr "點擊外部時關閉" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 msgid "workspace.options.interaction-close-overlay" msgstr "關閉疊加層" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58 msgid "workspace.options.interaction-close-overlay-dest" msgstr "關閉疊加層:%s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:463 msgid "workspace.options.interaction-delay" msgstr "延遲" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:485 msgid "workspace.options.interaction-destination" msgstr "終點" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:668 msgid "workspace.options.interaction-duration" msgstr "持續時間" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:681 msgid "workspace.options.interaction-easing" msgstr "緩衝效果" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 msgid "workspace.options.interaction-easing-ease" msgstr "緩衝" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 msgid "workspace.options.interaction-easing-ease-in" msgstr "緩慢開始" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:426 msgid "workspace.options.interaction-easing-ease-in-out" msgstr "先慢後快再慢" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425 msgid "workspace.options.interaction-easing-ease-out" msgstr "逐漸減速" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422 msgid "workspace.options.interaction-easing-linear" msgstr "線性" @@ -4992,47 +4958,47 @@ msgstr "線性" msgid "workspace.options.interaction-in" msgstr "進場" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 msgid "workspace.options.interaction-mouse-enter" msgstr "滑鼠移入" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:371 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:42, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:372 msgid "workspace.options.interaction-mouse-leave" msgstr "滑鼠移出" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:464, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:470, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:669, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:671, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:675 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:465, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:466, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:471, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:670, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:672, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:676 msgid "workspace.options.interaction-ms" msgstr "毫秒" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 msgid "workspace.options.interaction-navigate-to" msgstr "導航至" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52 msgid "workspace.options.interaction-navigate-to-dest" msgstr "導航至:%s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:52, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:387 msgid "workspace.options.interaction-none" msgstr "(尚未設置)" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:698 msgid "workspace.options.interaction-offset-effect" msgstr "位移效果" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:36, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:366 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:367 msgid "workspace.options.interaction-on-click" msgstr "點擊觸發" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 msgid "workspace.options.interaction-open-overlay" msgstr "開啟覆蓋層" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:54 msgid "workspace.options.interaction-open-overlay-dest" msgstr "開啟覆蓋層:%s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:61, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:381 msgid "workspace.options.interaction-open-url" msgstr "開啟URL" @@ -5041,87 +5007,87 @@ msgstr "開啟URL" msgid "workspace.options.interaction-out" msgstr "離開" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:410 msgid "workspace.options.interaction-pos-bottom-center" msgstr "底部中心" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 msgid "workspace.options.interaction-pos-bottom-left" msgstr "左下角" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409 msgid "workspace.options.interaction-pos-bottom-right" msgstr "右下角" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 msgid "workspace.options.interaction-pos-center" msgstr "置中" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403 msgid "workspace.options.interaction-pos-manual" msgstr "手動" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407 msgid "workspace.options.interaction-pos-top-center" msgstr "頂部中心" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 msgid "workspace.options.interaction-pos-top-left" msgstr "左上角" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406 msgid "workspace.options.interaction-pos-top-right" msgstr "右上角" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:531 msgid "workspace.options.interaction-position" msgstr "位置" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:501 msgid "workspace.options.interaction-preserve-scroll" msgstr "保持滾動位置" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:379 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:60, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:380 msgid "workspace.options.interaction-prev-screen" msgstr "上一個畫面" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:522 msgid "workspace.options.interaction-relative-to" msgstr "相對於" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:58, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:399, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:59, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:400, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:401 msgid "workspace.options.interaction-self" msgstr "自身" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378 msgid "workspace.options.interaction-toggle-overlay" msgstr "切換覆蓋層" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:56 msgid "workspace.options.interaction-toggle-overlay-dest" msgstr "切換覆蓋層:%s" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:452 msgid "workspace.options.interaction-trigger" msgstr "觸發" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:510 msgid "workspace.options.interaction-url" msgstr "網址" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:368 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 msgid "workspace.options.interaction-while-hovering" msgstr "滑鼠懸停時" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:369 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:370 msgid "workspace.options.interaction-while-pressing" msgstr "當按住時" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:732 msgid "workspace.options.interactions" msgstr "互動" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:736 msgid "workspace.options.interactions.add-interaction" msgstr "新增互動" @@ -5130,67 +5096,67 @@ msgstr "新增互動" msgid "workspace.options.interactions.remove-interaction" msgstr "移除互動" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:169 msgid "workspace.options.layer-options.blend-mode.color" msgstr "顏色" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:158 msgid "workspace.options.layer-options.blend-mode.color-burn" msgstr "顏色加深" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:161 msgid "workspace.options.layer-options.blend-mode.color-dodge" msgstr "顏色增亮" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 msgid "workspace.options.layer-options.blend-mode.darken" msgstr "變暗" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:154 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:165 msgid "workspace.options.layer-options.blend-mode.difference" msgstr "差值" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:166 msgid "workspace.options.layer-options.blend-mode.exclusion" msgstr "排除" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:164 msgid "workspace.options.layer-options.blend-mode.hard-light" msgstr "強光" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:167 msgid "workspace.options.layer-options.blend-mode.hue" msgstr "色調" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 msgid "workspace.options.layer-options.blend-mode.lighten" msgstr "變亮" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:170 msgid "workspace.options.layer-options.blend-mode.luminosity" msgstr "亮度" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 msgid "workspace.options.layer-options.blend-mode.multiply" msgstr "圖層混合" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:155 msgid "workspace.options.layer-options.blend-mode.normal" msgstr "正常" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:162 msgid "workspace.options.layer-options.blend-mode.overlay" msgstr "疊層" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:157 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:168 msgid "workspace.options.layer-options.blend-mode.saturation" msgstr "飽和度" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:160 msgid "workspace.options.layer-options.blend-mode.screen" msgstr "螢幕疊加" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:163 msgid "workspace.options.layer-options.blend-mode.soft-light" msgstr "柔光" @@ -5209,7 +5175,7 @@ msgstr "群組圖層" msgid "workspace.options.layer-options.title.multiple" msgstr "選擇圖層" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:202 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:207, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:213 msgid "workspace.options.layer-options.toggle-layer" msgstr "切換圖層可見性" @@ -5218,19 +5184,19 @@ msgstr "切換圖層可見性" msgid "workspace.options.layout-item.advanced-ops" msgstr "進階選項" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:559 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:560 msgid "workspace.options.layout-item.layout-item-max-h" msgstr "最高" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:526 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:527 msgid "workspace.options.layout-item.layout-item-max-w" msgstr "Max.Width" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:543 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:544 msgid "workspace.options.layout-item.layout-item-min-h" msgstr "Min.Height" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:510 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:511 msgid "workspace.options.layout-item.layout-item-min-w" msgstr "Min.Width" @@ -5344,15 +5310,15 @@ msgstr "元素間距" msgid "workspace.options.layout.top" msgstr "上" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:156 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:179 msgid "workspace.options.more-colors" msgstr "更多顏色" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:140 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:161 msgid "workspace.options.more-lib-colors" msgstr "更多圖層顏色" -#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:192 msgid "workspace.options.opacity" msgstr "不透明度" @@ -5361,35 +5327,35 @@ msgstr "不透明度" msgid "workspace.options.position" msgstr "位置" -#: src/app/main/ui/workspace/sidebar/options.cljs:159 +#: src/app/main/ui/workspace/sidebar/options.cljs:183 msgid "workspace.options.prototype" msgstr "原型" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:81 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:98 msgid "workspace.options.radius" msgstr "圓角半徑" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 msgid "workspace.options.radius-bottom-left" msgstr "左下角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:143 msgid "workspace.options.radius-bottom-right" msgstr "右下角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:119 msgid "workspace.options.radius-top-left" msgstr "左上角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:127 msgid "workspace.options.radius-top-right" msgstr "右上角" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:152 msgid "workspace.options.radius.hide-all-corners" msgstr "合併獨立圓角半徑" -#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136 +#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:153 msgid "workspace.options.radius.show-single-corners" msgstr "顯示獨立圓角半徑" @@ -5401,7 +5367,7 @@ msgstr "最近" msgid "workspace.options.retry" msgstr "重試" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:455 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:595, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:600 msgid "workspace.options.rotation" msgstr "旋轉" @@ -5409,31 +5375,31 @@ msgstr "旋轉" msgid "workspace.options.search-font" msgstr "搜尋字型" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:750 msgid "workspace.options.select-a-shape" msgstr "選擇一個形狀、畫板或組合,並拖動連接至其他畫板。" -#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:113 +#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:132 msgid "workspace.options.selection-color" msgstr "已選顏色" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:109 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:119 msgid "workspace.options.selection-fill" msgstr "選取填充" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 msgid "workspace.options.selection-stroke" msgstr "選取描邊" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:341 msgid "workspace.options.shadow-options.add-shadow" msgstr "新增陰影" -#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200 +#: src/app/main/ui/inspect/attributes/shadow.cljs:47, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:203, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:205 msgid "workspace.options.shadow-options.blur" msgstr "模糊" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:231 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:236 msgid "workspace.options.shadow-options.color" msgstr "陰影顏色" @@ -5445,55 +5411,56 @@ msgstr "陰影效果" msgid "workspace.options.shadow-options.inner-shadow" msgstr "內陰影" -#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:188 +#: src/app/main/ui/inspect/attributes/shadow.cljs:45, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:193 msgid "workspace.options.shadow-options.offsetx" msgstr "X" -#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:220 +#: src/app/main/ui/inspect/attributes/shadow.cljs:46, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:225 msgid "workspace.options.shadow-options.offsety" msgstr "Y" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:348 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:183, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:354 msgid "workspace.options.shadow-options.remove-shadow" msgstr "移除陰影" -#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:209, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:211 +#: src/app/main/ui/inspect/attributes/shadow.cljs:48, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:214, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:216 msgid "workspace.options.shadow-options.spread" msgstr "擴散" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:330 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:336 msgid "workspace.options.shadow-options.title" msgstr "陰影" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:329 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:335 msgid "workspace.options.shadow-options.title.group" msgstr "群組陰影" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:328 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:334 msgid "workspace.options.shadow-options.title.multiple" msgstr "選取陰影" -#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:174 +#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179 msgid "workspace.options.shadow-options.toggle-shadow" msgstr "切換陰影" -#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:241 +#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:285 msgid "workspace.options.show-fill-on-export" msgstr "在匯出中顯示" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:499 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:645 msgid "workspace.options.show-in-viewer" msgstr "在檢視模式中顯示" -#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164 +#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:165 msgid "workspace.options.size" msgstr "尺寸" -#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:352 +#: src/app/main/ui/workspace/sidebar/options/drawing/frame.cljs:70, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:434 msgid "workspace.options.size-presets" msgstr "尺寸預設" #: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:44 +#, unused msgid "workspace.options.stroke" msgstr "邊框" @@ -5502,7 +5469,7 @@ msgstr "邊框" msgid "workspace.options.stroke-cap.circle-marker" msgstr "圓形標記" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:168 msgid "workspace.options.stroke-cap.circle-marker-short" msgstr "圓形" @@ -5511,7 +5478,7 @@ msgstr "圓形" msgid "workspace.options.stroke-cap.diamond-marker" msgstr "鑽石標記" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:169 msgid "workspace.options.stroke-cap.diamond-marker-short" msgstr "鑽石" @@ -5520,19 +5487,19 @@ msgstr "鑽石" msgid "workspace.options.stroke-cap.line-arrow" msgstr "箭頭線" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165 msgid "workspace.options.stroke-cap.line-arrow-short" msgstr "箭頭" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:163 msgid "workspace.options.stroke-cap.none" msgstr "無" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:171 msgid "workspace.options.stroke-cap.round" msgstr "圓角" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172 msgid "workspace.options.stroke-cap.square" msgstr "正方形" @@ -5541,7 +5508,7 @@ msgstr "正方形" msgid "workspace.options.stroke-cap.square-marker" msgstr "方形標記" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:167 msgid "workspace.options.stroke-cap.square-marker-short" msgstr "矩形" @@ -5550,83 +5517,83 @@ msgstr "矩形" msgid "workspace.options.stroke-cap.triangle-arrow" msgstr "三角箭頭" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 msgid "workspace.options.stroke-cap.triangle-arrow-short" msgstr "三角" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:201 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:210 msgid "workspace.options.stroke-color" msgstr "描邊顏色" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:207 msgid "workspace.options.stroke-width" msgstr "描邊寬度" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:180 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:189 msgid "workspace.options.stroke.add-stroke" msgstr "新增描邊顏色" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:97 msgid "workspace.options.stroke.center" msgstr "置中" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:107 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:138 msgid "workspace.options.stroke.dashed" msgstr "虛線" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:106 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:137 msgid "workspace.options.stroke.dotted" msgstr "點線" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:90 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:98 msgid "workspace.options.stroke.inner" msgstr "裏面" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:139 msgid "workspace.options.stroke.mixed" msgstr "混合" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:99 msgid "workspace.options.stroke.outer" msgstr "外面" -#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:193 +#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:202 msgid "workspace.options.stroke.remove-stroke" msgstr "移除描邊" -#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105 +#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:136 msgid "workspace.options.stroke.solid" msgstr "實線" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:122 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:123 msgid "workspace.options.text-options.align-bottom" msgstr "對齊底部" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:118 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:119 msgid "workspace.options.text-options.align-middle" msgstr "對齊中間" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:114 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:115 msgid "workspace.options.text-options.align-top" msgstr "對齊頂部" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:89 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:90 msgid "workspace.options.text-options.direction-ltr" msgstr "左至右" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:94 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:95 msgid "workspace.options.text-options.direction-rtl" msgstr "右至左" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:159 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:160 msgid "workspace.options.text-options.grow-auto-height" msgstr "自動高度" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:155 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:156 msgid "workspace.options.text-options.grow-auto-width" msgstr "自動寬度" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:152 msgid "workspace.options.text-options.grow-fixed" msgstr "固定" @@ -5648,35 +5615,35 @@ msgstr "小寫" msgid "workspace.options.text-options.none" msgstr "無" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:186 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:187 msgid "workspace.options.text-options.strikethrough" msgstr "刪除線 (%s)" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:58 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:59 msgid "workspace.options.text-options.text-align-center" msgstr "置中" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:66 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:67 msgid "workspace.options.text-options.text-align-justify" msgstr "對齊兩端" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:54 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:55 msgid "workspace.options.text-options.text-align-left" msgstr "左對齊" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:62 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:63 msgid "workspace.options.text-options.text-align-right" msgstr "右對齊" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:200 msgid "workspace.options.text-options.title" msgstr "文字" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:199 msgid "workspace.options.text-options.title-group" msgstr "群組文字" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:197 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:198 msgid "workspace.options.text-options.title-selection" msgstr "選取文字" @@ -5685,7 +5652,7 @@ msgstr "選取文字" msgid "workspace.options.text-options.titlecase" msgstr "標題大小寫" -#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:181 +#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:182 msgid "workspace.options.text-options.underline" msgstr "底線" @@ -5694,19 +5661,19 @@ msgstr "底線" msgid "workspace.options.text-options.uppercase" msgstr "大寫" -#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753 +#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:754 msgid "workspace.options.use-play-button" msgstr "使用標題上的播放按鈕來執行原型檢視。" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:400 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:489, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:508 msgid "workspace.options.width" msgstr "寬度" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:547, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:564 msgid "workspace.options.x" msgstr "X軸" -#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442 +#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:557, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:575 msgid "workspace.options.y" msgstr "Y 軸" @@ -5750,104 +5717,104 @@ msgstr "分離節點(%s)" msgid "workspace.path.actions.snap-nodes" msgstr "對齊節點(%s)" -#: src/app/main/ui/workspace/plugins.cljs:83 +#: src/app/main/ui/workspace/plugins.cljs:84 msgid "workspace.plugins.button-open" msgstr "開啟" -#: src/app/main/ui/workspace/plugins.cljs:197 +#: src/app/main/ui/workspace/plugins.cljs:198 #, markdown msgid "workspace.plugins.discover" msgstr "探索更多外掛(%s)" -#: src/app/main/ui/workspace/plugins.cljs:204 +#: src/app/main/ui/workspace/plugins.cljs:205 msgid "workspace.plugins.empty-plugins" msgstr "尚未安裝任何外掛" -#: src/app/main/ui/workspace/plugins.cljs:191 +#: src/app/main/ui/workspace/plugins.cljs:192 msgid "workspace.plugins.error.manifest" msgstr "外掛清單有誤。" -#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:755, src/app/main/ui/workspace/plugins.cljs:82 +#: src/app/main/data/plugins.cljs:89, src/app/main/ui/workspace/main_menu.cljs:783, src/app/main/ui/workspace/plugins.cljs:83 msgid "workspace.plugins.error.need-editor" msgstr "您需要具備編輯者權限才能使用此外掛" -#: src/app/main/ui/workspace/plugins.cljs:187 +#: src/app/main/ui/workspace/plugins.cljs:188 msgid "workspace.plugins.error.url" msgstr "此外掛不存在,或 URL 不正確。" -#: src/app/main/ui/workspace/plugins.cljs:183 +#: src/app/main/ui/workspace/plugins.cljs:184 msgid "workspace.plugins.install" msgstr "安裝" -#: src/app/main/ui/workspace/plugins.cljs:213 +#: src/app/main/ui/workspace/plugins.cljs:214 msgid "workspace.plugins.installed-plugins" msgstr "安裝外掛" -#: src/app/main/ui/workspace/main_menu.cljs:710 +#: src/app/main/ui/workspace/main_menu.cljs:738 msgid "workspace.plugins.menu.plugins-manager" msgstr "外掛管理員" -#: src/app/main/ui/workspace/main_menu.cljs:906 +#: src/app/main/ui/workspace/main_menu.cljs:934 msgid "workspace.plugins.menu.title" msgstr "外掛" -#: src/app/main/ui/workspace/plugins.cljs:374 +#: src/app/main/ui/workspace/plugins.cljs:375 msgid "workspace.plugins.permissions-update.title" msgstr "更新此外掛" -#: src/app/main/ui/workspace/plugins.cljs:378 +#: src/app/main/ui/workspace/plugins.cljs:379 msgid "workspace.plugins.permissions-update.warning" msgstr "此外掛自您上次打開以來已被修改。現在它還需要存取以下內容:" -#: src/app/main/ui/workspace/plugins.cljs:278 +#: src/app/main/ui/workspace/plugins.cljs:279 msgid "workspace.plugins.permissions.allow-download" msgstr "開始檔案下載。" -#: src/app/main/ui/workspace/plugins.cljs:271 +#: src/app/main/ui/workspace/plugins.cljs:272 msgid "workspace.plugins.permissions.comment-read" msgstr "閱讀您的留言和回覆。" -#: src/app/main/ui/workspace/plugins.cljs:265 +#: src/app/main/ui/workspace/plugins.cljs:266 msgid "workspace.plugins.permissions.comment-write" msgstr "閱讀並修改您的留言,並以您的名義回覆。" -#: src/app/main/ui/workspace/plugins.cljs:238 +#: src/app/main/ui/workspace/plugins.cljs:239 msgid "workspace.plugins.permissions.content-read" msgstr "使用者有權存取閱讀的檔案內容。" -#: src/app/main/ui/workspace/plugins.cljs:232 +#: src/app/main/ui/workspace/plugins.cljs:233 msgid "workspace.plugins.permissions.content-write" msgstr "使用者有權存取閱讀以及修改檔案內容。" -#: src/app/main/ui/workspace/plugins.cljs:325 +#: src/app/main/ui/workspace/plugins.cljs:326 msgid "workspace.plugins.permissions.disclaimer" msgstr "請注意,此外掛由外部廠商建立,因此在授權存取之前,請確保您信任它。我們重視您的資料隱私與安全。如有任何疑慮,請聯絡我們的客服。" -#: src/app/main/ui/workspace/plugins.cljs:258 +#: src/app/main/ui/workspace/plugins.cljs:259 msgid "workspace.plugins.permissions.library-read" msgstr "讀取您的圖庫與資源。" -#: src/app/main/ui/workspace/plugins.cljs:252 +#: src/app/main/ui/workspace/plugins.cljs:253 msgid "workspace.plugins.permissions.library-write" msgstr "讀取以及修改您的圖庫與資源。" -#: src/app/main/ui/workspace/plugins.cljs:318 +#: src/app/main/ui/workspace/plugins.cljs:319 msgid "workspace.plugins.permissions.title" msgstr "'%s' 外掛需要訪問以下內容:" -#: src/app/main/ui/workspace/plugins.cljs:245 +#: src/app/main/ui/workspace/plugins.cljs:246 msgid "workspace.plugins.permissions.user-read" msgstr "讀取當前使用者的個人資料資訊。" -#: src/app/main/ui/workspace/plugins.cljs:209 +#: src/app/main/ui/workspace/plugins.cljs:210 msgid "workspace.plugins.plugin-list-link" msgstr "外掛列表" -#: src/app/main/ui/workspace/plugins.cljs:86 +#: src/app/main/ui/workspace/plugins.cljs:87 msgid "workspace.plugins.remove-plugin" msgstr "移除外掛" -#: src/app/main/ui/workspace/plugins.cljs:178 +#: src/app/main/ui/workspace/plugins.cljs:179 msgid "workspace.plugins.search-placeholder" msgstr "寫入外掛網址" @@ -5855,23 +5822,23 @@ msgstr "寫入外掛網址" msgid "workspace.plugins.success" msgstr "外掛已正確載入。" -#: src/app/main/ui/workspace/plugins.cljs:172 +#: src/app/main/ui/workspace/plugins.cljs:173 msgid "workspace.plugins.title" msgstr "外掛" -#: src/app/main/ui/workspace/plugins.cljs:438 +#: src/app/main/ui/workspace/plugins.cljs:439 msgid "workspace.plugins.try-out.cancel" msgstr "不是現在" -#: src/app/main/ui/workspace/plugins.cljs:431 +#: src/app/main/ui/workspace/plugins.cljs:432 msgid "workspace.plugins.try-out.message" msgstr "想看看嗎?它將在您當前的團隊中以新草稿開啟。(如果不想,您隨時可以在任何檔案的已安裝外掛中找到它。)" -#: src/app/main/ui/workspace/plugins.cljs:427 +#: src/app/main/ui/workspace/plugins.cljs:428 msgid "workspace.plugins.try-out.title" msgstr "'%s' 外掛已為您的使用者安裝!" -#: src/app/main/ui/workspace/plugins.cljs:444 +#: src/app/main/ui/workspace/plugins.cljs:445 msgid "workspace.plugins.try-out.try" msgstr "嘗試外掛" @@ -5883,7 +5850,7 @@ msgstr "新增彈性布局" msgid "workspace.shape.menu.add-grid" msgstr "新增網格佈局" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1015, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1016, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1040 msgid "workspace.shape.menu.add-layout" msgstr "新增佈局" @@ -5923,7 +5890,7 @@ msgstr "複製屬性" msgid "workspace.shape.menu.copy-text" msgstr "複製為純文字" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:481 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 msgid "workspace.shape.menu.create-annotation" msgstr "建立注釋" @@ -5931,11 +5898,11 @@ msgstr "建立注釋" msgid "workspace.shape.menu.create-artboard-from-selection" msgstr "選擇面板" -#: src/app/main/ui/workspace/context_menu.cljs:588 +#: src/app/main/ui/workspace/context_menu.cljs:590 msgid "workspace.shape.menu.create-component" msgstr "建立元件" -#: src/app/main/ui/workspace/context_menu.cljs:592 +#: src/app/main/ui/workspace/context_menu.cljs:594 msgid "workspace.shape.menu.create-multiple-components" msgstr "建立多個元件" @@ -5943,7 +5910,7 @@ msgstr "建立多個元件" msgid "workspace.shape.menu.cut" msgstr "剪下" -#: src/app/main/ui/workspace/context_menu.cljs:625, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:779, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1057 +#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:780, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1058 msgid "workspace.shape.menu.delete" msgstr "刪除" @@ -5951,15 +5918,15 @@ msgstr "刪除" msgid "workspace.shape.menu.delete-flow-start" msgstr "刪除流程開始" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:486 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:495 msgid "workspace.shape.menu.detach-instance" msgstr "分離實例" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:485 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:494 msgid "workspace.shape.menu.detach-instances-in-bulk" msgstr "分離實例" -#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:87 +#: src/app/main/ui/workspace/context_menu.cljs:445, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 msgid "workspace.shape.menu.difference" msgstr "差異" @@ -5971,11 +5938,11 @@ msgstr "複本" msgid "workspace.shape.menu.edit" msgstr "編輯" -#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:97 +#: src/app/main/ui/workspace/context_menu.cljs:451, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:111 msgid "workspace.shape.menu.exclude" msgstr "排除" -#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:101 +#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:115 msgid "workspace.shape.menu.flatten" msgstr "扁平化" @@ -6008,19 +5975,19 @@ msgstr "前往主要元件檔案" msgid "workspace.shape.menu.group" msgstr "群組" -#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:159 +#: src/app/main/ui/workspace/context_menu.cljs:475, src/app/main/ui/workspace/sidebar/layer_item.cljs:155 msgid "workspace.shape.menu.hide" msgstr "隱藏" -#: src/app/main/ui/workspace/context_menu.cljs:701, src/app/main/ui/workspace/main_menu.cljs:420 +#: src/app/main/ui/workspace/context_menu.cljs:704, src/app/main/ui/workspace/main_menu.cljs:448 msgid "workspace.shape.menu.hide-ui" msgstr "顯示/隱藏使用者介面" -#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:92 +#: src/app/main/ui/workspace/context_menu.cljs:448, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:106 msgid "workspace.shape.menu.intersection" msgstr "交集" -#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:167, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:209 +#: src/app/main/ui/workspace/context_menu.cljs:483, src/app/main/ui/workspace/sidebar/layer_item.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:220 msgid "workspace.shape.menu.lock" msgstr "鎖定" @@ -6028,7 +5995,7 @@ msgstr "鎖定" msgid "workspace.shape.menu.mask" msgstr "遮罩" -#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:698 +#: src/app/main/ui/workspace/context_menu.cljs:208, src/app/main/ui/workspace/context_menu.cljs:701 msgid "workspace.shape.menu.paste" msgstr "貼上" @@ -6048,7 +6015,7 @@ msgstr "移除彈性佈局" msgid "workspace.shape.menu.remove-grid" msgstr "移除網格佈局" -#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1033 +#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1034 msgid "workspace.shape.menu.remove-layout" msgstr "移除佈局" @@ -6056,11 +6023,11 @@ msgstr "移除佈局" msgid "workspace.shape.menu.rename" msgstr "重新命名" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:490 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499 msgid "workspace.shape.menu.reset-overrides" msgstr "重設覆蓋" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:496 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:505 msgid "workspace.shape.menu.restore-main" msgstr "還原主要元件" @@ -6068,15 +6035,15 @@ msgstr "還原主要元件" msgid "workspace.shape.menu.select-layer" msgstr "選擇圖層" -#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:158 +#: src/app/main/ui/workspace/context_menu.cljs:472, src/app/main/ui/workspace/sidebar/layer_item.cljs:154 msgid "workspace.shape.menu.show" msgstr "顯示" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:478 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:487, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:1111 msgid "workspace.shape.menu.show-in-assets" msgstr "在資源面板中顯示" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:499, src/app/main/ui/workspace/sidebar/assets/components.cljs:634 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:508, src/app/main/ui/workspace/sidebar/assets/components.cljs:630 msgid "workspace.shape.menu.show-main" msgstr "顯示主要元件" @@ -6089,6 +6056,7 @@ msgid "workspace.shape.menu.thumbnail-set" msgstr "設置為縮圖" #: src/app/main/ui/workspace/context_menu.cljs:436 +#, unused msgid "workspace.shape.menu.transform-to-path" msgstr "轉換為路徑" @@ -6096,11 +6064,11 @@ msgstr "轉換為路徑" msgid "workspace.shape.menu.ungroup" msgstr "取消群組" -#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:82 +#: src/app/main/ui/workspace/context_menu.cljs:442, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:96 msgid "workspace.shape.menu.union" msgstr "合併" -#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:166, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:215 +#: src/app/main/ui/workspace/context_menu.cljs:480, src/app/main/ui/workspace/sidebar/layer_item.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:226 msgid "workspace.shape.menu.unlock" msgstr "解除鎖定" @@ -6113,7 +6081,7 @@ msgstr "取消遮罩" msgid "workspace.shape.menu.update-components-in-bulk" msgstr "更新主要元件" -#: src/app/main/ui/workspace/sidebar/assets/common.cljs:502 +#: src/app/main/ui/workspace/sidebar/assets/common.cljs:511 msgid "workspace.shape.menu.update-main" msgstr "更新主要元件" @@ -6125,11 +6093,11 @@ msgstr "摺疊側邊欄" msgid "workspace.sidebar.expand" msgstr "展開側邊欄" -#: src/app/main/ui/workspace/right_header.cljs:230, src/app/main/ui/workspace/right_header.cljs:231 +#: src/app/main/ui/workspace/right_header.cljs:231, src/app/main/ui/workspace/right_header.cljs:232 msgid "workspace.sidebar.history" msgstr "歷史紀錄" -#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:143 +#: src/app/main/ui/workspace/sidebar/layers.cljs:510, src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:137, src/app/main/ui/workspace/sidebar.cljs:144 msgid "workspace.sidebar.layers" msgstr "層級" @@ -6169,11 +6137,11 @@ msgstr "文字" msgid "workspace.sidebar.options.svg-attrs.title" msgstr "匯入的 SVG 屬性" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:238 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239 msgid "workspace.sidebar.sitemap" msgstr "頁" -#: src/app/main/ui/workspace/sidebar/sitemap.cljs:248 +#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249 msgid "workspace.sidebar.sitemap.add-page" msgstr "增加頁面" @@ -6190,11 +6158,11 @@ msgstr "%s 個啟用的主題" msgid "workspace.tokens.add set" msgstr "新增集" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:161 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:136 msgid "workspace.tokens.applied-to" msgstr "應用於" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:338 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:337 msgid "workspace.tokens.back-to-themes" msgstr "返回主題列表" @@ -6202,15 +6170,15 @@ msgstr "返回主題列表" msgid "workspace.tokens.create-new-theme" msgstr "立即建立您的第一個主題。" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:100, src/app/main/ui/workspace/tokens/themes.cljs:44 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:96, src/app/main/ui/workspace/tokens/themes.cljs:44 msgid "workspace.tokens.create-one" msgstr "建立一個。" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:534 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:552 msgid "workspace.tokens.create-token" msgstr "建立新的 %s 權杖(token)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:337 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:338 msgid "workspace.tokens.delete" msgstr "刪除權杖(token)" @@ -6218,15 +6186,15 @@ msgstr "刪除權杖(token)" msgid "workspace.tokens.delete-theme-title" msgstr "刪除主題" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:334 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:335 msgid "workspace.tokens.duplicate" msgstr "複製權杖(token)" -#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:321 +#: src/app/main/ui/workspace/tokens/management/context_menu.cljs:322 msgid "workspace.tokens.edit" msgstr "編輯權杖(token)" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:328 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:327 msgid "workspace.tokens.edit-theme-title" msgstr "編輯主題" @@ -6234,11 +6202,7 @@ msgstr "編輯主題" msgid "workspace.tokens.edit-themes" msgstr "編輯主題" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:533 -msgid "workspace.tokens.edit-token" -msgstr "編輯權杖(token)" - -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:540 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:558 msgid "workspace.tokens.enter-token-name" msgstr "輸入 %s 權杖(token)名稱" @@ -6259,7 +6223,7 @@ msgstr "主題" msgid "workspace.tokens.no-active-theme" msgstr "目前沒有啟用的主題" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:76 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:72 msgid "workspace.tokens.no-permisions-set" msgstr "您需要是編輯者才能啟用/停用集" @@ -6267,11 +6231,11 @@ msgstr "您需要是編輯者才能啟用/停用集" msgid "workspace.tokens.no-permission-themes" msgstr "您需要是編輯者才能使用主題" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:480 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:483 msgid "workspace.tokens.no-sets-create" msgstr "目前尚未定義任何集,請先建立一個。" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:97, src/app/main/ui/workspace/tokens/sets/lists.cljs:103 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:93, src/app/main/ui/workspace/tokens/sets/lists.cljs:99 msgid "workspace.tokens.no-sets-yet" msgstr "目前尚未定義任何集。" @@ -6283,16 +6247,16 @@ msgstr "目前尚未定義主題。" msgid "workspace.tokens.no-themes-currently" msgstr "現主時您沒有任何主題。" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:145 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:120 #, fuzzy msgid "workspace.tokens.original-value" msgstr "原始值:%s" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:153 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:128 msgid "workspace.tokens.ref-not-valid" msgstr "參照無效或不在任何啟用的集內" -#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:39, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:44, src/app/main/ui/workspace/tokens/management/token_pill.cljs:146 +#: src/app/main/data/workspace/tokens/warnings.cljs:15, src/app/main/data/workspace/tokens/warnings.cljs:19, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:56, src/app/main/ui/workspace/colorpicker/color_tokens.cljs:84, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:100, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:41, src/app/main/ui/workspace/tokens/management/create/input_tokens_value.cljs:46, src/app/main/ui/workspace/tokens/management/token_pill.cljs:121 #, fuzzy msgid "workspace.tokens.resolved-value" msgstr "解析後的值:%s" @@ -6301,11 +6265,11 @@ msgstr "解析後的值:%s" msgid "workspace.tokens.save-theme" msgstr "儲存主題" -#: src/app/main/ui/workspace/tokens/sets/lists.cljs:209, src/app/main/ui/workspace/tokens/sets/lists.cljs:315 +#: src/app/main/ui/workspace/tokens/sets/lists.cljs:204, src/app/main/ui/workspace/tokens/sets/lists.cljs:309 msgid "workspace.tokens.select-set" msgstr "選擇集。" -#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:343 +#: src/app/main/ui/workspace/tokens/themes/create_modal.cljs:342 msgid "workspace.tokens.set-selection-theme" msgstr "定義此主題選項應使用哪些權杖(token)集:" @@ -6318,22 +6282,22 @@ msgstr "權杖集未啟用" msgid "workspace.tokens.theme-name" msgstr "主題 %s" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:589, src/app/main/ui/workspace/tokens/management/create/form.cljs:590 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:608, src/app/main/ui/workspace/tokens/management/create/form.cljs:609 #, fuzzy msgid "workspace.tokens.token-description" msgstr "描述" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:539 +#: src/app/main/ui/workspace/colorpicker/color_tokens.cljs:83, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:109, src/app/main/ui/workspace/tokens/management/create/form.cljs:557 msgid "workspace.tokens.token-name" msgstr "名稱" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:66 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:69 msgid "workspace.tokens.token-name-validation-error" msgstr "" " 不是有效的權杖(token)名稱。\n" "權杖名稱應該只包含字母和數字,並由 . 字元分隔,且不得以 $ 符號開頭。" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:567 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:585 msgid "workspace.tokens.token-value" msgstr "值" @@ -6341,19 +6305,19 @@ msgstr "值" msgid "workspace.tokens.tokens-section-title" msgstr "權杖(TOKENS) - %s" -#: src/app/main/ui/workspace/tokens/sidebar.cljs:125 +#: src/app/main/ui/workspace/tokens/sidebar.cljs:121 msgid "workspace.tokens.tools" msgstr "工具" -#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:156 +#: src/app/main/ui/workspace/tokens/management/token_pill.cljs:131 msgid "workspace.tokens.value-not-valid" msgstr "該值無效" -#: src/app/main/ui/workspace/tokens/management/create/form.cljs:563 +#: src/app/main/ui/workspace/tokens/management/create/form.cljs:581 msgid "workspace.tokens.warning-name-change" msgstr "重新命名此權杖(token)將會中斷對其舊名稱的任何參照。" -#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:145 +#: src/app/main/ui/workspace/sidebar.cljs:139, src/app/main/ui/workspace/sidebar.cljs:146 msgid "workspace.toolbar.assets" msgstr "資源" @@ -6361,7 +6325,7 @@ msgstr "資源" msgid "workspace.toolbar.color-palette" msgstr "色彩調色板(%s)" -#: src/app/main/ui/workspace/right_header.cljs:216, src/app/main/ui/workspace/right_header.cljs:217 +#: src/app/main/ui/workspace/right_header.cljs:217, src/app/main/ui/workspace/right_header.cljs:218 msgid "workspace.toolbar.comments" msgstr "留言 (%s)" @@ -6568,19 +6532,19 @@ msgstr "操作覆蓋%s" msgid "workspace.undo.title" msgstr "歷史" -#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:84 +#: src/app/main/data/workspace/libraries.cljs:1228, src/app/main/ui/workspace/sidebar/versions.cljs:84 msgid "workspace.updates.dismiss" msgstr "解散" -#: src/app/main/data/workspace/libraries.cljs:1221 +#: src/app/main/data/workspace/libraries.cljs:1226 msgid "workspace.updates.more-info" msgstr "更多資訊" -#: src/app/main/data/workspace/libraries.cljs:1219 +#: src/app/main/data/workspace/libraries.cljs:1224 msgid "workspace.updates.there-are-updates" msgstr "共用檔案庫有更新" -#: src/app/main/data/workspace/libraries.cljs:1225 +#: src/app/main/data/workspace/libraries.cljs:1230 msgid "workspace.updates.update" msgstr "更新" @@ -6640,11 +6604,11 @@ msgstr "請問您想要還原此版本嗎?" msgid "workspace.versions.snapshot-menu" msgstr "開啟快照選單" -#: src/app/main/ui/workspace/sidebar.cljs:236 +#: src/app/main/ui/workspace/sidebar.cljs:237 msgid "workspace.versions.tab.actions" msgstr "操作" -#: src/app/main/ui/workspace/sidebar.cljs:234 +#: src/app/main/ui/workspace/sidebar.cljs:235 msgid "workspace.versions.tab.history" msgstr "歷史紀錄" diff --git a/frontend/yarn.lock b/frontend/yarn.lock index cf273005f2..00f66ea374 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -22,16 +22,35 @@ __metadata: languageName: node linkType: hard -"@asamuzakjp/css-color@npm:^3.2.0": - version: 3.2.0 - resolution: "@asamuzakjp/css-color@npm:3.2.0" +"@asamuzakjp/css-color@npm:^4.0.3": + version: 4.0.4 + resolution: "@asamuzakjp/css-color@npm:4.0.4" dependencies: - "@csstools/css-calc": "npm:^2.1.3" - "@csstools/css-color-parser": "npm:^3.0.9" - "@csstools/css-parser-algorithms": "npm:^3.0.4" - "@csstools/css-tokenizer": "npm:^3.0.3" - lru-cache: "npm:^10.4.3" - checksum: 10c0/a4bf1c831751b1fae46b437e37e8a38c0b5bd58d23230157ae210bd1e905fe509b89b7c243e63d1522d852668a6292ed730a160e21342772b4e5b7b8ea14c092 + "@csstools/css-calc": "npm:^2.1.4" + "@csstools/css-color-parser": "npm:^3.0.10" + "@csstools/css-parser-algorithms": "npm:^3.0.5" + "@csstools/css-tokenizer": "npm:^3.0.4" + lru-cache: "npm:^11.1.0" + checksum: 10c0/5a4eb3c8594f58f3df06c867a6cda4a33f702f5cd682d6afa5074813f16fd05e732653ac79bd6fc66390554e158ac478103ad5e885fd9cf154b69bb67639e82f + languageName: node + linkType: hard + +"@asamuzakjp/dom-selector@npm:^6.5.4": + version: 6.5.4 + resolution: "@asamuzakjp/dom-selector@npm:6.5.4" + dependencies: + "@asamuzakjp/nwsapi": "npm:^2.3.9" + bidi-js: "npm:^1.0.3" + css-tree: "npm:^3.1.0" + is-potential-custom-element-name: "npm:^1.0.1" + checksum: 10c0/aeb032b0f7832c891d5f9900b381fe0c7187343eb46a353f07ffbaac2d222bb80ac7504006e7e1b4c45af9e640fd093e14f951870a146d3ad80fd67670c9a115 + languageName: node + linkType: hard + +"@asamuzakjp/nwsapi@npm:^2.3.9": + version: 2.3.9 + resolution: "@asamuzakjp/nwsapi@npm:2.3.9" + checksum: 10c0/869b81382e775499c96c45c6dbe0d0766a6da04bcf0abb79f5333535c4e19946851acaa43398f896e2ecc5a1de9cf3db7cf8c4b1afac1ee3d15e21584546d74d languageName: node linkType: hard @@ -483,14 +502,14 @@ __metadata: languageName: node linkType: hard -"@csstools/color-helpers@npm:^5.0.2": - version: 5.0.2 - resolution: "@csstools/color-helpers@npm:5.0.2" - checksum: 10c0/bebaddb28b9eb58b0449edd5d0c0318fa88f3cb079602ee27e88c9118070d666dcc4e09a5aa936aba2fde6ba419922ade07b7b506af97dd7051abd08dfb2959b +"@csstools/color-helpers@npm:^5.1.0": + version: 5.1.0 + resolution: "@csstools/color-helpers@npm:5.1.0" + checksum: 10c0/b7f99d2e455cf1c9b41a67a5327d5d02888cd5c8802a68b1887dffef537d9d4bc66b3c10c1e62b40bbed638b6c1d60b85a232f904ed7b39809c4029cb36567db languageName: node linkType: hard -"@csstools/css-calc@npm:^2.1.3, @csstools/css-calc@npm:^2.1.4": +"@csstools/css-calc@npm:^2.1.4": version: 2.1.4 resolution: "@csstools/css-calc@npm:2.1.4" peerDependencies: @@ -500,20 +519,20 @@ __metadata: languageName: node linkType: hard -"@csstools/css-color-parser@npm:^3.0.9": - version: 3.0.10 - resolution: "@csstools/css-color-parser@npm:3.0.10" +"@csstools/css-color-parser@npm:^3.0.10": + version: 3.1.0 + resolution: "@csstools/css-color-parser@npm:3.1.0" dependencies: - "@csstools/color-helpers": "npm:^5.0.2" + "@csstools/color-helpers": "npm:^5.1.0" "@csstools/css-calc": "npm:^2.1.4" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.5 "@csstools/css-tokenizer": ^3.0.4 - checksum: 10c0/8f8a2395b117c2f09366b5c9bf49bc740c92a65b6330fe3cc1e76abafd0d1000e42a657d7b0a3814846a66f1d69896142f7e36d7a4aca77de977e5cc5f944747 + checksum: 10c0/0e0c670ad54ec8ec4d9b07568b80defd83b9482191f5e8ca84ab546b7be6db5d7cc2ba7ac9fae54488b129a4be235d6183d3aab4416fec5e89351f73af4222c5 languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^3.0.4": +"@csstools/css-parser-algorithms@npm:^3.0.5": version: 3.0.5 resolution: "@csstools/css-parser-algorithms@npm:3.0.5" peerDependencies: @@ -522,7 +541,16 @@ __metadata: languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^3.0.3": +"@csstools/css-syntax-patches-for-csstree@npm:^1.0.14": + version: 1.0.14 + resolution: "@csstools/css-syntax-patches-for-csstree@npm:1.0.14" + peerDependencies: + postcss: ^8.4 + checksum: 10c0/e431cf5aa4ccd6a40f4a417663ac7178c822c5427b9c8473e466257dc46dd9698e3852d5517ec220b7d1d1ea911e9007ecb429464329ae169a0aa68b56f1c3ac + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^3.0.4": version: 3.0.4 resolution: "@csstools/css-tokenizer@npm:3.0.4" checksum: 10c0/3b589f8e9942075a642213b389bab75a2d50d05d203727fcdac6827648a5572674caff07907eff3f9a2389d86a4ee47308fafe4f8588f4a77b7167c588d2559f @@ -561,6 +589,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/aix-ppc64@npm:0.25.9" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/android-arm64@npm:0.25.5" @@ -568,6 +603,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-arm64@npm:0.25.9" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/android-arm@npm:0.25.5" @@ -575,6 +617,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-arm@npm:0.25.9" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/android-x64@npm:0.25.5" @@ -582,6 +631,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-x64@npm:0.25.9" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/darwin-arm64@npm:0.25.5" @@ -589,6 +645,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/darwin-arm64@npm:0.25.9" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/darwin-x64@npm:0.25.5" @@ -596,6 +659,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/darwin-x64@npm:0.25.9" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/freebsd-arm64@npm:0.25.5" @@ -603,6 +673,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/freebsd-arm64@npm:0.25.9" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/freebsd-x64@npm:0.25.5" @@ -610,6 +687,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/freebsd-x64@npm:0.25.9" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-arm64@npm:0.25.5" @@ -617,6 +701,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-arm64@npm:0.25.9" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-arm@npm:0.25.5" @@ -624,6 +715,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-arm@npm:0.25.9" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-ia32@npm:0.25.5" @@ -631,6 +729,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-ia32@npm:0.25.9" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-loong64@npm:0.25.5" @@ -638,6 +743,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-loong64@npm:0.25.9" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-mips64el@npm:0.25.5" @@ -645,6 +757,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-mips64el@npm:0.25.9" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-ppc64@npm:0.25.5" @@ -652,6 +771,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-ppc64@npm:0.25.9" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-riscv64@npm:0.25.5" @@ -659,6 +785,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-riscv64@npm:0.25.9" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-s390x@npm:0.25.5" @@ -666,6 +799,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-s390x@npm:0.25.9" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/linux-x64@npm:0.25.5" @@ -673,6 +813,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-x64@npm:0.25.9" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-arm64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/netbsd-arm64@npm:0.25.5" @@ -680,6 +827,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/netbsd-arm64@npm:0.25.9" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/netbsd-x64@npm:0.25.5" @@ -687,6 +841,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/netbsd-x64@npm:0.25.9" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-arm64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/openbsd-arm64@npm:0.25.5" @@ -694,6 +855,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openbsd-arm64@npm:0.25.9" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/openbsd-x64@npm:0.25.5" @@ -701,6 +869,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openbsd-x64@npm:0.25.9" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openharmony-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openharmony-arm64@npm:0.25.9" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/sunos-x64@npm:0.25.5" @@ -708,6 +890,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/sunos-x64@npm:0.25.9" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/win32-arm64@npm:0.25.5" @@ -715,6 +904,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-arm64@npm:0.25.9" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/win32-ia32@npm:0.25.5" @@ -722,6 +918,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-ia32@npm:0.25.9" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.25.5": version: 0.25.5 resolution: "@esbuild/win32-x64@npm:0.25.5" @@ -729,6 +932,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-x64@npm:0.25.9" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@gulp-sourcemaps/identity-map@npm:^2.0.1": version: 2.0.1 resolution: "@gulp-sourcemaps/identity-map@npm:2.0.1" @@ -2507,16 +2717,6 @@ __metadata: languageName: node linkType: hard -"@types/node-fetch@npm:^2.6.12": - version: 2.6.12 - resolution: "@types/node-fetch@npm:2.6.12" - dependencies: - "@types/node": "npm:*" - form-data: "npm:^4.0.0" - checksum: 10c0/7693acad5499b7df2d1727d46cff092a63896dc04645f36b973dd6dd754a59a7faba76fcb777bdaa35d80625c6a9dd7257cca9c401a4bab03b04480cda7fd1af - languageName: node - linkType: hard - "@types/node@npm:*": version: 24.0.3 resolution: "@types/node@npm:24.0.3" @@ -3249,6 +3449,15 @@ __metadata: languageName: node linkType: hard +"bidi-js@npm:^1.0.3": + version: 1.0.3 + resolution: "bidi-js@npm:1.0.3" + dependencies: + require-from-string: "npm:^2.0.2" + checksum: 10c0/fdddea4aa4120a34285486f2267526cd9298b6e8b773ad25e765d4f104b6d7437ab4ba542e6939e3ac834a7570bcf121ee2cf6d3ae7cd7082c4b5bedc8f271e1 + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" @@ -3499,6 +3708,16 @@ __metadata: languageName: node linkType: hard +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2, chalk@npm:~4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + "chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -3520,16 +3739,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2, chalk@npm:~4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 - languageName: node - linkType: hard - "chalk@npm:^5.2.0, chalk@npm:^5.3.0": version: 5.4.1 resolution: "chalk@npm:5.4.1" @@ -3857,18 +4066,18 @@ __metadata: languageName: node linkType: hard -"compression@npm:^1.8.0": - version: 1.8.0 - resolution: "compression@npm:1.8.0" +"compression@npm:^1.8.1": + version: 1.8.1 + resolution: "compression@npm:1.8.1" dependencies: bytes: "npm:3.1.2" compressible: "npm:~2.0.18" debug: "npm:2.6.9" negotiator: "npm:~0.6.4" - on-headers: "npm:~1.0.2" + on-headers: "npm:~1.1.0" safe-buffer: "npm:5.2.1" vary: "npm:~1.1.2" - checksum: 10c0/804d3c8430939f4fd88e5128333f311b4035f6425a7f2959d74cfb5c98ef3a3e3e18143208f3f9d0fcae4cd3bcf3d2fbe525e0fcb955e6e146e070936f025a24 + checksum: 10c0/85114b0b91c16594dc8c671cd9b05ef5e465066a60e5a4ed8b4551661303559a896ed17bb72c4234c04064e078f6ca86a34b8690349499a43f6fc4b844475da4 languageName: node linkType: hard @@ -3888,21 +4097,20 @@ __metadata: languageName: node linkType: hard -"concurrently@npm:^9.1.2": - version: 9.1.2 - resolution: "concurrently@npm:9.1.2" +"concurrently@npm:^9.2.1": + version: 9.2.1 + resolution: "concurrently@npm:9.2.1" dependencies: - chalk: "npm:^4.1.2" - lodash: "npm:^4.17.21" - rxjs: "npm:^7.8.1" - shell-quote: "npm:^1.8.1" - supports-color: "npm:^8.1.1" - tree-kill: "npm:^1.2.2" - yargs: "npm:^17.7.2" + chalk: "npm:4.1.2" + rxjs: "npm:7.8.2" + shell-quote: "npm:1.8.3" + supports-color: "npm:8.1.1" + tree-kill: "npm:1.2.2" + yargs: "npm:17.7.2" bin: conc: dist/bin/concurrently.js concurrently: dist/bin/concurrently.js - checksum: 10c0/88e00269366aa885ca2b97fd53b04e7af2b0f31774d991bfc0e88c0de61cdebdf115ddacc9c897fbd1f1b90369014637fa77045a171d072a75693332b36dcc70 + checksum: 10c0/da37f239f82eb7ac24f5ddb56259861e5f1d6da2ade7602b6ea7ad3101b13b5ccec02a77b7001402d1028ff2fdc38eed55644b32853ad5abf30e057002a963aa languageName: node linkType: hard @@ -4146,13 +4354,14 @@ __metadata: languageName: node linkType: hard -"cssstyle@npm:^4.2.1": - version: 4.4.0 - resolution: "cssstyle@npm:4.4.0" +"cssstyle@npm:^5.3.0": + version: 5.3.0 + resolution: "cssstyle@npm:5.3.0" dependencies: - "@asamuzakjp/css-color": "npm:^3.2.0" - rrweb-cssom: "npm:^0.8.0" - checksum: 10c0/6a9f7e32679abb959643ac169abfc920f5d32bbf4d61cd34b49a683e4dd2f42036cba6f503c75396a760f2872070e2def02cf2046850c43263f7ecb75f8aa80a + "@asamuzakjp/css-color": "npm:^4.0.3" + "@csstools/css-syntax-patches-for-csstree": "npm:^1.0.14" + css-tree: "npm:^3.1.0" + checksum: 10c0/6ceddc5b696d1220b9a3e41775860f58d29046cdbabc1e6b9c19bc48a6bfdcde749c45023417abf7ca3319429566c079a3e6f6e191ceab159dbced6187cb8b7c languageName: node linkType: hard @@ -4183,13 +4392,13 @@ __metadata: languageName: node linkType: hard -"data-urls@npm:^5.0.0": - version: 5.0.0 - resolution: "data-urls@npm:5.0.0" +"data-urls@npm:^6.0.0": + version: 6.0.0 + resolution: "data-urls@npm:6.0.0" dependencies: whatwg-mimetype: "npm:^4.0.0" - whatwg-url: "npm:^14.0.0" - checksum: 10c0/1b894d7d41c861f3a4ed2ae9b1c3f0909d4575ada02e36d3d3bc584bdd84278e20709070c79c3b3bff7ac98598cb191eb3e86a89a79ea4ee1ef360e1694f92ad + whatwg-url: "npm:^15.0.0" + checksum: 10c0/952102a8e6282fea112f7120d79fac482a2f99e20c67f9cb069d661c00627305b042e1f7e3cef8e4bbc795b42c5d481bbc9c6effeff5bb1427f9acaf1722bd35 languageName: node linkType: hard @@ -4904,7 +5113,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0, esbuild@npm:^0.25.0, esbuild@npm:^0.25.5": +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0, esbuild@npm:^0.25.0": version: 0.25.5 resolution: "esbuild@npm:0.25.5" dependencies: @@ -4990,6 +5199,95 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.25.9": + version: 0.25.9 + resolution: "esbuild@npm:0.25.9" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.9" + "@esbuild/android-arm": "npm:0.25.9" + "@esbuild/android-arm64": "npm:0.25.9" + "@esbuild/android-x64": "npm:0.25.9" + "@esbuild/darwin-arm64": "npm:0.25.9" + "@esbuild/darwin-x64": "npm:0.25.9" + "@esbuild/freebsd-arm64": "npm:0.25.9" + "@esbuild/freebsd-x64": "npm:0.25.9" + "@esbuild/linux-arm": "npm:0.25.9" + "@esbuild/linux-arm64": "npm:0.25.9" + "@esbuild/linux-ia32": "npm:0.25.9" + "@esbuild/linux-loong64": "npm:0.25.9" + "@esbuild/linux-mips64el": "npm:0.25.9" + "@esbuild/linux-ppc64": "npm:0.25.9" + "@esbuild/linux-riscv64": "npm:0.25.9" + "@esbuild/linux-s390x": "npm:0.25.9" + "@esbuild/linux-x64": "npm:0.25.9" + "@esbuild/netbsd-arm64": "npm:0.25.9" + "@esbuild/netbsd-x64": "npm:0.25.9" + "@esbuild/openbsd-arm64": "npm:0.25.9" + "@esbuild/openbsd-x64": "npm:0.25.9" + "@esbuild/openharmony-arm64": "npm:0.25.9" + "@esbuild/sunos-x64": "npm:0.25.9" + "@esbuild/win32-arm64": "npm:0.25.9" + "@esbuild/win32-ia32": "npm:0.25.9" + "@esbuild/win32-x64": "npm:0.25.9" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/openharmony-arm64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/aaa1284c75fcf45c82f9a1a117fe8dc5c45628e3386bda7d64916ae27730910b51c5aec7dd45a6ba19256be30ba2935e64a8f011a3f0539833071e06bf76d5b3 + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -5094,10 +5392,10 @@ __metadata: languageName: node linkType: hard -"eventsource-parser@npm:^3.0.2": - version: 3.0.2 - resolution: "eventsource-parser@npm:3.0.2" - checksum: 10c0/067c6e60b7c68a4577630cc7e11d2aaeef52005e377a213308c7c2350596a175d5a179671d85f570726dce3f451c15d174ece4479ce68a1805686c88950d08dd +"eventsource-parser@npm:^3.0.6": + version: 3.0.6 + resolution: "eventsource-parser@npm:3.0.6" + checksum: 10c0/70b8ccec7dac767ef2eca43f355e0979e70415701691382a042a2df8d6a68da6c2fca35363669821f3da876d29c02abe9b232964637c1b6635c940df05ada78a languageName: node linkType: hard @@ -5512,11 +5810,11 @@ __metadata: "@types/node": "npm:^22.15.21" "@zip.js/zip.js": "patch:@zip.js/zip.js@npm%3A2.7.60#~/.yarn/patches/@zip.js-zip.js-npm-2.7.60-b6b814410b.patch" autoprefixer: "npm:^10.4.21" - compression: "npm:^1.8.0" - concurrently: "npm:^9.1.2" + compression: "npm:^1.8.1" + concurrently: "npm:^9.2.1" date-fns: "npm:^4.1.0" - esbuild: "npm:^0.25.5" - eventsource-parser: "npm:^3.0.2" + esbuild: "npm:^0.25.9" + eventsource-parser: "npm:^3.0.6" express: "npm:^5.1.0" fancy-log: "npm:^2.0.0" getopts: "npm:^2.3.0" @@ -5529,7 +5827,7 @@ __metadata: gulp-sourcemaps: "npm:^3.0.0" gulp-svg-sprite: "npm:^2.0.3" js-beautify: "npm:^1.15.4" - jsdom: "npm:^26.1.0" + jsdom: "npm:^27.0.0" lodash: "npm:^4.17.21" lodash.debounce: "npm:^4.0.8" map-stream: "npm:0.0.7" @@ -5547,8 +5845,8 @@ __metadata: pretty-time: "npm:^1.1.0" prop-types: "npm:^15.8.1" randomcolor: "npm:^0.6.2" - react: "npm:19.1.0" - react-dom: "npm:19.1.0" + react: "npm:19.1.1" + react-dom: "npm:19.1.1" react-error-boundary: "npm:^6.0.0" react-virtualized: "npm:^9.22.6" rimraf: "npm:^6.0.1" @@ -5562,8 +5860,8 @@ __metadata: svg-sprite: "npm:^2.0.4" tdigest: "npm:^0.1.2" tinycolor2: "npm:^1.6.0" - typescript: "npm:^5.8.3" - ua-parser-js: "npm:2.0.3" + typescript: "npm:^5.9.2" + ua-parser-js: "npm:2.0.5" vite: "npm:^6.3.5" vitest: "npm:^3.2.0" wasm-pack: "npm:^0.13.1" @@ -7440,36 +7738,36 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^26.1.0": - version: 26.1.0 - resolution: "jsdom@npm:26.1.0" +"jsdom@npm:^27.0.0": + version: 27.0.0 + resolution: "jsdom@npm:27.0.0" dependencies: - cssstyle: "npm:^4.2.1" - data-urls: "npm:^5.0.0" + "@asamuzakjp/dom-selector": "npm:^6.5.4" + cssstyle: "npm:^5.3.0" + data-urls: "npm:^6.0.0" decimal.js: "npm:^10.5.0" html-encoding-sniffer: "npm:^4.0.0" http-proxy-agent: "npm:^7.0.2" https-proxy-agent: "npm:^7.0.6" is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.16" - parse5: "npm:^7.2.1" + parse5: "npm:^7.3.0" rrweb-cssom: "npm:^0.8.0" saxes: "npm:^6.0.0" symbol-tree: "npm:^3.2.4" - tough-cookie: "npm:^5.1.1" + tough-cookie: "npm:^6.0.0" w3c-xmlserializer: "npm:^5.0.0" - webidl-conversions: "npm:^7.0.0" + webidl-conversions: "npm:^8.0.0" whatwg-encoding: "npm:^3.1.1" whatwg-mimetype: "npm:^4.0.0" - whatwg-url: "npm:^14.1.1" - ws: "npm:^8.18.0" + whatwg-url: "npm:^15.0.0" + ws: "npm:^8.18.2" xml-name-validator: "npm:^5.0.0" peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true - checksum: 10c0/5b14a5bc32ce077a06fb42d1ab95b1191afa5cbbce8859e3b96831c5143becbbcbf0511d4d4934e922d2901443ced2cdc3b734c1cf30b5f73b3e067ce457d0f4 + checksum: 10c0/cc977bd0f48f92b275166b3e64622d83c2073dc309b790ed806246365985743295a7735bc8519a186ccffd42d1f2c16a0fa52a4ea79d2b329a948756db64ade1 languageName: node linkType: hard @@ -7707,7 +8005,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb @@ -7721,6 +8019,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^11.1.0": + version: 11.2.1 + resolution: "lru-cache@npm:11.2.1" + checksum: 10c0/6f0e6b27f368d5e464e7813bd5b0af8f9a81a3a7ce2f40509841fdef07998b2588869f3e70edfbdb3bf705857f7bb21cca58fb01e1a1dc2440a83fcedcb7e8d8 + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -8387,13 +8692,6 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.16": - version: 2.2.20 - resolution: "nwsapi@npm:2.2.20" - checksum: 10c0/07f4dafa3186aef7c007863e90acd4342a34ba9d44b22f14f644fdb311f6086887e21c2fc15efaa826c2bc39ab2bc841364a1a630e7c87e0cb723ba59d729297 - languageName: node - linkType: hard - "nyc@npm:^15.1.0": version: 15.1.0 resolution: "nyc@npm:15.1.0" @@ -8485,10 +8783,10 @@ __metadata: languageName: node linkType: hard -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f +"on-headers@npm:~1.1.0": + version: 1.1.0 + resolution: "on-headers@npm:1.1.0" + checksum: 10c0/2c3b6b0d68ec9adbd561dc2d61c9b14da8ac03d8a2f0fd9e97bdf0600c887d5d97f664ff3be6876cf40cda6e3c587d73a4745e10b426ac50c7664fc5a0dfc0a1 languageName: node linkType: hard @@ -8700,7 +8998,7 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.2.1": +"parse5@npm:^7.3.0": version: 7.3.0 resolution: "parse5@npm:7.3.0" dependencies: @@ -9391,7 +9689,18 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:19.1.0, react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": +"react-dom@npm:19.1.1": + version: 19.1.1 + resolution: "react-dom@npm:19.1.1" + dependencies: + scheduler: "npm:^0.26.0" + peerDependencies: + react: ^19.1.1 + checksum: 10c0/8c91198510521299c56e4e8d5e3a4508b2734fb5e52f29eeac33811de64e76fe586ad32c32182e2e84e070d98df67125da346c3360013357228172dbcd20bcdd + languageName: node + linkType: hard + +"react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": version: 19.1.0 resolution: "react-dom@npm:19.1.0" dependencies: @@ -9458,7 +9767,14 @@ __metadata: languageName: node linkType: hard -"react@npm:19.1.0, react@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": +"react@npm:19.1.1": + version: 19.1.1 + resolution: "react@npm:19.1.1" + checksum: 10c0/8c9769a2dfd02e603af6445058325e6c8a24b47b185d0e461f66a6454765ddcaecb3f0a90184836c68bb509f3c38248359edbc42f0d07c23eb500a5c30c87b4e + languageName: node + linkType: hard + +"react@npm:^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0": version: 19.1.0 resolution: "react@npm:19.1.0" checksum: 10c0/530fb9a62237d54137a13d2cfb67a7db6a2156faed43eecc423f4713d9b20c6f2728b026b45e28fcd72e8eadb9e9ed4b089e99f5e295d2f0ad3134251bdd3698 @@ -9614,6 +9930,13 @@ __metadata: languageName: node linkType: hard +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + "require-main-filename@npm:^2.0.0": version: 2.0.0 resolution: "require-main-filename@npm:2.0.0" @@ -9816,14 +10139,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:8.0.0-alpha.14": - version: 8.0.0-alpha.14 - resolution: "rxjs@npm:8.0.0-alpha.14" - checksum: 10c0/14e4b487455c0940e3d87985cc3f2917ec88ce8cd3ede06071eb071a841d729549d43cab198757863838a4e22c1d7d3e9816f08d37357fa7e3506bdd6f8af56e - languageName: node - linkType: hard - -"rxjs@npm:^7.4.0, rxjs@npm:^7.8.1": +"rxjs@npm:7.8.2, rxjs@npm:^7.4.0, rxjs@npm:^7.8.1": version: 7.8.2 resolution: "rxjs@npm:7.8.2" dependencies: @@ -9832,6 +10148,13 @@ __metadata: languageName: node linkType: hard +"rxjs@npm:8.0.0-alpha.14": + version: 8.0.0-alpha.14 + resolution: "rxjs@npm:8.0.0-alpha.14" + checksum: 10c0/14e4b487455c0940e3d87985cc3f2917ec88ce8cd3ede06071eb071a841d729549d43cab198757863838a4e22c1d7d3e9816f08d37357fa7e3506bdd6f8af56e + languageName: node + linkType: hard + "safe-array-concat@npm:^1.1.3": version: 1.1.3 resolution: "safe-array-concat@npm:1.1.3" @@ -10271,7 +10594,7 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.6.1, shell-quote@npm:^1.8.1": +"shell-quote@npm:1.8.3, shell-quote@npm:^1.6.1": version: 1.8.3 resolution: "shell-quote@npm:1.8.3" checksum: 10c0/bee87c34e1e986cfb4c30846b8e6327d18874f10b535699866f368ade11ea4ee45433d97bf5eada22c4320c27df79c3a6a7eb1bf3ecfc47f2c997d9e5e2672fd @@ -10887,6 +11210,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:8.1.1, supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + "supports-color@npm:^5.3.0, supports-color@npm:^5.4.0, supports-color@npm:^5.5.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -10905,15 +11237,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -11178,21 +11501,21 @@ __metadata: languageName: node linkType: hard -"tldts-core@npm:^6.1.86": - version: 6.1.86 - resolution: "tldts-core@npm:6.1.86" - checksum: 10c0/8133c29375f3f99f88fce5f4d62f6ecb9532b106f31e5423b27c1eb1b6e711bd41875184a456819ceaed5c8b94f43911b1ad57e25c6eb86e1fc201228ff7e2af +"tldts-core@npm:^7.0.14": + version: 7.0.14 + resolution: "tldts-core@npm:7.0.14" + checksum: 10c0/e35f006e3376c70ea2cde436fc808b3017322de62246e7e4a733cc09a60959711cd9dbfd91b67ffe52fbee215d9e41911a39b6c20e8f45544b09f7662355753f languageName: node linkType: hard -"tldts@npm:^6.1.32": - version: 6.1.86 - resolution: "tldts@npm:6.1.86" +"tldts@npm:^7.0.5": + version: 7.0.14 + resolution: "tldts@npm:7.0.14" dependencies: - tldts-core: "npm:^6.1.86" + tldts-core: "npm:^7.0.14" bin: tldts: bin/cli.js - checksum: 10c0/27ae7526d9d78cb97b2de3f4d102e0b4321d1ccff0648a7bb0e039ed54acbce86bacdcd9cd3c14310e519b457854e7bafbef1f529f58a1e217a737ced63f0940 + checksum: 10c0/87dd69b68e07c0cb3913c4b7fb4a57a3b4826a664637725ab9226aa01a4786d003c181b0525d09bfb1bb0c16802b4350620443da64d9e947a7ff4c19f2f4acbf languageName: node linkType: hard @@ -11237,16 +11560,16 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^5.1.1": - version: 5.1.2 - resolution: "tough-cookie@npm:5.1.2" +"tough-cookie@npm:^6.0.0": + version: 6.0.0 + resolution: "tough-cookie@npm:6.0.0" dependencies: - tldts: "npm:^6.1.32" - checksum: 10c0/5f95023a47de0f30a902bba951664b359725597d8adeabc66a0b93a931c3af801e1e697dae4b8c21a012056c0ea88bd2bf4dfe66b2adcf8e2f42cd9796fe0626 + tldts: "npm:^7.0.5" + checksum: 10c0/7b17a461e9c2ac0d0bea13ab57b93b4346d0b8c00db174c963af1e46e4ea8d04148d2a55f2358fc857db0c0c65208a98e319d0c60693e32e0c559a9d9cf20cb5 languageName: node linkType: hard -"tr46@npm:^5.1.0": +"tr46@npm:^5.1.1": version: 5.1.1 resolution: "tr46@npm:5.1.1" dependencies: @@ -11271,7 +11594,7 @@ __metadata: languageName: node linkType: hard -"tree-kill@npm:^1.2.2": +"tree-kill@npm:1.2.2, tree-kill@npm:^1.2.2": version: 1.2.2 resolution: "tree-kill@npm:1.2.2" bin: @@ -11420,23 +11743,23 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.8.3": - version: 5.8.3 - resolution: "typescript@npm:5.8.3" +"typescript@npm:^5.9.2": + version: 5.9.2 + resolution: "typescript@npm:5.9.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48 + checksum: 10c0/cd635d50f02d6cf98ed42de2f76289701c1ec587a363369255f01ed15aaf22be0813226bff3c53e99d971f9b540e0b3cc7583dbe05faded49b1b0bed2f638a18 languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.8.3#optional!builtin": - version: 5.8.3 - resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" +"typescript@patch:typescript@npm%3A^5.9.2#optional!builtin": + version: 5.9.2 + resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 10c0/39117e346ff8ebd87ae1510b3a77d5d92dae5a89bde588c747d25da5c146603a99c8ee588c7ef80faaf123d89ed46f6dbd918d534d641083177d5fac38b8a1cb + checksum: 10c0/34d2a8e23eb8e0d1875072064d5e1d9c102e0bdce56a10a25c0b917b8aa9001a9cf5c225df12497e99da107dc379360bc138163c66b55b95f5b105b50578067e languageName: node linkType: hard @@ -11447,18 +11770,17 @@ __metadata: languageName: node linkType: hard -"ua-parser-js@npm:2.0.3": - version: 2.0.3 - resolution: "ua-parser-js@npm:2.0.3" +"ua-parser-js@npm:2.0.5": + version: 2.0.5 + resolution: "ua-parser-js@npm:2.0.5" dependencies: - "@types/node-fetch": "npm:^2.6.12" detect-europe-js: "npm:^0.1.2" is-standalone-pwa: "npm:^0.1.1" - node-fetch: "npm:^2.7.0" ua-is-frozen: "npm:^0.1.2" + undici: "npm:^7.12.0" bin: ua-parser-js: script/cli.js - checksum: 10c0/0fd098a19c11ecddf35f65a9a86a44e4d6147fbed4ad1813d0142c55d305ba2220f41b48c5a60f082552ff4a93bbb5edb1b24de0af45271d1735b63794fef1e0 + checksum: 10c0/9967792d8a41a417547a49fea042beba5436ff33c173caebc64356e3377044e59ee4540175f98e3ce20d45ddc39f848bfa9a91f3c394667e4dbf9421476281ce languageName: node linkType: hard @@ -11504,6 +11826,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^7.12.0": + version: 7.16.0 + resolution: "undici@npm:7.16.0" + checksum: 10c0/efd867792e9f233facf9efa0a087e2d9c3e4415c0b234061b9b40307ca4fa01d945fee4d43c7b564e1b80e0d519bcc682f9f6e0de13c717146c00a80e2f1fb0f + languageName: node + linkType: hard + "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" @@ -11931,10 +12260,10 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^7.0.0": - version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0" - checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 +"webidl-conversions@npm:^8.0.0": + version: 8.0.0 + resolution: "webidl-conversions@npm:8.0.0" + checksum: 10c0/3244e8a6534163bc3ee5f5f48b507b4bb74e34e7cc7c86a50cd02734753042b88343dae48321f34ad61ddc6b5c90cb1a5b2ee757b8be8e6fadc587a9f3db76cd languageName: node linkType: hard @@ -11961,13 +12290,13 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^14.0.0, whatwg-url@npm:^14.1.1": - version: 14.2.0 - resolution: "whatwg-url@npm:14.2.0" +"whatwg-url@npm:^15.0.0": + version: 15.0.0 + resolution: "whatwg-url@npm:15.0.0" dependencies: - tr46: "npm:^5.1.0" - webidl-conversions: "npm:^7.0.0" - checksum: 10c0/f746fc2f4c906607d09537de1227b13f9494c171141e5427ed7d2c0dd0b6a48b43d8e71abaae57d368d0c06b673fd8ec63550b32ad5ed64990c7b0266c2b4272 + tr46: "npm:^5.1.1" + webidl-conversions: "npm:^8.0.0" + checksum: 10c0/7b4f633fcd8fea6d588fb5694a9c4631382b41d31270e1fb3b755923f2c267d456ea1c7122124689e430b6a4e73c7e43e0731f833b33bfedcfffa2a7b4efbfc0 languageName: node linkType: hard @@ -12193,7 +12522,22 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.0, ws@npm:^8.2.3": +"ws@npm:^8.18.2": + version: 8.18.3 + resolution: "ws@npm:8.18.3" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 + languageName: node + linkType: hard + +"ws@npm:^8.2.3": version: 8.18.2 resolution: "ws@npm:8.18.2" peerDependencies: @@ -12313,6 +12657,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:17.7.2, yargs@npm:^17.3.1, yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + "yargs@npm:^15.0.2": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -12332,21 +12691,6 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.3.1, yargs@npm:^17.7.2": - version: 17.7.2 - resolution: "yargs@npm:17.7.2" - dependencies: - cliui: "npm:^8.0.1" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.3" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^21.1.1" - checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 - languageName: node - linkType: hard - "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" diff --git a/library/CHANGES.md b/library/CHANGES.md index 22cd12ea2e..0810204a34 100644 --- a/library/CHANGES.md +++ b/library/CHANGES.md @@ -1,5 +1,16 @@ # CHANGELOG +## 1.0.11 + +- Set correct path if it is not provided on addComponent + + +## 1.0.10 + +- Enable variant/v1 feature by default +- Add variant attrs handling to addComponent method + + ## 1.0.9 - Fix dependencies declaration on package.json diff --git a/library/deps.edn b/library/deps.edn index 0b2473bf81..9edca59650 100644 --- a/library/deps.edn +++ b/library/deps.edn @@ -21,7 +21,7 @@ :dev {:extra-paths ["dev"] :extra-deps - {thheller/shadow-cljs {:mvn/version "3.1.7"} + {thheller/shadow-cljs {:mvn/version "3.2.1"} com.bhauman/rebel-readline {:mvn/version "RELEASE"} org.clojure/tools.namespace {:mvn/version "RELEASE"} criterium/criterium {:mvn/version "RELEASE"}}} diff --git a/library/docs/variants.md b/library/docs/variants.md new file mode 100644 index 0000000000..5b09a14afe --- /dev/null +++ b/library/docs/variants.md @@ -0,0 +1,35 @@ +# Variants + +## General + +Variants are components that are grouped and share a set of properties. In this document they are referred simply as **components**. The group itself is called a **VariantComponent**. + +A VariantComponent must contain at least **one** component. + +## Components + +- Each component has a `variant-id` attribute. **All components in the same VariantComponent share the same `variant-id`.** +- Each component has a `variant-properties` attribute, which consists on a list/map of properties. For example: `[{ name: "Property 1", value: "Value 1" } { name: "Property 2", value: "Value 2" }]`. + * All components within a VariantComponent must have the same number of properties, with identical keys and in the same order. + * The values can be the same or different across components. + +## Main shapes of components + +### Variant container + +All main shapes for components of the same VariantComponent must be direct children of a **variant container**. A variant container is a frame with the following characteristics: +- Its `id` equals the shared `variant-id` of its child components. +- It has an attribute `is-variant-container` set to `true`. +- A variant container without children is invalid. It must have at least one child. +- The first child of the variant container is used to represent visually the entire VariantComponent in different places on Penpot, so the order of the children is significant. +- When created in the interface of Penpot, it may include some attributes (e.g., flex layout, stroke color `#bb97d8`, border radius `20`). These attributes are not mandatory. (TBD: Will the SDK create those attributes by itself?). + +### Main shape + +The main shape of a component that belongs to a VariantComponent includes some extra attributes: +* `variant-id`: same value as its component's `variant-id` and the variant container's `id`. +* `variant-name`: a string composed by taking the values of the `variant-properties` of its component, removing the empty ones, and joining the remaining with `", "`. Example: `[{ name: 'Property 1', value: 'Value 1' } { name: 'Property 2', value: '' } { name: 'Property 3', value: 'Value 3' }]` becomes `Value 1, Value 3`. + +### Copies of the components + +Copies of components within a VariantComponent do not have any special attributes and behave like ordinary copies. diff --git a/library/package.json b/library/package.json index 13851f6d6d..048f4c53f3 100644 --- a/library/package.json +++ b/library/package.json @@ -1,6 +1,6 @@ { "name": "@penpot/library", - "version": "1.0.9", + "version": "1.0.11", "license": "MPL-2.0", "author": "Kaleidos INC", "packageManager": "yarn@4.9.1+sha512.f95ce356460e05be48d66401c1ae64ef84d163dd689964962c6888a9810865e39097a5e9de748876c2e0bf89b232d583c33982773e9903ae7a76257270986538", diff --git a/manage.sh b/manage.sh index 32b348ffe7..174276b7d8 100755 --- a/manage.sh +++ b/manage.sh @@ -170,6 +170,7 @@ function build-imagemagick-docker-image { function build { echo ">> build start: $1" local version=$(print-current-version); + local script=${2:-build} pull-devenv-if-not-exists; docker volume create ${DEVENV_PNAME}_user_data; @@ -182,7 +183,7 @@ function build { -e SHADOWCLJS_EXTRA_PARAMS=$SHADOWCLJS_EXTRA_PARAMS \ -e JAVA_OPTS="$JAVA_OPTS" \ -w /home/penpot/penpot/$1 \ - $DEVENV_IMGNAME:latest sudo -EH -u penpot ./scripts/build $version + $DEVENV_IMGNAME:latest sudo -EH -u penpot ./scripts/$script $version echo ">> build end: $1" } @@ -246,6 +247,22 @@ function build-exporter-bundle { echo ">> bundle exporter end"; } +function build-storybook-bundle { + echo ">> bundle storybook start"; + + mkdir -p ./bundles + local version=$(print-current-version); + local bundle_dir="./bundles/storybook"; + + build "frontend" "build-storybook"; + + rm -rf $bundle_dir; + mv ./frontend/storybook-static $bundle_dir; + echo $version > $bundle_dir/version.txt; + put-license-file $bundle_dir; + echo ">> bundle storybook end"; +} + function build-docs-bundle { echo ">> bundle docs start"; @@ -265,21 +282,40 @@ function build-docs-bundle { function build-frontend-docker-image { rsync -avr --delete ./bundles/frontend/ ./docker/images/bundle-frontend/; pushd ./docker/images; - docker build -t penpotapp/frontend:$CURRENT_BRANCH -t penpotapp/frontend:latest -f Dockerfile.frontend .; + docker build \ + -t penpotapp/frontend:$CURRENT_BRANCH -t penpotapp/frontend:latest \ + --build-arg BUNDLE_PATH="./bundle-frontend/" \ + -f Dockerfile.frontend .; popd; } function build-backend-docker-image { rsync -avr --delete ./bundles/backend/ ./docker/images/bundle-backend/; pushd ./docker/images; - docker build -t penpotapp/backend:$CURRENT_BRANCH -t penpotapp/backend:latest -f Dockerfile.backend .; + docker build \ + -t penpotapp/backend:$CURRENT_BRANCH -t penpotapp/backend:latest \ + --build-arg BUNDLE_PATH="./bundle-backend/" \ + -f Dockerfile.backend .; popd; } function build-exporter-docker-image { rsync -avr --delete ./bundles/exporter/ ./docker/images/bundle-exporter/; pushd ./docker/images; - docker build -t penpotapp/exporter:$CURRENT_BRANCH -t penpotapp/exporter:latest -f Dockerfile.exporter .; + docker build \ + -t penpotapp/exporter:$CURRENT_BRANCH -t penpotapp/exporter:latest \ + --build-arg BUNDLE_PATH="./bundle-exporter/" \ + -f Dockerfile.exporter .; + popd; +} + +function build-storybook-docker-image { + rsync -avr --delete ./bundles/storybook/ ./docker/images/bundle-storybook/; + pushd ./docker/images; + docker build \ + -t penpotapp/storybook:$CURRENT_BRANCH -t penpotapp/storybook:latest \ + --build-arg BUNDLE_PATH="./bundle-storybook/" \ + -f Dockerfile.storybook .; popd; } @@ -303,12 +339,14 @@ function usage { echo "- build-frontend-bundle Build frontend bundle" echo "- build-backend-bundle Build backend bundle." echo "- build-exporter-bundle Build exporter bundle." + echo "- build-storybook-bundle Build storybook bundle." echo "- build-docs-bundle Build docs bundle." echo "" echo "- build-docker-images Build all docker images (frontend, backend and exporter)." echo "- build-frontend-docker-image Build frontend docker images." echo "- build-backend-docker-image Build backend docker images." echo "- build-exporter-docker-image Build exporter docker images." + echo "- build-storybook-docker-image Build storybook docker images." echo "" echo "- version Show penpot's version." } @@ -361,6 +399,7 @@ case $1 in build-frontend-bundle; build-backend-bundle; build-exporter-bundle; + build-storybook-bundle; ;; build-frontend-bundle) @@ -374,6 +413,10 @@ case $1 in build-exporter-bundle) build-exporter-bundle; ;; + + build-storybook-bundle) + build-storybook-bundle; + ;; build-docs-bundle) build-docs-bundle; @@ -388,6 +431,7 @@ case $1 in build-frontend-docker-image build-backend-docker-image build-exporter-docker-image + build-storybook-docker-image ;; build-frontend-docker-image) @@ -401,6 +445,10 @@ case $1 in build-exporter-docker-image) build-exporter-docker-image ;; + + build-storybook-docker-image) + build-storybook-docker-image + ;; *) usage diff --git a/render-wasm/Cargo.lock b/render-wasm/Cargo.lock index ed1ebde4b1..9a9d050849 100644 --- a/render-wasm/Cargo.lock +++ b/render-wasm/Cargo.lock @@ -298,6 +298,14 @@ version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "macros" +version = "0.1.0" +dependencies = [ + "heck", + "syn", +] + [[package]] name = "memchr" version = "2.7.4" @@ -359,9 +367,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -422,6 +430,7 @@ dependencies = [ "gl", "glam", "indexmap", + "macros", "skia-safe", "uuid", ] @@ -548,9 +557,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.82" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83540f837a8afc019423a8edb95b52a8effe46957ee402287f4292fae35be021" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", diff --git a/render-wasm/Cargo.toml b/render-wasm/Cargo.toml index 1a327e507c..82cde41199 100644 --- a/render-wasm/Cargo.toml +++ b/render-wasm/Cargo.toml @@ -6,6 +6,8 @@ repository = "https://github.com/penpot/penpot" license-file = "../LICENSE" description = "Wasm-based canvas renderer for Penpot" +build = "build.rs" + [features] default = [] profile = ["profile-macros", "profile-raf"] @@ -22,12 +24,13 @@ bezier-rs = "0.4.0" gl = "0.14.0" glam = "0.24.2" indexmap = "2.7.1" +macros = { path = "macros" } skia-safe = { version = "0.87.0", default-features = false, features = [ "gl", "svg", "textlayout", "binary-cache", - "webp" + "webp", ] } uuid = { version = "1.11.0", features = ["v4", "js"] } diff --git a/render-wasm/build b/render-wasm/build index e518367005..df93f15baa 100755 --- a/render-wasm/build +++ b/render-wasm/build @@ -13,9 +13,13 @@ export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-bi cargo build $_CARGO_PARAMS -cp target/wasm32-unknown-emscripten/$_BUILD_MODE/render_wasm.js ../frontend/resources/public/js/$_BUILD_NAME.js +_SHARED_FILE=$(find target/wasm32-unknown-emscripten -name render_wasm_shared.js | head -n 1); + +cat target/wasm32-unknown-emscripten/$_BUILD_MODE/render_wasm.js "$_SHARED_FILE" > ../frontend/resources/public/js/$_BUILD_NAME.js cp target/wasm32-unknown-emscripten/$_BUILD_MODE/render_wasm.wasm ../frontend/resources/public/js/$_BUILD_NAME.wasm sed -i "s/render_wasm.wasm/$_BUILD_NAME.wasm?version=develop/g" ../frontend/resources/public/js/$_BUILD_NAME.js; +exit $? + popd diff --git a/render-wasm/build.rs b/render-wasm/build.rs new file mode 100644 index 0000000000..8f5ce28f5f --- /dev/null +++ b/render-wasm/build.rs @@ -0,0 +1,3 @@ +// We need this empty script so OUT_DIR is automatically set and we can build +// the macros crate +fn main() {} diff --git a/render-wasm/docs/serialization.md b/render-wasm/docs/serialization.md index 36cbc5833c..41c4741ba7 100644 --- a/render-wasm/docs/serialization.md +++ b/render-wasm/docs/serialization.md @@ -25,7 +25,7 @@ Horizontal constraints are serialized as `u8`: | ----- | --------- | | 0 | Left | | 1 | Right | -| 2 | LeftRight | +| 2 | Leftright | | 3 | Center | | 4 | Scale | | \_ | None | @@ -38,11 +38,22 @@ Vertical constraints are serialized as `u8`: | ----- | --------- | | 0 | Top | | 1 | Bottom | -| 2 | TopBottom | +| 2 | Topbottom | | 3 | Center | | 4 | Scale | | \_ | None | +## Vertical Alignment + +Vertical alignment is serialized as `u8`: + +| Value | Field | +| ----- | ------ | +| 0 | Top | +| 1 | Center | +| 2 | Bottom | +| \_ | Top | + ## Paths Paths are made of segments of **28 bytes** each. The layout (assuming positions in a `Uint8Array`) is the following: @@ -126,16 +137,17 @@ Gradient stops are serialized as a sequence of `16` chunks with the following la Stroke caps are serialized as `u8`: -| Value | Field | -| ----- | --------- | -| 1 | Line | -| 2 | Triangle | -| 3 | Rectangle | -| 4 | Circle | -| 5 | Diamond | -| 6 | Round | -| 7 | Square | -| \_ | None | +| Value | Field | +| ----- | ------------- | +| 0 | None | +| 1 | LineArrow | +| 2 | TriangleArrow | +| 3 | SquareMarker | +| 4 | CircleMarker | +| 5 | DiamondMarker | +| 6 | Round | +| 7 | Square | +| \_ | None | ## Stroke Sytles @@ -209,16 +221,6 @@ Shadow styles are serialized as `u8`: | 3 | Stretch | | \_ | error | -### Align self - -| Value | Field | -| ----- | ------- | -| 0 | Start | -| 1 | End | -| 2 | Center | -| 3 | Stretch | -| \_ | error | - ### Align Content | Value | Field | @@ -257,25 +259,27 @@ Shadow styles are serialized as `u8`: ### Align Self -| Value | Field | -| ----- | ------- | -| 0 | Auto | -| 1 | Start | -| 2 | End | -| 3 | Center | -| 4 | Stretch | -| \_ | error | +| Value | Field | +| ----- | ------------- | +| 0 | (none) | +| 1 | Auto | +| 2 | Start | +| 3 | End | +| 4 | Center | +| 5 | Stretch | +| \_ | (unsupported) | ### Justify Self -| Value | Field | -| ----- | ------- | -| 0 | Auto | -| 1 | Start | -| 2 | End | -| 3 | Center | -| 4 | Stretch | -| \_ | error | +| Value | Field | +| ----- | ------------- | +| 0 | (none) | +| 1 | Auto | +| 2 | Start | +| 3 | End | +| 4 | Center | +| 5 | Stretch | +| \_ | (unsupported) | ### Wrap type diff --git a/render-wasm/macros/Cargo.lock b/render-wasm/macros/Cargo.lock new file mode 100644 index 0000000000..8b4fd748ae --- /dev/null +++ b/render-wasm/macros/Cargo.lock @@ -0,0 +1,52 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "macros" +version = "0.1.0" +dependencies = [ + "heck", + "syn", +] + +[[package]] +name = "proc-macro2" +version = "1.0.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "syn" +version = "2.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" diff --git a/render-wasm/macros/Cargo.toml b/render-wasm/macros/Cargo.toml new file mode 100644 index 0000000000..6c2abd7509 --- /dev/null +++ b/render-wasm/macros/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "macros" +version = "0.1.0" +edition = "2024" + +[lib] +proc-macro = true + +[dependencies] +heck = "0.5.0" +syn = "2.0.106" diff --git a/render-wasm/macros/src/lib.rs b/render-wasm/macros/src/lib.rs new file mode 100644 index 0000000000..a0eec23ca6 --- /dev/null +++ b/render-wasm/macros/src/lib.rs @@ -0,0 +1,103 @@ +use std::collections::HashMap; +use std::fs; +use std::io::Write; +use std::path::Path; +use std::sync; + +use heck::{ToKebabCase, ToPascalCase}; +use proc_macro::TokenStream; + +type Result = std::result::Result; + +#[proc_macro_derive(ToJs)] +pub fn derive_to_cljs(input: TokenStream) -> TokenStream { + let input = syn::parse_macro_input!(input as syn::DeriveInput); + let enum_id = input.ident.to_string(); + let data_enum = match input.data { + syn::Data::Enum(data_enum) => data_enum, + _ => panic!("ToCljs can only be derived for enums"), + }; + + let raw_variants = data_enum + .variants + .to_owned() + .into_iter() + .collect::>(); + + let variants = parse_variants(&raw_variants).expect("Failed to parse variants"); + let js_code = generate_js_for_enum(&enum_id, &mut variants.into_iter().collect::>()); + + if let Err(e) = write_enum_to_temp_file(&js_code) { + eprintln!("Error writing enum {} to file: {}", enum_id, e); + } + + TokenStream::new() // we don't need to return any generated code +} + +fn parse_variants(variants: &[syn::Variant]) -> Result> { + let mut res = HashMap::new(); + for variant in variants { + let value_expr = variant + .discriminant + .clone() + .ok_or(format!( + "No discriminant found for variant {}", + variant.ident + ))? + .1; + let discriminant = parse_discriminant_value(value_expr)?; + res.insert(variant.ident.to_string(), discriminant); + } + + Ok(res) +} + +fn parse_discriminant_value(value: syn::Expr) -> Result { + match value { + syn::Expr::Lit(syn::ExprLit { + lit: syn::Lit::Int(int), + .. + }) => Ok(int.base10_digits().parse().unwrap()), + _ => Err(format!("Invalid discriminant value")), + } +} + +fn generate_js_for_enum(id: &str, variants: &mut [(String, u32)]) -> String { + variants.sort_by_key(|(_, discriminant)| *discriminant); + + let output_variants: String = variants + .into_iter() + .map(|(variant, discriminant)| { + format!(r#" "{}": {},"#, variant.to_kebab_case(), discriminant) + }) + .collect::>() + .join("\n"); + + format!( + "export const {} = {{\n{}\n}};", + id.to_pascal_case(), + output_variants + ) +} + +static INIT: sync::Once = sync::Once::new(); + +fn write_enum_to_temp_file(js_code: &str) -> std::io::Result<()> { + let out_dir = std::env::var("OUT_DIR").expect("OUT_DIR environment variable is not set"); + let out_path = Path::new(&out_dir).join("render_wasm_shared.js"); + + // clean the file the first time this function is called + INIT.call_once(|| { + fs::OpenOptions::new() + .create(true) + .write(true) + .truncate(true) + .open(&out_path) + .expect("Failed to open output file"); + }); + + let mut file = fs::OpenOptions::new().append(true).open(&out_path)?; + writeln!(file, "{}\n", js_code)?; + + Ok(()) +} diff --git a/render-wasm/src/main.rs b/render-wasm/src/main.rs index 756d23336e..06ad75eb3d 100644 --- a/render-wasm/src/main.rs +++ b/render-wasm/src/main.rs @@ -17,7 +17,7 @@ mod wasm; use indexmap::IndexSet; use math::{Bounds, Matrix}; use mem::SerializableResult; -use shapes::{BoolType, StructureEntry, StructureEntryType, TransformEntry, Type}; +use shapes::{StructureEntry, StructureEntryType, TransformEntry}; use skia_safe as skia; use state::State; use utils::uuid_from_u32_quartet; @@ -237,20 +237,6 @@ pub extern "C" fn set_shape_masked_group(masked: bool) { }); } -#[no_mangle] -pub extern "C" fn set_shape_bool_type(raw_bool_type: u8) { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_bool_type(BoolType::from(raw_bool_type)); - }); -} - -#[no_mangle] -pub extern "C" fn set_shape_type(shape_type: u8) { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_shape_type(Type::from(shape_type)); - }); -} - #[no_mangle] pub extern "C" fn set_shape_selrect(left: f32, top: f32, right: f32, bottom: f32) { with_state_mut!(state, { @@ -314,34 +300,6 @@ pub extern "C" fn set_children() { } } -#[no_mangle] -pub extern "C" fn store_image( - a1: u32, - b1: u32, - c1: u32, - d1: u32, - a2: u32, - b2: u32, - c2: u32, - d2: u32, -) { - with_state_mut!(state, { - let image_id = uuid_from_u32_quartet(a2, b2, c2, d2); - let image_bytes = mem::bytes(); - - if let Err(msg) = state.render_state_mut().add_image(image_id, &image_bytes) { - eprintln!("{}", msg); - } - - mem::free_bytes(); - }); - - with_state_mut!(state, { - let shape_id = uuid_from_u32_quartet(a1, b1, c1, d1); - state.update_tile_for_shape(shape_id); - }); -} - #[no_mangle] pub extern "C" fn is_image_cached(a: u32, b: u32, c: u32, d: u32) -> bool { with_state_mut!(state, { @@ -364,13 +322,6 @@ pub extern "C" fn set_shape_svg_raw_content() { }); } -#[no_mangle] -pub extern "C" fn set_shape_blend_mode(mode: i32) { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_blend_mode(render::BlendMode::from(mode)); - }); -} - #[no_mangle] pub extern "C" fn set_shape_opacity(opacity: f32) { with_current_shape_mut!(state, |shape: &mut Shape| { @@ -385,13 +336,6 @@ pub extern "C" fn set_shape_hidden(hidden: bool) { }); } -#[no_mangle] -pub extern "C" fn set_shape_blur(blur_type: u8, hidden: bool, value: f32) { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_blur(blur_type, hidden, value); - }); -} - #[no_mangle] pub extern "C" fn set_shape_corners(r1: f32, r2: f32, r3: f32, r4: f32) { with_current_shape_mut!(state, |shape: &mut Shape| { @@ -399,21 +343,6 @@ pub extern "C" fn set_shape_corners(r1: f32, r2: f32, r3: f32, r4: f32) { }); } -#[no_mangle] -pub extern "C" fn propagate_modifiers(pixel_precision: bool) -> *mut u8 { - let bytes = mem::bytes(); - - let entries: Vec<_> = bytes - .chunks(size_of::<::BytesType>()) - .map(|data| TransformEntry::from_bytes(data.try_into().unwrap())) - .collect(); - - with_state!(state, { - let result = shapes::propagate_modifiers(state, &entries, pixel_precision); - mem::write_vec(result) - }) -} - #[no_mangle] pub extern "C" fn get_selection_rect() -> *mut u8 { let bytes = mem::bytes(); @@ -510,6 +439,21 @@ pub extern "C" fn clean_modifiers() { }); } +#[no_mangle] +pub extern "C" fn propagate_modifiers(pixel_precision: bool) -> *mut u8 { + let bytes = mem::bytes(); + + let entries: Vec<_> = bytes + .chunks(size_of::<::BytesType>()) + .map(|data| TransformEntry::from_bytes(data.try_into().unwrap())) + .collect(); + + with_state!(state, { + let result = shapes::propagate_modifiers(state, &entries, pixel_precision); + mem::write_vec(result) + }) +} + #[no_mangle] pub extern "C" fn set_modifiers() { let bytes = mem::bytes(); @@ -527,31 +471,6 @@ pub extern "C" fn set_modifiers() { }); } -#[no_mangle] -pub extern "C" fn add_shape_shadow( - raw_color: u32, - blur: f32, - spread: f32, - x: f32, - y: f32, - raw_style: u8, - hidden: bool, -) { - with_current_shape_mut!(state, |shape: &mut Shape| { - let color = skia::Color::new(raw_color); - let style = shapes::ShadowStyle::from(raw_style); - let shadow = shapes::Shadow::new(color, blur, spread, (x, y), style, hidden); - shape.add_shadow(shadow); - }); -} - -#[no_mangle] -pub extern "C" fn clear_shape_shadows() { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.clear_shadows(); - }); -} - #[no_mangle] pub extern "C" fn update_shape_tiles() { with_state_mut!(state, { diff --git a/render-wasm/src/math.rs b/render-wasm/src/math.rs index 41460a7bae..58b395fd6a 100644 --- a/render-wasm/src/math.rs +++ b/render-wasm/src/math.rs @@ -24,6 +24,7 @@ pub fn is_close_to(current: f32, value: f32) -> bool { (current - value).abs() <= THRESHOLD } +#[allow(dead_code)] pub fn are_close_points(a: impl Into<(f32, f32)>, b: impl Into<(f32, f32)>) -> bool { let (a_x, a_y) = a.into(); let (b_x, b_y) = b.into(); diff --git a/render-wasm/src/math/bools.rs b/render-wasm/src/math/bools.rs index 5e43764826..4ada56d8a5 100644 --- a/render-wasm/src/math/bools.rs +++ b/render-wasm/src/math/bools.rs @@ -300,7 +300,7 @@ impl Ord for BezierStart { type BM<'a> = BTreeMap>; -fn init_bm(beziers: &[(BezierSource, Bezier)]) -> BM { +fn init_bm(beziers: &[(BezierSource, Bezier)]) -> BM<'_> { let mut bm = BM::default(); for entry @ (source, bezier) in beziers.iter() { let value = *entry; diff --git a/render-wasm/src/render.rs b/render-wasm/src/render.rs index 8b37332e4c..0ca7066b0b 100644 --- a/render-wasm/src/render.rs +++ b/render-wasm/src/render.rs @@ -1,4 +1,3 @@ -mod blend; mod debug; mod fills; pub mod filters; @@ -22,7 +21,9 @@ use options::RenderOptions; pub use surfaces::{SurfaceId, Surfaces}; use crate::performance; -use crate::shapes::{Blur, BlurType, Corners, Fill, Shape, StructureEntry, Type}; +use crate::shapes::{ + Blur, BlurType, Corners, Fill, Shadow, Shape, SolidColor, Stroke, StructureEntry, Type, +}; use crate::state::ShapesPool; use crate::tiles::{self, PendingTiles, TileRect}; use crate::uuid::Uuid; @@ -31,8 +32,8 @@ use crate::wapi; use crate::math; use crate::math::bools; +use indexmap::IndexSet; -pub use blend::BlendMode; pub use fonts::*; pub use images::*; @@ -58,16 +59,39 @@ impl NodeRenderState { self.id.is_nil() } + /// Calculates the clip bounds for child elements of a given shape. + /// + /// This function determines the clipping region that should be applied to child elements + /// when rendering. It takes into account the element's selection rectangle, transform, + /// and any additional modifiers. + /// + /// # Parameters + /// + /// * `element` - The shape element for which to calculate clip bounds + /// * `modifiers` - Optional transformation matrix to apply to the bounds + /// * `offset` - Optional offset (x, y) to adjust the bounds position. When provided, + /// the bounds are translated by the negative of this offset, effectively moving + /// the clipping region to compensate for coordinate system transformations. + /// This is useful for nested coordinate systems or when elements are grouped + /// and need relative positioning adjustments. pub fn get_children_clip_bounds( &self, element: &Shape, modifiers: Option<&Matrix>, + offset: Option<(f32, f32)>, ) -> Option<(Rect, Option, Matrix)> { if self.id.is_nil() || !element.clip() { return self.clip_bounds; } - let bounds = element.selrect(); + let mut bounds = element.selrect(); + if let Some(offset) = offset { + let x = bounds.x() - offset.0; + let y = bounds.y() - offset.1; + let width = bounds.width(); + let height = bounds.height(); + bounds.set_xywh(x, y, width, height); + } let mut transform = element.transform; transform.post_translate(bounds.center()); transform.pre_translate(-bounds.center()); @@ -84,6 +108,51 @@ impl NodeRenderState { Some((bounds, corners, transform)) } + + /// Calculates the clip bounds for shadow rendering of a given shape. + /// + /// This function determines the clipping region that should be applied when rendering a + /// shadow for a shape element. It uses the shadow bounds but calculates the + /// transformation center based on the original shape, not the shadow bounds. + /// + /// # Parameters + /// + /// * `element` - The shape element for which to calculate shadow clip bounds + /// * `modifiers` - Optional transformation matrix to apply to the bounds + /// * `shadow` - The shadow configuration containing blur, offset, and other properties + pub fn get_nested_shadow_clip_bounds( + &self, + element: &Shape, + modifiers: Option<&Matrix>, + shadow: &Shadow, + ) -> Option<(Rect, Option, Matrix)> { + if self.id.is_nil() { + return self.clip_bounds; + } + + // Assert that the shape is either a Frame or Group + assert!( + matches!(element.shape_type, Type::Frame(_) | Type::Group(_)), + "Shape must be a Frame or Group for nested shadow clip bounds calculation" + ); + + let bounds = element.get_selrect_shadow_bounds(shadow); + let mut transform = element.transform; + transform.post_translate(element.center()); + transform.pre_translate(-element.center()); + + if let Some(modifier) = modifiers { + transform.post_concat(modifier); + } + + let corners = match &element.shape_type { + Type::Rect(data) => data.corners, + Type::Frame(data) => data.corners, + _ => None, + }; + + Some((bounds, corners, transform)) + } } /// Represents the "focus mode" state used during rendering. @@ -180,7 +249,7 @@ pub(crate) struct RenderState { // can affect its child elements if they don't specify one themselves. If the planned // migration to remove group-level fills is completed, this code should be removed. pub nested_fills: Vec>, - pub nested_blurs: Vec>, + pub nested_blurs: Vec>, // FIXME: why is this an option? pub show_grid: Option, pub focus_mode: FocusMode, } @@ -370,7 +439,7 @@ impl RenderState { let paint = skia::Paint::default(); self.surfaces - .draw_into(SurfaceId::DropShadows, SurfaceId::Current, Some(&paint)); + .draw_into(SurfaceId::TextDropShadows, SurfaceId::Current, Some(&paint)); self.surfaces .draw_into(SurfaceId::Fills, SurfaceId::Current, Some(&paint)); @@ -395,8 +464,8 @@ impl RenderState { let surface_ids = SurfaceId::Strokes as u32 | SurfaceId::Fills as u32 - | SurfaceId::DropShadows as u32 - | SurfaceId::InnerShadows as u32; + | SurfaceId::InnerShadows as u32 + | SurfaceId::TextDropShadows as u32; self.surfaces.apply_mut(surface_ids, |s| { s.canvas().clear(skia::Color::TRANSPARENT); @@ -411,6 +480,7 @@ impl RenderState { self.focus_mode.set_shapes(shapes); } + #[allow(clippy::too_many_arguments)] pub fn render_shape( &mut self, shapes: &ShapesPool, @@ -419,6 +489,13 @@ impl RenderState { shape: &Shape, scale_content: Option<&f32>, clip_bounds: Option<(Rect, Option, Matrix)>, + fills_surface_id: SurfaceId, + strokes_surface_id: SurfaceId, + innershadows_surface_id: SurfaceId, + text_drop_shadows_surface_id: SurfaceId, + apply_to_current_surface: bool, + offset: Option<(f32, f32)>, + parent_shadows: Option>, ) { let shape = if let Some(scale_content) = scale_content { &shape.scale_content(*scale_content) @@ -426,10 +503,10 @@ impl RenderState { shape }; - let surface_ids = SurfaceId::Strokes as u32 - | SurfaceId::Fills as u32 - | SurfaceId::DropShadows as u32 - | SurfaceId::InnerShadows as u32; + let surface_ids = fills_surface_id as u32 + | strokes_surface_id as u32 + | innershadows_surface_id as u32 + | text_drop_shadows_surface_id as u32; self.surfaces.apply_mut(surface_ids, |s| { s.canvas().save(); }); @@ -463,7 +540,7 @@ impl RenderState { paint.set_color(skia::Color::from_argb(255, 255, 0, 0)); paint.set_stroke_width(4.); self.surfaces - .canvas(SurfaceId::Fills) + .canvas(fills_surface_id) .draw_rect(bounds, &paint); } @@ -482,19 +559,20 @@ impl RenderState { let mut nested_blur_value = 0.; for nested_blur in self.nested_blurs.iter().flatten() { - if !nested_blur.hidden && nested_blur.blur_type == BlurType::Layer { + if !nested_blur.hidden && nested_blur.blur_type == BlurType::LayerBlur { nested_blur_value += nested_blur.value.powf(2.); } } - if !shape.blur.hidden && shape.blur.blur_type == BlurType::Layer { - nested_blur_value += shape.blur.value.powf(2.); + if let Some(blur) = shape.blur { + if !blur.hidden { + nested_blur_value += blur.value.powf(2.); + } } if nested_blur_value > 0. { - shape - .to_mut() - .set_blur(BlurType::Layer as u8, false, nested_blur_value.sqrt()); + let blur = Blur::new(BlurType::LayerBlur, false, nested_blur_value.sqrt()); + shape.to_mut().set_blur(Some(blur)); } let center = shape.center(); @@ -502,22 +580,27 @@ impl RenderState { matrix.post_translate(center); matrix.pre_translate(-center); + // Apply the additional transformation matrix if exists + if let Some(offset) = offset { + matrix.pre_translate(offset); + } + match &shape.shape_type { Type::SVGRaw(sr) => { if let Some(shape_modifiers) = modifiers.get(&shape.id) { self.surfaces - .canvas(SurfaceId::Fills) + .canvas(fills_surface_id) .concat(shape_modifiers); } - self.surfaces.canvas(SurfaceId::Fills).concat(&matrix); + self.surfaces.canvas(fills_surface_id).concat(&matrix); if let Some(svg) = shape.svg.as_ref() { - svg.render(self.surfaces.canvas(SurfaceId::Fills)) + svg.render(self.surfaces.canvas(fills_surface_id)) } else { let font_manager = skia::FontMgr::from(self.fonts().font_provider().clone()); let dom_result = skia::svg::Dom::from_str(&sr.content, font_manager); match dom_result { Ok(dom) => { - dom.render(self.surfaces.canvas(SurfaceId::Fills)); + dom.render(self.surfaces.canvas(fills_surface_id)); shape.to_mut().set_svg(dom); } Err(e) => { @@ -528,70 +611,153 @@ impl RenderState { } Type::Text(text_content) => { - let surface_ids = SurfaceId::Strokes as u32 - | SurfaceId::Fills as u32 - | SurfaceId::DropShadows as u32 - | SurfaceId::InnerShadows as u32; self.surfaces.apply_mut(surface_ids, |s| { s.canvas().concat(&matrix); }); let text_content = text_content.new_bounds(shape.selrect()); - let mut paragraphs = text_content.to_paragraphs( - shape.image_filter(1.).as_ref(), - shape.mask_filter(1.).as_ref(), - ); - - if !shape.has_visible_strokes() { - shadows::render_text_drop_shadows(self, &shape, &mut paragraphs, antialias); - } - + let drop_shadows = shape.drop_shadow_paints(); + let inner_shadows = shape.inner_shadow_paints(); + let blur_filter = shape.image_filter(1.); let count_inner_strokes = shape.count_visible_inner_strokes(); - text::render(self, &shape, &mut paragraphs, None, None); + let mut paragraph_builders = text_content.paragraph_builder_group_from_text(None); + let mut paragraphs_with_shadows = + text_content.paragraph_builder_group_from_text(Some(true)); + let mut stroke_paragraphs_list = shape + .visible_strokes() + .map(|stroke| { + text::stroke_paragraph_builder_group_from_text( + &text_content, + stroke, + &shape.selrect(), + count_inner_strokes, + None, + ) + }) + .collect::>(); - for stroke in shape.visible_strokes().rev() { - let mut stroke_paragraphs = text_content.to_stroke_paragraphs( - stroke, - &shape.selrect(), - shape.image_filter(1.).as_ref(), - shape.mask_filter(1.).as_ref(), - count_inner_strokes, + let mut stroke_paragraphs_with_shadows_list = shape + .visible_strokes() + .map(|stroke| { + text::stroke_paragraph_builder_group_from_text( + &text_content, + stroke, + &shape.selrect(), + count_inner_strokes, + Some(true), + ) + }) + .collect::>(); + + if let Some(parent_shadows) = parent_shadows { + if !shape.has_visible_strokes() { + for shadow in &parent_shadows { + text::render( + Some(self), + None, + &shape, + &mut paragraphs_with_shadows, + text_drop_shadows_surface_id.into(), + Some(shadow), + blur_filter.as_ref(), + ); + } + } else { + shadows::render_text_shadows( + self, + &shape, + &mut paragraphs_with_shadows, + &mut stroke_paragraphs_with_shadows_list, + text_drop_shadows_surface_id.into(), + &parent_shadows, + &blur_filter, + ); + } + } else { + // 1. Text drop shadows + if !shape.has_visible_strokes() { + for shadow in &drop_shadows { + text::render( + Some(self), + None, + &shape, + &mut paragraphs_with_shadows, + text_drop_shadows_surface_id.into(), + Some(shadow), + blur_filter.as_ref(), + ); + } + } + + // 2. Text fills + text::render( + Some(self), + None, + &shape, + &mut paragraph_builders, + Some(fills_surface_id), + None, + blur_filter.as_ref(), ); - shadows::render_text_drop_shadows( + + // 3. Stroke drop shadows + shadows::render_text_shadows( self, &shape, - &mut stroke_paragraphs, - antialias, + &mut paragraphs_with_shadows, + &mut stroke_paragraphs_with_shadows_list, + text_drop_shadows_surface_id.into(), + &drop_shadows, + &blur_filter, ); - strokes::render( + + // 4. Stroke fills + for stroke_paragraphs in stroke_paragraphs_list.iter_mut() { + text::render( + Some(self), + None, + &shape, + stroke_paragraphs, + Some(strokes_surface_id), + None, + blur_filter.as_ref(), + ); + } + + // 5. Stroke inner shadows + shadows::render_text_shadows( self, &shape, - stroke, - None, - None, - Some(&mut stroke_paragraphs), - antialias, - None, - ); - shadows::render_text_inner_shadows( - self, - &shape, - &mut stroke_paragraphs, - antialias, + &mut paragraphs_with_shadows, + &mut stroke_paragraphs_with_shadows_list, + Some(innershadows_surface_id), + &inner_shadows, + &blur_filter, ); + + // 6. Fill Inner shadows + if !shape.has_visible_strokes() { + for shadow in &inner_shadows { + text::render( + Some(self), + None, + &shape, + &mut paragraphs_with_shadows, + Some(innershadows_surface_id), + Some(shadow), + blur_filter.as_ref(), + ); + } + } } - - shadows::render_text_inner_shadows(self, &shape, &mut paragraphs, antialias); } _ => { - let surface_ids = SurfaceId::Strokes as u32 - | SurfaceId::Fills as u32 - | SurfaceId::DropShadows as u32 - | SurfaceId::InnerShadows as u32; self.surfaces.apply_mut(surface_ids, |s| { s.canvas().concat(&matrix); }); + // For boolean shapes, there's no need to calculate children because + // when painting the shape, the necessary path is already calculated let shape = if let Type::Bool(_) = &shape.shape_type { // If any child transform doesn't match the parent transform means // that the children is transformed and we need to recalculate the @@ -617,34 +783,40 @@ impl RenderState { if let Some(fills_to_render) = self.nested_fills.last() { let fills_to_render = fills_to_render.clone(); for fill in fills_to_render.iter() { - fills::render(self, shape, fill, antialias); + fills::render(self, shape, fill, antialias, fills_surface_id); } } } else { for fill in shape.fills().rev() { - fills::render(self, shape, fill, antialias); + fills::render(self, shape, fill, antialias, fills_surface_id); } } for stroke in shape.visible_strokes().rev() { - shadows::render_stroke_drop_shadows(self, shape, stroke, antialias); - //In clipped content strokes are drawn over the contained elements in a subsequent step - if !shape.clip() { - strokes::render(self, shape, stroke, None, None, None, antialias, None); - } - shadows::render_stroke_inner_shadows(self, shape, stroke, antialias); + strokes::render( + self, + shape, + stroke, + Some(strokes_surface_id), + None, + antialias, + ); + shadows::render_stroke_inner_shadows( + self, + shape, + stroke, + antialias, + innershadows_surface_id, + ); } - shadows::render_fill_inner_shadows(self, shape, antialias); - shadows::render_fill_drop_shadows(self, shape, antialias); + shadows::render_fill_inner_shadows(self, shape, antialias, innershadows_surface_id); // bools::debug_render_bool_paths(self, shape, shapes, modifiers, structure); } }; - self.apply_drawing_to_render_canvas(Some(&shape)); - let surface_ids = SurfaceId::Strokes as u32 - | SurfaceId::Fills as u32 - | SurfaceId::DropShadows as u32 - | SurfaceId::InnerShadows as u32; + if apply_to_current_surface { + self.apply_drawing_to_render_canvas(Some(&shape)); + } self.surfaces.apply_mut(surface_ids, |s| { s.canvas().restore(); }); @@ -725,8 +897,8 @@ impl RenderState { self.reset_canvas(); let surface_ids = SurfaceId::Strokes as u32 | SurfaceId::Fills as u32 - | SurfaceId::DropShadows as u32 - | SurfaceId::InnerShadows as u32; + | SurfaceId::InnerShadows as u32 + | SurfaceId::TextDropShadows as u32; self.surfaces.apply_mut(surface_ids, |s| { s.canvas().scale((scale, scale)); }); @@ -809,13 +981,6 @@ impl RenderState { } } - match element.shape_type { - Type::Frame(_) | Type::Group(_) => { - self.nested_blurs.push(Some(element.blur)); - } - _ => {} - } - let mut paint = skia::Paint::default(); paint.set_blend_mode(element.blend_mode().into()); paint.set_alpha_f(element.opacity()); @@ -911,6 +1076,13 @@ impl RenderState { &element_strokes, scale_content, None, + SurfaceId::Fills, + SurfaceId::Strokes, + SurfaceId::InnerShadows, + SurfaceId::TextDropShadows, + true, + None, + None, ); } @@ -957,6 +1129,85 @@ impl RenderState { self.get_aligned_tile_bounds(self.current_tile.unwrap()) } + /// Renders a drop shadow effect for the given shape. + /// + /// Creates a black shadow by converting the original shadow color to black, + /// scaling the blur radius, and rendering the shape with the shadow offset applied. + #[allow(clippy::too_many_arguments)] + fn render_drop_black_shadow( + &mut self, + shapes: &ShapesPool, + modifiers: &HashMap, + structure: &HashMap>, + shape: &Shape, + shadow: &Shadow, + scale_content: Option<&f32>, + clip_bounds: Option<(Rect, Option, Matrix)>, + scale: f32, + translation: (f32, f32), + ) { + let mut transformed_shadow: Cow = Cow::Borrowed(shadow); + transformed_shadow.to_mut().offset = (0., 0.); + transformed_shadow.to_mut().color = skia::Color::BLACK; + transformed_shadow.to_mut().blur = transformed_shadow.blur * scale; + + let mut plain_shape = Cow::Borrowed(shape); + + // The opacity of fills and strokes shouldn't affect the shadow, + // so we paint everything black with the same opacity + plain_shape.to_mut().clear_fills(); + if shape.has_fills() { + plain_shape + .to_mut() + .add_fill(Fill::Solid(SolidColor(skia::Color::BLACK))); + } + + plain_shape.to_mut().clear_strokes(); + for stroke in shape.strokes.iter() { + plain_shape.to_mut().add_stroke(Stroke { + fill: Fill::Solid(SolidColor(skia::Color::BLACK)), + width: stroke.width, + style: stroke.style, + cap_end: stroke.cap_end, + cap_start: stroke.cap_start, + kind: stroke.kind, + }); + } + + let mut shadow_paint = skia::Paint::default(); + shadow_paint.set_image_filter(transformed_shadow.get_drop_shadow_filter()); + shadow_paint.set_blend_mode(skia::BlendMode::SrcOver); + + let layer_rec = skia::canvas::SaveLayerRec::default().paint(&shadow_paint); + self.surfaces + .canvas(SurfaceId::DropShadows) + .save_layer(&layer_rec); + self.surfaces + .canvas(SurfaceId::DropShadows) + .scale((scale, scale)); + self.surfaces + .canvas(SurfaceId::DropShadows) + .translate(translation); + + self.render_shape( + shapes, + modifiers, + structure, + &plain_shape, + scale_content, + clip_bounds, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + false, + Some((shadow.offset.0, shadow.offset.1)), + None, + ); + + self.surfaces.canvas(SurfaceId::DropShadows).restore(); + } + pub fn render_shape_tree_partial_uncached( &mut self, tree: &ShapesPool, @@ -967,6 +1218,7 @@ impl RenderState { ) -> Result<(bool, bool), String> { let mut iteration = 0; let mut is_empty = true; + while let Some(node_render_state) = self.pending_nodes.pop() { let NodeRenderState { id: node_id, @@ -1033,7 +1285,145 @@ impl RenderState { } self.render_shape_enter(element, mask); + if !node_render_state.is_root() && self.focus_mode.is_active() { + let scale: f32 = self.get_scale(); + let translation = self + .surfaces + .get_render_context_translation(self.render_area, scale); + + // For text shapes, render drop shadow using text rendering logic + if !matches!(element.shape_type, Type::Text(_)) { + // Shadow rendering technique: Two-pass approach for proper opacity handling + // + // The shadow rendering uses a two-pass technique to ensure that overlapping + // shadow areas maintain correct opacity without unwanted darkening: + // + // 1. First pass: Render shadow shape in pure black (alpha channel preserved) + // - This creates the shadow silhouette with proper alpha gradients + // - The black color acts as a mask for the final shadow color + // + // 2. Second pass: Apply actual shadow color using SrcIn blend mode + // - SrcIn preserves the alpha channel from the black shadow + // - Only the color channels are replaced, maintaining transparency + // - This prevents overlapping shadows from accumulating opacity + // + // This approach is essential for complex shapes with transparency where + // multiple shadow areas might overlap, ensuring visual consistency. + for shadow in element.drop_shadows_visible() { + let paint = skia::Paint::default(); + let layer_rec = skia::canvas::SaveLayerRec::default().paint(&paint); + + self.surfaces + .canvas(SurfaceId::DropShadows) + .save_layer(&layer_rec); + + // First pass: Render shadow in black to establish alpha mask + self.render_drop_black_shadow( + tree, + modifiers, + structure, + element, + shadow, + scale_content.get(&element.id), + clip_bounds, + scale, + translation, + ); + + if !matches!(element.shape_type, Type::Bool(_)) { + // Nested shapes shadowing - apply black shadow to child shapes too + for shadow_shape_id in element.children.iter() { + let shadow_shape = tree.get(shadow_shape_id).unwrap(); + if shadow_shape.hidden { + continue; + } + let clip_bounds = node_render_state.get_nested_shadow_clip_bounds( + element, + modifiers.get(&element.id), + shadow, + ); + + if !matches!(shadow_shape.shape_type, Type::Text(_)) { + self.render_drop_black_shadow( + tree, + modifiers, + structure, + shadow_shape, + shadow, + scale_content.get(&element.id), + clip_bounds, + scale, + translation, + ); + } else { + let paint = skia::Paint::default(); + let layer_rec = + skia::canvas::SaveLayerRec::default().paint(&paint); + + self.surfaces + .canvas(SurfaceId::DropShadows) + .save_layer(&layer_rec); + self.surfaces + .canvas(SurfaceId::DropShadows) + .scale((scale, scale)); + self.surfaces + .canvas(SurfaceId::DropShadows) + .translate(translation); + + let mut transformed_shadow: Cow = Cow::Borrowed(shadow); + // transformed_shadow.to_mut().offset = (0., 0.); + transformed_shadow.to_mut().color = skia::Color::BLACK; + transformed_shadow.to_mut().blur = + transformed_shadow.blur * scale; + + let mut new_shadow_paint = skia::Paint::default(); + new_shadow_paint.set_image_filter( + transformed_shadow.get_drop_shadow_filter(), + ); + new_shadow_paint.set_blend_mode(skia::BlendMode::SrcOver); + + self.render_shape( + tree, + modifiers, + structure, + shadow_shape, + scale_content.get(&element.id), + clip_bounds, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + true, + None, + Some(vec![new_shadow_paint.clone()]), + ); + self.surfaces.canvas(SurfaceId::DropShadows).restore(); + } + } + } + + // Second pass: Apply actual shadow color using SrcIn blend mode + // This preserves the alpha channel from the black shadow while + // replacing only the color channels, preventing opacity accumulation + let mut paint = skia::Paint::default(); + paint.set_color(shadow.color); + paint.set_blend_mode(skia::BlendMode::SrcIn); + self.surfaces + .canvas(SurfaceId::DropShadows) + .draw_paint(&paint); + + self.surfaces.canvas(SurfaceId::DropShadows).restore(); + } + } + + self.surfaces + .draw_into(SurfaceId::DropShadows, SurfaceId::Current, None); + + self.surfaces + .canvas(SurfaceId::DropShadows) + .clear(skia::Color::TRANSPARENT); + self.render_shape( tree, modifiers, @@ -1041,11 +1431,31 @@ impl RenderState { element, scale_content.get(&element.id), clip_bounds, + SurfaceId::Fills, + SurfaceId::Strokes, + SurfaceId::InnerShadows, + SurfaceId::TextDropShadows, + true, + None, + None, ); + + self.surfaces + .canvas(SurfaceId::DropShadows) + .clear(skia::Color::TRANSPARENT); } else if visited_children { self.apply_drawing_to_render_canvas(Some(element)); } + match element.shape_type { + Type::Frame(_) | Type::Group(_) => { + if let Some(blur) = element.blur { + self.nested_blurs.push(Some(blur)); + } + } + _ => {} + } + // Set the node as visited_children before processing children self.pending_nodes.push(NodeRenderState { id: node_id, @@ -1056,8 +1466,11 @@ impl RenderState { }); if element.is_recursive() { - let children_clip_bounds = - node_render_state.get_children_clip_bounds(element, modifiers.get(&element.id)); + let children_clip_bounds = node_render_state.get_children_clip_bounds( + element, + modifiers.get(&element.id), + None, + ); let mut children_ids = element.modified_children_ids(structure.get(&element.id), false); @@ -1304,28 +1717,47 @@ impl RenderState { performance::end_measure!("rebuild_tiles"); } + /// Invalidates extended rectangles and updates tiles for a set of shapes + /// + /// This function takes a set of shape IDs and for each one: + /// 1. Invalidates the extrect cache + /// 2. Updates the tiles to ensure proper rendering + /// + /// This is useful when you have a pre-computed set of shape IDs that need to be refreshed, + /// regardless of their relationship to other shapes (e.g., ancestors, descendants, or any other collection). + pub fn invalidate_and_update_tiles( + &mut self, + shape_ids: &IndexSet, + tree: &mut ShapesPool, + modifiers: &HashMap, + ) { + for shape_id in shape_ids { + if let Some(shape) = tree.get_mut(shape_id) { + shape.invalidate_extrect(); + } + if let Some(shape) = tree.get(shape_id) { + if !shape.id.is_nil() { + self.update_tile_for(shape, tree, modifiers); + } + } + } + } + /// Processes all ancestors of a shape, invalidating their extended rectangles and updating their tiles /// /// When a shape changes, all its ancestors need to have their extended rectangles recalculated /// because they may contain the changed shape. This function: - /// 1. Invalidates the extrect cache for each ancestor - /// 2. Updates the tiles for each ancestor to ensure proper rendering + /// 1. Computes all ancestors of the shape + /// 2. Invalidates the extrect cache for each ancestor + /// 3. Updates the tiles for each ancestor to ensure proper rendering pub fn process_shape_ancestors( &mut self, shape: &Shape, tree: &mut ShapesPool, modifiers: &HashMap, ) { - for ancestor in shape.all_ancestors(tree, false) { - if let Some(ancestor) = tree.get_mut(&ancestor) { - ancestor.invalidate_extrect(); - } - if let Some(ancestor) = tree.get(&ancestor) { - if !ancestor.id.is_nil() { - self.update_tile_for(ancestor, tree, modifiers); - } - } - } + let ancestors = shape.all_ancestors(tree, false); + self.invalidate_and_update_tiles(&ancestors, tree, modifiers); } /// Rebuilds tiles for shapes with modifiers and processes their ancestors @@ -1339,18 +1771,21 @@ impl RenderState { tree: &mut ShapesPool, modifiers: &HashMap, ) { + let mut ancestors = IndexSet::new(); for (uuid, matrix) in modifiers { let mut shape = { let Some(shape) = tree.get(uuid) else { panic!("Invalid current shape") }; - shape.clone() + let shape: Cow = Cow::Borrowed(shape); + shape }; - shape.apply_transform(matrix); - self.update_tile_for(&shape, tree, modifiers); - self.process_shape_ancestors(&shape, tree, modifiers); + shape.to_mut().apply_transform(matrix); + ancestors.insert(*uuid); + ancestors.extend(shape.all_ancestors(tree, false)); } + self.invalidate_and_update_tiles(&ancestors, tree, modifiers); } pub fn get_scale(&self) -> f32 { diff --git a/render-wasm/src/render/fills.rs b/render-wasm/src/render/fills.rs index 2744b1be2b..fd7d240f2c 100644 --- a/render-wasm/src/render/fills.rs +++ b/render-wasm/src/render/fills.rs @@ -10,6 +10,7 @@ fn draw_image_fill( image_fill: &ImageFill, paint: &Paint, antialias: bool, + surface_id: SurfaceId, ) { let image = render_state.images.get(&image_fill.id()); if image.is_none() { @@ -17,7 +18,7 @@ fn draw_image_fill( } let size = image.unwrap().dimensions(); - let canvas = render_state.surfaces.canvas(SurfaceId::Fills); + let canvas = render_state.surfaces.canvas(surface_id); let container = &shape.selrect; let path_transform = shape.to_path_transform(); @@ -90,7 +91,13 @@ fn draw_image_fill( /** * This SHOULD be the only public function in this module. */ -pub fn render(render_state: &mut RenderState, shape: &Shape, fill: &Fill, antialias: bool) { +pub fn render( + render_state: &mut RenderState, + shape: &Shape, + fill: &Fill, + antialias: bool, + surface_id: SurfaceId, +) { let mut paint = fill.to_paint(&shape.selrect, antialias); if let Some(image_filter) = shape.image_filter(1.) { paint.set_image_filter(image_filter); @@ -98,22 +105,29 @@ pub fn render(render_state: &mut RenderState, shape: &Shape, fill: &Fill, antial match (fill, &shape.shape_type) { (Fill::Image(image_fill), _) => { - draw_image_fill(render_state, shape, image_fill, &paint, antialias); + draw_image_fill( + render_state, + shape, + image_fill, + &paint, + antialias, + surface_id, + ); } (_, Type::Rect(_) | Type::Frame(_)) => { render_state .surfaces - .draw_rect_to(SurfaceId::Fills, shape, &paint); + .draw_rect_to(surface_id, shape, &paint); } (_, Type::Circle) => { render_state .surfaces - .draw_circle_to(SurfaceId::Fills, shape, &paint); + .draw_circle_to(surface_id, shape, &paint); } (_, Type::Path(_)) | (_, Type::Bool(_)) => { render_state .surfaces - .draw_path_to(SurfaceId::Fills, shape, &paint); + .draw_path_to(surface_id, shape, &paint); } (_, Type::Group(_)) => { // Groups can have fills but they propagate them to their children diff --git a/render-wasm/src/render/shadows.rs b/render-wasm/src/render/shadows.rs index d0f7e2af00..f5f4fbfccf 100644 --- a/render-wasm/src/render/shadows.rs +++ b/render-wasm/src/render/shadows.rs @@ -1,33 +1,20 @@ use super::{RenderState, SurfaceId}; use crate::render::strokes; -use crate::render::text::{self}; -use crate::shapes::{Shadow, Shape, Stroke, Type}; -use skia_safe::textlayout::ParagraphBuilder; -use skia_safe::{Paint, Path}; +use crate::shapes::{ParagraphBuilderGroup, Shadow, Shape, Stroke, Type}; +use skia_safe::{canvas::SaveLayerRec, Paint, Path}; + +use crate::render::text; // Fill Shadows -pub fn render_fill_drop_shadows(render_state: &mut RenderState, shape: &Shape, antialias: bool) { - if shape.has_fills() { - for shadow in shape.drop_shadows().rev().filter(|s| !s.hidden()) { - render_fill_drop_shadow(render_state, shape, shadow, antialias); - } - } -} - -fn render_fill_drop_shadow( +pub fn render_fill_inner_shadows( render_state: &mut RenderState, shape: &Shape, - shadow: &Shadow, antialias: bool, + surface_id: SurfaceId, ) { - let paint = &shadow.get_drop_shadow_paint(antialias, shape.image_filter(1.).as_ref()); - render_shadow_paint(render_state, shape, paint, SurfaceId::DropShadows); -} - -pub fn render_fill_inner_shadows(render_state: &mut RenderState, shape: &Shape, antialias: bool) { if shape.has_fills() { - for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) { - render_fill_inner_shadow(render_state, shape, shadow, antialias); + for shadow in shape.inner_shadows_visible() { + render_fill_inner_shadow(render_state, shape, shadow, antialias, surface_id); } } } @@ -37,32 +24,10 @@ fn render_fill_inner_shadow( shape: &Shape, shadow: &Shadow, antialias: bool, + surface_id: SurfaceId, ) { let paint = &shadow.get_inner_shadow_paint(antialias, shape.image_filter(1.).as_ref()); - render_shadow_paint(render_state, shape, paint, SurfaceId::InnerShadows); -} - -pub fn render_stroke_drop_shadows( - render_state: &mut RenderState, - shape: &Shape, - stroke: &Stroke, - antialias: bool, -) { - if !shape.has_fills() { - for shadow in shape.drop_shadows().rev().filter(|s| !s.hidden()) { - let filter = shadow.get_drop_shadow_filter(); - strokes::render( - render_state, - shape, - stroke, - None, - filter.as_ref(), - None, - antialias, - None, - ) - } - } + render_shadow_paint(render_state, shape, paint, surface_id); } pub fn render_stroke_inner_shadows( @@ -70,35 +35,23 @@ pub fn render_stroke_inner_shadows( shape: &Shape, stroke: &Stroke, antialias: bool, + surface_id: SurfaceId, ) { if !shape.has_fills() { - for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) { + for shadow in shape.inner_shadows_visible() { let filter = shadow.get_inner_shadow_filter(); strokes::render( render_state, shape, stroke, - None, + Some(surface_id), filter.as_ref(), - None, antialias, - None, ) } } } -pub fn render_text_drop_shadows( - render_state: &mut RenderState, - shape: &Shape, - paragraphs: &mut [Vec], - antialias: bool, -) { - for shadow in shape.drop_shadows().rev().filter(|s| !s.hidden()) { - render_text_drop_shadow(render_state, shape, shadow, paragraphs, antialias); - } -} - // Render text paths (unused) #[allow(dead_code)] pub fn render_text_path_stroke_drop_shadows( @@ -108,7 +61,7 @@ pub fn render_text_path_stroke_drop_shadows( stroke: &Stroke, antialias: bool, ) { - for shadow in shape.drop_shadows().rev().filter(|s| !s.hidden()) { + for shadow in shape.drop_shadows_visible() { let stroke_shadow = shadow.get_drop_shadow_filter(); strokes::render_text_paths( render_state, @@ -122,53 +75,6 @@ pub fn render_text_path_stroke_drop_shadows( } } -pub fn render_text_drop_shadow( - render_state: &mut RenderState, - shape: &Shape, - shadow: &Shadow, - paragraphs: &mut [Vec], - antialias: bool, -) { - let paint = shadow.get_drop_shadow_paint(antialias, shape.image_filter(1.).as_ref()); - - text::render( - render_state, - shape, - paragraphs, - Some(SurfaceId::DropShadows), - Some(&paint), - ); -} - -pub fn render_text_inner_shadows( - render_state: &mut RenderState, - shape: &Shape, - paragraphs: &mut [Vec], - antialias: bool, -) { - for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) { - render_text_inner_shadow(render_state, shape, shadow, paragraphs, antialias); - } -} - -pub fn render_text_inner_shadow( - render_state: &mut RenderState, - shape: &Shape, - shadow: &Shadow, - paragraphs: &mut [Vec], - antialias: bool, -) { - let paint = shadow.get_inner_shadow_paint(antialias, shape.image_filter(1.).as_ref()); - - text::render( - render_state, - shape, - paragraphs, - Some(SurfaceId::InnerShadows), - Some(&paint), - ); -} - // Render text paths (unused) #[allow(dead_code)] pub fn render_text_path_stroke_inner_shadows( @@ -178,7 +84,7 @@ pub fn render_text_path_stroke_inner_shadows( stroke: &Stroke, antialias: bool, ) { - for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) { + for shadow in shape.inner_shadows_visible() { let stroke_shadow = shadow.get_inner_shadow_filter(); strokes::render_text_paths( render_state, @@ -213,3 +119,50 @@ fn render_shadow_paint( _ => {} } } + +pub fn render_text_shadows( + render_state: &mut RenderState, + shape: &Shape, + paragraphs: &mut [ParagraphBuilderGroup], + stroke_paragraphs_group: &mut [Vec], + surface_id: Option, + shadows: &[Paint], + blur_filter: &Option, +) { + if stroke_paragraphs_group.is_empty() { + return; + } + + let canvas = render_state + .surfaces + .canvas(surface_id.unwrap_or(SurfaceId::TextDropShadows)); + + for shadow in shadows { + let shadow_layer = SaveLayerRec::default().paint(shadow); + canvas.save_layer(&shadow_layer); + + text::render( + None, + Some(canvas), + shape, + paragraphs, + surface_id, + None, + blur_filter.as_ref(), + ); + + for stroke_paragraphs in stroke_paragraphs_group.iter_mut() { + text::render( + None, + Some(canvas), + shape, + stroke_paragraphs, + surface_id, + None, + blur_filter.as_ref(), + ); + } + + canvas.restore(); + } +} diff --git a/render-wasm/src/render/strokes.rs b/render-wasm/src/render/strokes.rs index 778f42977d..8346d9af7e 100644 --- a/render-wasm/src/render/strokes.rs +++ b/render-wasm/src/render/strokes.rs @@ -3,11 +3,10 @@ use std::collections::HashMap; use crate::math::{Matrix, Point, Rect}; use crate::shapes::{Corners, Fill, ImageFill, Path, Shape, Stroke, StrokeCap, StrokeKind, Type}; -use skia_safe::{self as skia, textlayout::ParagraphBuilder, ImageFilter, RRect}; +use skia_safe::{self as skia, ImageFilter, RRect}; use super::{RenderState, SurfaceId}; use crate::render::filters::compose_filters; -use crate::render::text::{self}; use crate::render::{get_dest_rect, get_source_rect}; // FIXME: See if we can simplify these arguments @@ -183,23 +182,22 @@ fn handle_stroke_cap( ) { paint.set_style(skia::PaintStyle::Fill); match cap { - StrokeCap::None => {} - StrokeCap::Line => { + StrokeCap::LineArrow => { // We also draw this square cap to fill the gap between the path and the arrow draw_square_cap(canvas, paint, p1, p2, width, 0.); paint.set_style(skia::PaintStyle::Stroke); draw_arrow_cap(canvas, paint, p1, p2, width * 4.); } - StrokeCap::Triangle => { + StrokeCap::TriangleArrow => { draw_triangle_cap(canvas, paint, p1, p2, width * 4.); } - StrokeCap::Rectangle => { + StrokeCap::SquareMarker => { draw_square_cap(canvas, paint, p1, p2, width * 4., 0.); } - StrokeCap::Circle => { + StrokeCap::CircleMarker => { canvas.draw_circle((p1.x, p1.y), width * 2., paint); } - StrokeCap::Diamond => { + StrokeCap::DiamondMarker => { draw_square_cap(canvas, paint, p1, p2, width * 4., 45.); } StrokeCap::Round => { @@ -242,23 +240,27 @@ fn handle_stroke_caps( paint_stroke.set_image_filter(filter.clone()); } - handle_stroke_cap( - canvas, - stroke.cap_start, - stroke.width, - &mut paint_stroke, - first_point, - &points[1], - ); + if let Some(cap) = stroke.cap_start { + handle_stroke_cap( + canvas, + cap, + stroke.width, + &mut paint_stroke, + first_point, + &points[1], + ); + } - handle_stroke_cap( - canvas, - stroke.cap_end, - stroke.width, - &mut paint_stroke, - last_point, - &points[c_points - 2], - ); + if let Some(cap) = stroke.cap_end { + handle_stroke_cap( + canvas, + cap, + stroke.width, + &mut paint_stroke, + last_point, + &points[c_points - 2], + ); + } } } @@ -519,14 +521,12 @@ pub fn render( stroke: &Stroke, surface_id: Option, shadow: Option<&ImageFilter>, - paragraphs: Option<&mut Vec>>, antialias: bool, - paint: Option<&skia::Paint>, ) { let scale = render_state.get_scale(); let canvas = render_state .surfaces - .canvas(surface_id.unwrap_or(SurfaceId::Strokes)); + .canvas(surface_id.unwrap_or(surface_id.unwrap_or(SurfaceId::Strokes))); let selrect = shape.selrect; let path_transform = shape.to_path_transform(); let svg_attrs = &shape.svg_attrs; @@ -565,15 +565,7 @@ pub fn render( shape.image_filter(1.).as_ref(), antialias, ), - Type::Text(_) => { - text::render( - render_state, - shape, - paragraphs.expect("Text shapes should have paragraphs"), - Some(SurfaceId::Strokes), - paint, - ); - } + Type::Text(_) => {} shape_type @ (Type::Path(_) | Type::Bool(_)) => { if let Some(path) = shape_type.path() { draw_stroke_on_path( diff --git a/render-wasm/src/render/surfaces.rs b/render-wasm/src/render/surfaces.rs index 4c33e569e9..a3e6b8cc12 100644 --- a/render-wasm/src/render/surfaces.rs +++ b/render-wasm/src/render/surfaces.rs @@ -17,15 +17,16 @@ const TILE_SIZE_MULTIPLIER: i32 = 2; #[repr(u32)] #[derive(Debug, PartialEq, Clone, Copy)] pub enum SurfaceId { - Target = 0b0_0000_0001, - Cache = 0b0_0000_0010, - Current = 0b0_0000_0100, - Fills = 0b0_0000_1000, - Strokes = 0b0_0001_0000, - DropShadows = 0b0_0010_0000, - InnerShadows = 0b0_0100_0000, - UI = 0b0_1000_0000, - Debug = 0b1_0000_0000, + Target = 0b00_0000_0001, + Cache = 0b00_0000_0010, + Current = 0b00_0000_0100, + Fills = 0b00_0000_1000, + Strokes = 0b00_0001_0000, + DropShadows = 0b00_0010_0000, + InnerShadows = 0b00_0100_0000, + TextDropShadows = 0b00_1000_0000, + UI = 0b01_0000_0000, + Debug = 0b10_0000_0001, } pub struct Surfaces { @@ -42,6 +43,8 @@ pub struct Surfaces { drop_shadows: skia::Surface, // used for rendering over shadows. inner_shadows: skia::Surface, + // used for rendering text drop shadows + text_drop_shadows: skia::Surface, // used for displaying auxiliary workspace elements ui: skia::Surface, // for drawing debug info. @@ -73,6 +76,8 @@ impl Surfaces { gpu_state.create_surface_with_isize("drop_shadows".to_string(), extra_tile_dims); let inner_shadows = gpu_state.create_surface_with_isize("inner_shadows".to_string(), extra_tile_dims); + let text_drop_shadows = + gpu_state.create_surface_with_isize("text_drop_shadows".to_string(), extra_tile_dims); let shape_fills = gpu_state.create_surface_with_isize("shape_fills".to_string(), extra_tile_dims); let shape_strokes = @@ -88,6 +93,7 @@ impl Surfaces { current, drop_shadows, inner_shadows, + text_drop_shadows, shape_fills, shape_strokes, ui, @@ -166,6 +172,9 @@ impl Surfaces { if ids & SurfaceId::InnerShadows as u32 != 0 { f(self.get_mut(SurfaceId::InnerShadows)); } + if ids & SurfaceId::TextDropShadows as u32 != 0 { + f(self.get_mut(SurfaceId::TextDropShadows)); + } if ids & SurfaceId::DropShadows as u32 != 0 { f(self.get_mut(SurfaceId::DropShadows)); } @@ -175,20 +184,29 @@ impl Surfaces { performance::begin_measure!("apply_mut::flags"); } - pub fn update_render_context(&mut self, render_area: skia::Rect, scale: f32) { - let translation = ( + pub fn get_render_context_translation( + &mut self, + render_area: skia::Rect, + scale: f32, + ) -> (f32, f32) { + ( -render_area.left() + self.margins.width as f32 / scale, -render_area.top() + self.margins.height as f32 / scale, - ); + ) + } + + pub fn update_render_context(&mut self, render_area: skia::Rect, scale: f32) { + let translation = self.get_render_context_translation(render_area, scale); self.apply_mut( SurfaceId::Fills as u32 | SurfaceId::Strokes as u32 - | SurfaceId::DropShadows as u32 - | SurfaceId::InnerShadows as u32, + | SurfaceId::InnerShadows as u32 + | SurfaceId::TextDropShadows as u32, |s| { - s.canvas().restore(); - s.canvas().save(); - s.canvas().translate(translation); + let canvas = s.canvas(); + canvas.reset_matrix(); + canvas.scale((scale, scale)); + canvas.translate(translation); }, ); } @@ -201,6 +219,7 @@ impl Surfaces { SurfaceId::Current => &mut self.current, SurfaceId::DropShadows => &mut self.drop_shadows, SurfaceId::InnerShadows => &mut self.inner_shadows, + SurfaceId::TextDropShadows => &mut self.text_drop_shadows, SurfaceId::Fills => &mut self.shape_fills, SurfaceId::Strokes => &mut self.shape_strokes, SurfaceId::Debug => &mut self.debug, @@ -251,16 +270,16 @@ impl Surfaces { pub fn reset(&mut self, color: skia::Color) { self.canvas(SurfaceId::Fills).restore_to_count(1); - self.canvas(SurfaceId::DropShadows).restore_to_count(1); self.canvas(SurfaceId::InnerShadows).restore_to_count(1); + self.canvas(SurfaceId::TextDropShadows).restore_to_count(1); self.canvas(SurfaceId::Strokes).restore_to_count(1); self.canvas(SurfaceId::Current).restore_to_count(1); self.apply_mut( SurfaceId::Fills as u32 | SurfaceId::Strokes as u32 | SurfaceId::Current as u32 - | SurfaceId::DropShadows as u32 - | SurfaceId::InnerShadows as u32, + | SurfaceId::InnerShadows as u32 + | SurfaceId::TextDropShadows as u32, |s| { s.canvas().clear(color).reset_matrix(); }, diff --git a/render-wasm/src/render/text.rs b/render-wasm/src/render/text.rs index 3c263e8c8c..5ce58ac533 100644 --- a/render-wasm/src/render/text.rs +++ b/render-wasm/src/render/text.rs @@ -1,224 +1,414 @@ use super::{RenderState, Shape, SurfaceId}; -use crate::shapes::VerticalAlign; -use crate::utils::get_font_collection; -use skia_safe::{textlayout::ParagraphBuilder, Paint, Path}; +use crate::{ + math::Rect, + shapes::{ + merge_fills, set_paint_fill, ParagraphBuilderGroup, Stroke, StrokeKind, TextContent, + VerticalAlign, + }, + utils::{get_fallback_fonts, get_font_collection}, +}; +use skia_safe::{ + self as skia, + canvas::SaveLayerRec, + textlayout::{ + LineMetrics, Paragraph, ParagraphBuilder, RectHeightStyle, RectWidthStyle, StyleMetrics, + TextDecoration, TextStyle, + }, + Canvas, ImageFilter, Paint, Path, +}; + +pub fn stroke_paragraph_builder_group_from_text( + text_content: &TextContent, + stroke: &Stroke, + bounds: &Rect, + count_inner_strokes: usize, + use_shadow: Option, +) -> Vec { + let fallback_fonts = get_fallback_fonts(); + let fonts = get_font_collection(); + let mut paragraph_group = Vec::new(); + let remove_stroke_alpha = use_shadow.unwrap_or(false) && !stroke.is_transparent(); + + for paragraph in text_content.paragraphs() { + let mut stroke_paragraphs_map: std::collections::HashMap = + std::collections::HashMap::new(); + + for leaf in paragraph.children().iter() { + let text_paint: skia_safe::Handle<_> = merge_fills(leaf.fills(), *bounds); + let stroke_paints = get_text_stroke_paints( + stroke, + bounds, + &text_paint, + count_inner_strokes, + remove_stroke_alpha, + ); + + let text: String = leaf.apply_text_transform(); + + for (paint_idx, stroke_paint) in stroke_paints.iter().enumerate() { + let builder = stroke_paragraphs_map.entry(paint_idx).or_insert_with(|| { + let paragraph_style = paragraph.paragraph_to_style(); + ParagraphBuilder::new(¶graph_style, fonts) + }); + let stroke_paint = stroke_paint.clone(); + let remove_alpha = use_shadow.unwrap_or(false) && !leaf.is_transparent(); + let stroke_style = + leaf.to_stroke_style(&stroke_paint, fallback_fonts, remove_alpha); + builder.push_style(&stroke_style); + builder.add_text(&text); + } + } + + let stroke_paragraphs: Vec = (0..stroke_paragraphs_map.len()) + .map(|i| stroke_paragraphs_map.remove(&i).unwrap()) + .collect(); + + paragraph_group.push(stroke_paragraphs); + } + + paragraph_group +} + +fn get_text_stroke_paints( + stroke: &Stroke, + bounds: &Rect, + text_paint: &Paint, + count_inner_strokes: usize, + remove_stroke_alpha: bool, +) -> Vec { + let mut paints = Vec::new(); + + match stroke.kind { + StrokeKind::Inner => { + let shader = text_paint.shader(); + let mut is_opaque = true; + + if let Some(shader) = shader { + is_opaque = shader.is_opaque(); + } + + if is_opaque && count_inner_strokes == 1 { + let mut paint = text_paint.clone(); + paint.set_style(skia::PaintStyle::Fill); + paint.set_anti_alias(true); + paints.push(paint); + + let mut paint = skia::Paint::default(); + paint.set_style(skia::PaintStyle::Stroke); + paint.set_blend_mode(skia::BlendMode::SrcIn); + paint.set_anti_alias(true); + paint.set_stroke_width(stroke.width * 2.0); + set_paint_fill(&mut paint, &stroke.fill, bounds, remove_stroke_alpha); + paints.push(paint); + } else { + let mut paint = skia::Paint::default(); + if remove_stroke_alpha { + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); + } else { + paint = text_paint.clone(); + set_paint_fill(&mut paint, &stroke.fill, bounds, false); + } + + paint.set_style(skia::PaintStyle::Fill); + paint.set_anti_alias(false); + paints.push(paint); + + let mut paint = skia::Paint::default(); + let image_filter = + skia_safe::image_filters::erode((stroke.width, stroke.width), None, None); + + paint.set_image_filter(image_filter); + paint.set_anti_alias(false); + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); + paint.set_blend_mode(skia::BlendMode::DstOut); + paints.push(paint); + } + } + StrokeKind::Center => { + let mut paint = skia::Paint::default(); + paint.set_style(skia::PaintStyle::Stroke); + paint.set_anti_alias(true); + paint.set_stroke_width(stroke.width); + set_paint_fill(&mut paint, &stroke.fill, bounds, remove_stroke_alpha); + paints.push(paint); + } + StrokeKind::Outer => { + let mut paint = skia::Paint::default(); + paint.set_style(skia::PaintStyle::Stroke); + paint.set_blend_mode(skia::BlendMode::DstOver); + paint.set_anti_alias(true); + paint.set_stroke_width(stroke.width * 2.0); + set_paint_fill(&mut paint, &stroke.fill, bounds, remove_stroke_alpha); + paints.push(paint); + + let mut paint = skia::Paint::default(); + paint.set_style(skia::PaintStyle::Fill); + paint.set_blend_mode(skia::BlendMode::Clear); + paint.set_color(skia::Color::TRANSPARENT); + paint.set_anti_alias(true); + paints.push(paint); + } + } + + paints +} pub fn render( - render_state: &mut RenderState, + render_state: Option<&mut RenderState>, + canvas: Option<&Canvas>, shape: &Shape, - paragraphs: &mut [Vec], + paragraph_builders: &mut [Vec], surface_id: Option, - paint: Option<&Paint>, + shadow: Option<&Paint>, + blur: Option<&ImageFilter>, ) { - let fonts = get_font_collection(); - let canvas = render_state - .surfaces - .canvas(surface_id.unwrap_or(SurfaceId::Fills)); + let render_canvas = if let Some(rs) = render_state { + rs.surfaces.canvas(surface_id.unwrap_or(SurfaceId::Fills)) + } else if let Some(c) = canvas { + c + } else { + return; + }; + if let Some(blur_filter) = blur { + let mut blur_paint = Paint::default(); + blur_paint.set_image_filter(blur_filter.clone()); + let blur_layer = SaveLayerRec::default().paint(&blur_paint); + render_canvas.save_layer(&blur_layer); + } + + if let Some(shadow_paint) = shadow { + let layer_rec = SaveLayerRec::default().paint(shadow_paint); + render_canvas.save_layer(&layer_rec); + draw_text(render_canvas, shape, paragraph_builders); + render_canvas.restore(); + } else { + draw_text(render_canvas, shape, paragraph_builders); + } + + if blur.is_some() { + render_canvas.restore(); + } + + render_canvas.restore(); +} + +fn draw_text( + canvas: &Canvas, + shape: &Shape, + paragraph_builder_groups: &mut [Vec], +) { // Width let paragraph_width = if let crate::shapes::Type::Text(text_content) = &shape.shape_type { - text_content.get_width() + text_content.width() } else { shape.width() }; // Height let container_height = shape.selrect().height(); - let total_content_height = calculate_all_paragraphs_height(paragraphs, paragraph_width); + let total_content_height = + calculate_all_paragraphs_height(paragraph_builder_groups, paragraph_width); let mut global_offset_y = match shape.vertical_align() { VerticalAlign::Center => (container_height - total_content_height) / 2.0, VerticalAlign::Bottom => container_height - total_content_height, _ => 0.0, }; - let layer_rec = skia_safe::canvas::SaveLayerRec::default(); + let layer_rec = SaveLayerRec::default(); canvas.save_layer(&layer_rec); - for group in paragraphs { + for paragraph_builder_group in paragraph_builder_groups { let mut group_offset_y = global_offset_y; - let group_len = group.len(); + let group_len = paragraph_builder_group.len(); - for (index, builder) in group.iter_mut().enumerate() { - let mut skia_paragraph = builder.build(); - - if paint.is_some() && index == 0 { - let text = builder.get_text().to_string(); - let mut paragraph_builder = - ParagraphBuilder::new(&builder.get_paragraph_style(), fonts); - let mut text_style: skia_safe::Handle<_> = builder.peek_style(); - text_style.set_foreground_paint(paint.unwrap()); - paragraph_builder.reset(); - paragraph_builder.push_style(&text_style); - paragraph_builder.add_text(&text); - skia_paragraph = paragraph_builder.build(); - } else if paint.is_some() && index > 0 { - continue; - } - - skia_paragraph.layout(paragraph_width); - let paragraph_height = skia_paragraph.height(); + for paragraph_builder in paragraph_builder_group.iter_mut() { + let mut paragraph = paragraph_builder.build(); + paragraph.layout(paragraph_width); + let paragraph_height = paragraph.height(); let xy = (shape.selrect().x(), shape.selrect().y() + group_offset_y); - skia_paragraph.paint(canvas, xy); + paragraph.paint(canvas, xy); - for line_metrics in skia_paragraph.get_line_metrics().iter() { - let style_metrics: Vec<_> = line_metrics - .get_style_metrics(line_metrics.start_index..line_metrics.end_index) - .into_iter() - .collect(); - - let mut current_x_offset = 0.0; - let total_chars = line_metrics.end_index - line_metrics.start_index; - let line_start_offset = line_metrics.left as f32; - - if total_chars == 0 || style_metrics.is_empty() { - continue; - } - - let line_baseline = xy.1 + line_metrics.baseline as f32; - let full_text = builder.get_text(); - - // 1. Caculate text decoration for line - let mut max_underline_thickness: f32 = 0.0; - let mut underline_y = None; - let mut max_strike_thickness: f32 = 0.0; - let mut strike_y = None; - for (_style_start, style_metric) in style_metrics.iter() { - let font_metrics = style_metric.font_metrics; - let font_size = font_metrics - .cap_height - .abs() - .max(font_metrics.x_height.abs()); - let min_thickness = (font_size * 0.06).max(1.0); - let thickness = font_metrics - .underline_thickness() - .unwrap_or(1.0) - .max(min_thickness); - if style_metric.text_style.decoration().ty - == skia_safe::textlayout::TextDecoration::UNDERLINE - { - let y = - line_baseline + font_metrics.underline_position().unwrap_or(thickness); - max_underline_thickness = max_underline_thickness.max(thickness); - underline_y = Some(y); - } - if style_metric.text_style.decoration().ty - == skia_safe::textlayout::TextDecoration::LINE_THROUGH - { - let y = line_baseline - + font_metrics - .strikeout_position() - .unwrap_or(-font_metrics.cap_height / 2.0); - max_strike_thickness = max_strike_thickness.max(thickness); - strike_y = Some(y); - } - } - - // 2. Draw decorations per segment - for (i, (style_start, style_metric)) in style_metrics.iter().enumerate() { - let text_style = style_metric.text_style; - let style_end = style_metrics - .get(i + 1) - .map(|(next_i, _)| *next_i) - .unwrap_or(line_metrics.end_index); - - let seg_start = (*style_start).max(line_metrics.start_index); - let seg_end = style_end.min(line_metrics.end_index); - if seg_start >= seg_end { - continue; - } - - let start_byte = full_text - .char_indices() - .nth(seg_start) - .map(|(i, _)| i) - .unwrap_or(0); - let end_byte = full_text - .char_indices() - .nth(seg_end) - .map(|(i, _)| i) - .unwrap_or(full_text.len()); - let segment_text = &full_text[start_byte..end_byte]; - - let rects = skia_paragraph.get_rects_for_range( - seg_start..seg_end, - skia_safe::textlayout::RectHeightStyle::Tight, - skia_safe::textlayout::RectWidthStyle::Tight, - ); - let (segment_width, actual_x_offset) = if !rects.is_empty() { - let total_width: f32 = rects.iter().map(|r| r.rect.width()).sum(); - let skia_x_offset = rects - .first() - .map(|r| r.rect.left - line_start_offset) - .unwrap_or(0.0); - (total_width, skia_x_offset) - } else { - let font = skia_paragraph.get_font_at(seg_start); - let measured_width = font.measure_text(segment_text, None).0; - (measured_width, current_x_offset) - }; - - // Underline - if text_style.decoration().ty - == skia_safe::textlayout::TextDecoration::UNDERLINE - { - if let Some(y) = underline_y { - let thickness = max_underline_thickness; - let text_left = xy.0 + line_start_offset + actual_x_offset; - let text_width = segment_width; - let r = skia_safe::Rect::new( - text_left, - y - thickness / 2.0, - text_left + text_width, - y + thickness / 2.0, - ); - let mut decoration_paint = text_style.foreground(); - decoration_paint.set_anti_alias(true); - canvas.draw_rect(r, &decoration_paint); - } - } - // Strikethrough - if text_style.decoration().ty - == skia_safe::textlayout::TextDecoration::LINE_THROUGH - { - if let Some(y) = strike_y { - let thickness = max_strike_thickness; - let text_left = xy.0 + line_start_offset + actual_x_offset; - let text_width = segment_width; - let r = skia_safe::Rect::new( - text_left, - y - thickness / 2.0, - text_left + text_width, - y + thickness / 2.0, - ); - let mut decoration_paint = text_style.foreground(); - decoration_paint.set_anti_alias(true); - canvas.draw_rect(r, &decoration_paint); - } - } - current_x_offset += segment_width; - } + for line_metrics in paragraph.get_line_metrics().iter() { + render_text_decoration(canvas, ¶graph, paragraph_builder, line_metrics, xy); } - // Only increment group_offset_y for regular paragraphs (single element groups) - // For stroke groups (multiple elements), keep same offset for blending if group_len == 1 { group_offset_y += paragraph_height; } - // For stroke groups (group_len > 1), don't increment group_offset_y within the group - // This ensures all stroke variants render at the same position for proper blending } - // For stroke groups (multiple elements), increment global_offset_y once per group if group_len > 1 { - let mut first_paragraph = group[0].build(); + let mut first_paragraph = paragraph_builder_group[0].build(); first_paragraph.layout(paragraph_width); global_offset_y += first_paragraph.height(); } else { - // For regular paragraphs, global_offset_y was already incremented inside the loop global_offset_y = group_offset_y; } } +} - canvas.restore(); +fn draw_text_decorations( + canvas: &Canvas, + text_style: &TextStyle, + y: Option, + thickness: f32, + text_left: f32, + text_width: f32, +) { + if let Some(y) = y { + let r = skia_safe::Rect::new( + text_left, + y - thickness / 2.0, + text_left + text_width, + y + thickness / 2.0, + ); + let mut decoration_paint = text_style.foreground(); + decoration_paint.set_anti_alias(true); + canvas.draw_rect(r, &decoration_paint); + } +} + +fn calculate_decoration_metrics( + style_metrics: &Vec<(usize, &StyleMetrics)>, + line_baseline: f32, +) -> (f32, Option, f32, Option) { + let mut max_underline_thickness: f32 = 0.0; + let mut underline_y = None; + let mut max_strike_thickness: f32 = 0.0; + let mut strike_y = None; + for (_style_start, style_metric) in style_metrics.iter() { + let font_metrics = style_metric.font_metrics; + let font_size = font_metrics + .cap_height + .abs() + .max(font_metrics.x_height.abs()); + let min_thickness = (font_size * 0.06).max(1.0); + let thickness = font_metrics + .underline_thickness() + .unwrap_or(1.0) + .max(min_thickness); + if style_metric.text_style.decoration().ty == TextDecoration::UNDERLINE { + let y = line_baseline + font_metrics.underline_position().unwrap_or(thickness); + max_underline_thickness = max_underline_thickness.max(thickness); + underline_y = Some(y); + } + if style_metric.text_style.decoration().ty == TextDecoration::LINE_THROUGH { + let y = line_baseline + + font_metrics + .strikeout_position() + .unwrap_or(-font_metrics.cap_height / 2.0); + max_strike_thickness = max_strike_thickness.max(thickness); + strike_y = Some(y); + } + } + ( + max_underline_thickness, + underline_y, + max_strike_thickness, + strike_y, + ) +} + +fn render_text_decoration( + canvas: &Canvas, + skia_paragraph: &Paragraph, + builder: &mut ParagraphBuilder, + line_metrics: &LineMetrics, + xy: (f32, f32), +) { + let style_metrics: Vec<_> = line_metrics + .get_style_metrics(line_metrics.start_index..line_metrics.end_index) + .into_iter() + .collect(); + + let mut current_x_offset = 0.0; + let total_chars = line_metrics.end_index - line_metrics.start_index; + let line_start_offset = line_metrics.left as f32; + + if total_chars == 0 || style_metrics.is_empty() { + return; + } + + let line_baseline = xy.1 + line_metrics.baseline as f32; + let full_text = builder.get_text(); + + // Calculate decoration metrics + let (max_underline_thickness, underline_y, max_strike_thickness, strike_y) = + calculate_decoration_metrics(&style_metrics, line_baseline); + + // Draw decorations per segment (text leaf) + for (i, (style_start, style_metric)) in style_metrics.iter().enumerate() { + let text_style = &style_metric.text_style; + let style_end = style_metrics + .get(i + 1) + .map(|(next_i, _)| *next_i) + .unwrap_or(line_metrics.end_index); + + let seg_start = (*style_start).max(line_metrics.start_index); + let seg_end = style_end.min(line_metrics.end_index); + if seg_start >= seg_end { + continue; + } + + let start_byte = full_text + .char_indices() + .nth(seg_start) + .map(|(i, _)| i) + .unwrap_or(0); + let end_byte = full_text + .char_indices() + .nth(seg_end) + .map(|(i, _)| i) + .unwrap_or(full_text.len()); + let segment_text = &full_text[start_byte..end_byte]; + + let rects = skia_paragraph.get_rects_for_range( + seg_start..seg_end, + RectHeightStyle::Tight, + RectWidthStyle::Tight, + ); + let (segment_width, actual_x_offset) = if !rects.is_empty() { + let total_width: f32 = rects.iter().map(|r| r.rect.width()).sum(); + let skia_x_offset = rects + .first() + .map(|r| r.rect.left - line_start_offset) + .unwrap_or(0.0); + (total_width, skia_x_offset) + } else { + let font = skia_paragraph.get_font_at(seg_start); + let measured_width = font.measure_text(segment_text, None).0; + (measured_width, current_x_offset) + }; + + let text_left = xy.0 + line_start_offset + actual_x_offset; + let text_width = segment_width; + + // Underline + if text_style.decoration().ty == TextDecoration::UNDERLINE { + draw_text_decorations( + canvas, + text_style, + underline_y, + max_underline_thickness, + text_left, + text_width, + ); + } + // Strikethrough + if text_style.decoration().ty == TextDecoration::LINE_THROUGH { + draw_text_decorations( + canvas, + text_style, + strike_y, + max_strike_thickness, + text_left, + text_width, + ); + } + current_x_offset += segment_width; + } } fn calculate_total_paragraphs_height(paragraphs: &mut [ParagraphBuilder], width: f32) -> f32 { @@ -278,11 +468,11 @@ pub fn render_as_path( // let text_content = text_content.new_bounds(shape.selrect()); // let paths = text_content.get_paths(antialias); -// shadows::render_text_drop_shadows(self, &shape, &paths, antialias); +// shadows::render_text_shadows(self, &shape, &paths, antialias); // text::render(self, &paths, None, None); // for stroke in shape.visible_strokes().rev() { -// shadows::render_text_path_stroke_drop_shadows( +// shadows::render_text_path_stroke_shadows( // self, &shape, &paths, stroke, antialias, // ); // strokes::render_text_paths(self, &shape, stroke, &paths, None, None, antialias); diff --git a/render-wasm/src/shapes.rs b/render-wasm/src/shapes.rs index 1b7a5d922c..5b421ad3e6 100644 --- a/render-wasm/src/shapes.rs +++ b/render-wasm/src/shapes.rs @@ -1,12 +1,12 @@ use skia_safe::{self as skia}; -use crate::render::BlendMode; use crate::uuid::Uuid; use std::borrow::Cow; use std::cell::OnceCell; use std::collections::{HashMap, HashSet}; use std::iter::once; +mod blend; mod blurs; mod bools; mod corners; @@ -26,6 +26,7 @@ mod text; pub mod text_paths; mod transform; +pub use blend::*; pub use blurs::*; pub use bools::*; pub use corners::*; @@ -44,8 +45,7 @@ pub use svgraw::*; pub use text::*; pub use transform::*; -use crate::math; -use crate::math::{Bounds, Matrix, Point}; +use crate::math::{self, Bounds, Matrix, Point}; use indexmap::IndexSet; use crate::state::ShapesPool; @@ -61,26 +61,12 @@ pub enum Type { Bool(Bool), Rect(Rect), Path(Path), - Circle, - SVGRaw(SVGRaw), Text(TextContent), + Circle, // FIXME: shouldn't this have a rect inside, like the Rect variant? + SVGRaw(SVGRaw), } impl Type { - pub fn from(value: u8) -> Self { - match value { - 0 => Type::Frame(Frame::default()), - 1 => Type::Group(Group::default()), - 2 => Type::Bool(Bool::default()), - 3 => Type::Rect(Rect::default()), - 4 => Type::Path(Path::default()), - 5 => Type::Text(TextContent::default()), - 6 => Type::Circle, - 7 => Type::SVGRaw(SVGRaw::default()), - _ => Type::Rect(Rect::default()), - } - } - pub fn corners(&self) -> Option { match self { Type::Rect(Rect { corners, .. }) => *corners, @@ -150,19 +136,6 @@ pub enum ConstraintH { Scale, } -impl ConstraintH { - pub fn from(value: u8) -> Option { - match value { - 0 => Some(Self::Left), - 1 => Some(Self::Right), - 2 => Some(Self::LeftRight), - 3 => Some(Self::Center), - 4 => Some(Self::Scale), - _ => None, - } - } -} - #[derive(Debug, Clone, PartialEq, Copy)] pub enum VerticalAlign { Top, @@ -170,17 +143,6 @@ pub enum VerticalAlign { Bottom, } -impl VerticalAlign { - pub fn from(value: u8) -> Self { - match value { - 0 => Self::Top, - 1 => Self::Center, - 2 => Self::Bottom, - _ => Self::Top, - } - } -} - #[derive(Debug, Clone, PartialEq, Copy)] pub enum ConstraintV { Top, @@ -190,19 +152,6 @@ pub enum ConstraintV { Scale, } -impl ConstraintV { - pub fn from(value: u8) -> Option { - match value { - 0 => Some(Self::Top), - 1 => Some(Self::Bottom), - 2 => Some(Self::TopBottom), - 3 => Some(Self::Center), - 4 => Some(Self::Scale), - _ => None, - } - } -} - pub type Color = skia::Color; #[derive(Debug, Clone)] @@ -221,7 +170,7 @@ pub struct Shape { pub strokes: Vec, pub blend_mode: BlendMode, pub vertical_align: VerticalAlign, - pub blur: Blur, + pub blur: Option, pub opacity: f32, pub hidden: bool, pub svg: Option, @@ -250,7 +199,7 @@ impl Shape { vertical_align: VerticalAlign::Top, opacity: 1., hidden: false, - blur: Blur::default(), + blur: None, svg: None, svg_attrs: HashMap::new(), shadows: Vec::with_capacity(1), @@ -270,7 +219,11 @@ impl Shape { .shadows .iter_mut() .for_each(|s| s.scale_content(value)); - result.blur.scale_content(value); + + if let Some(blur) = result.blur.as_mut() { + blur.scale_content(value); + } + result .layout_item .iter_mut() @@ -503,39 +456,39 @@ impl Shape { } } - pub fn set_grid_columns(&mut self, tracks: Vec) { + pub fn set_grid_columns(&mut self, tracks: Vec) { let Type::Frame(frame_data) = &mut self.shape_type else { return; }; let Some(Layout::GridLayout(_, grid_data)) = &mut frame_data.layout else { return; }; - grid_data.columns = tracks.iter().map(GridTrack::from_raw).collect(); + grid_data.columns = tracks; } - pub fn set_grid_rows(&mut self, tracks: Vec) { + pub fn set_grid_rows(&mut self, tracks: Vec) { let Type::Frame(frame_data) = &mut self.shape_type else { return; }; let Some(Layout::GridLayout(_, grid_data)) = &mut frame_data.layout else { return; }; - grid_data.rows = tracks.iter().map(GridTrack::from_raw).collect(); + grid_data.rows = tracks; } - pub fn set_grid_cells(&mut self, cells: Vec) { + pub fn set_grid_cells(&mut self, cells: Vec) { let Type::Frame(frame_data) = &mut self.shape_type else { return; }; let Some(Layout::GridLayout(_, grid_data)) = &mut frame_data.layout else { return; }; - grid_data.cells = cells.iter().map(GridCell::from_raw).collect(); + grid_data.cells = cells; } - pub fn set_blur(&mut self, blur_type: u8, hidden: bool, value: f32) { + pub fn set_blur(&mut self, blur: Option) { self.invalidate_extrect(); - self.blur = Blur::new(blur_type, hidden, value); + self.blur = blur; } pub fn add_child(&mut self, id: Uuid) { @@ -551,7 +504,7 @@ impl Shape { (added, removed) } - pub fn fills(&self) -> std::slice::Iter { + pub fn fills(&self) -> std::slice::Iter<'_, Fill> { self.fills.iter() } @@ -573,6 +526,12 @@ impl Shape { .filter(|stroke| stroke.width > MIN_STROKE_WIDTH) } + pub fn has_visible_strokes(&self) -> bool { + self.strokes + .iter() + .any(|stroke| stroke.width > MIN_STROKE_WIDTH) + } + pub fn add_stroke(&mut self, s: Stroke) { self.invalidate_extrect(); self.strokes.push(s) @@ -651,7 +610,7 @@ impl Shape { self.svg_attrs.insert(name, value); } - pub fn blend_mode(&self) -> crate::render::BlendMode { + pub fn blend_mode(&self) -> BlendMode { self.blend_mode } @@ -695,12 +654,17 @@ impl Shape { Point::new(self.selrect.x(), self.selrect.y() + self.selrect.height()), ); - let center = self.center(); - let mut matrix = self.transform; - matrix.post_translate(center); - matrix.pre_translate(-center); - - bounds.transform_mut(&matrix); + // Apply this transformation only when self.transform + // is not the identity matrix because if it is, + // the result of applying this transformations would be + // the same identity matrix. + if !self.transform.is_identity() { + let mut matrix = self.transform; + let center = self.center(); + matrix.post_translate(center); + matrix.pre_translate(-center); + bounds.transform_mut(&matrix); + } bounds } @@ -719,6 +683,60 @@ impl Shape { .get_or_init(|| self.calculate_extrect(shapes_pool, modifiers)) } + /// Calculates the bounding rectangle for a selrect shape's shadow, taking into account + /// stroke widths and shadow properties. + /// + /// This method computes the expanded bounds that would be needed to fully render + /// the shadow effect for a shape. It considers: + /// - The base bounds (selection rectangle) + /// - Maximum stroke width across all strokes, accounting for stroke rendering kind + /// - Shadow offset (x, y displacement) + /// - Shadow blur radius (expands bounds outward) + /// - Whether the shadow is hidden + /// + /// # Arguments + /// * `shadow` - The shadow configuration containing offset, blur, and visibility + /// + /// # Returns + /// A `math::Rect` representing the bounding rectangle that encompasses the shadow. + /// Returns an empty rectangle if the shadow is hidden. + pub fn get_selrect_shadow_bounds(&self, shadow: &Shadow) -> math::Rect { + let base_bounds = self.selrect(); + let mut rect = skia::Rect::new_empty(); + + let mut max_stroke: Option = None; + for stroke in self.strokes.iter() { + let width = match stroke.render_kind(false) { + StrokeKind::Inner => -stroke.width / 2., + StrokeKind::Center => 0., + StrokeKind::Outer => stroke.width, + }; + max_stroke = Some(max_stroke.unwrap_or(f32::MIN).max(width)); + } + if !shadow.hidden() { + let (x, y) = shadow.offset; + let mut shadow_rect = base_bounds; + shadow_rect.left += x; + shadow_rect.right += x; + shadow_rect.top += y; + shadow_rect.bottom += y; + + shadow_rect.left += shadow.blur; + shadow_rect.top += shadow.blur; + shadow_rect.right -= shadow.blur; + shadow_rect.bottom -= shadow.blur; + + if let Some(max_stroke) = max_stroke { + shadow_rect.left -= max_stroke; + shadow_rect.right += max_stroke; + shadow_rect.top -= max_stroke; + shadow_rect.bottom += max_stroke; + } + rect.join(shadow_rect); + } + rect + } + pub fn calculate_extrect( &self, shapes_pool: &ShapesPool, @@ -755,33 +773,37 @@ impl Shape { bounds_rect }; - if let Type::Text(ref text_content) = self.shape_type { + if let Type::Text(text_content) = &self.shape_type { let (width, height) = text_content.visual_bounds(); rect.right = rect.left + width; rect.bottom = rect.top + height; } for shadow in self.shadows.iter() { - let (x, y) = shadow.offset; - let mut shadow_rect = rect; - shadow_rect.left += x; - shadow_rect.right += x; - shadow_rect.top += y; - shadow_rect.bottom += y; + if !shadow.hidden() { + let (x, y) = shadow.offset; + let mut shadow_rect = rect; + shadow_rect.left += x; + shadow_rect.right += x; + shadow_rect.top += y; + shadow_rect.bottom += y; - shadow_rect.left -= shadow.blur; - shadow_rect.top -= shadow.blur; - shadow_rect.right += shadow.blur; - shadow_rect.bottom += shadow.blur; + shadow_rect.left -= shadow.blur; + shadow_rect.top -= shadow.blur; + shadow_rect.right += shadow.blur; + shadow_rect.bottom += shadow.blur; - rect.join(shadow_rect); + rect.join(shadow_rect); + } } - if self.blur.blur_type != blurs::BlurType::None { - rect.left -= self.blur.value; - rect.top -= self.blur.value; - rect.right += self.blur.value; - rect.bottom += self.blur.value; + if let Some(blur) = self.blur { + if !blur.hidden { + rect.left -= blur.value; + rect.top -= blur.value; + rect.right += blur.value; + rect.bottom += blur.value; + } } // For groups and frames without clipping, extend the bounding rectangle to include all nested shapes @@ -811,6 +833,10 @@ impl Shape { rect } + pub fn left_top(&self) -> Point { + Point::new(self.selrect.left, self.selrect.top) + } + pub fn center(&self) -> Point { self.selrect.center() } @@ -900,6 +926,9 @@ impl Shape { ancestors.insert(parent_id); current_id = parent_id; } else { + // FIXME: This should panic! I've removed it temporarily until + // we fix the problems with shapes without parents. + // panic!("Parent can't be found"); break; } } @@ -907,35 +936,56 @@ impl Shape { ancestors } - pub fn image_filter(&self, scale: f32) -> Option { - if !self.blur.hidden { - match self.blur.blur_type { - BlurType::None => None, - BlurType::Layer => skia::image_filters::blur( - (self.blur.value * scale, self.blur.value * scale), - None, - None, - None, - ), - } - } else { - None - } + pub fn get_matrix(&self) -> Matrix { + let mut matrix = Matrix::new_identity(); + matrix.post_translate(self.left_top()); + matrix.post_rotate(self.rotation, self.center()); + matrix } - pub fn mask_filter(&self, scale: f32) -> Option { - if !self.blur.hidden { - match self.blur.blur_type { - BlurType::None => None, - BlurType::Layer => skia::MaskFilter::blur( - skia::BlurStyle::Normal, - self.blur.value * scale, - Some(true), - ), + pub fn get_concatenated_matrix(&self, shapes: &ShapesPool) -> Matrix { + let mut matrix = Matrix::new_identity(); + let mut current_id = self.id; + while let Some(parent_id) = shapes.get(¤t_id).and_then(|s| s.parent_id) { + if parent_id == Uuid::nil() { + break; + } + + if let Some(parent) = shapes.get(&parent_id) { + matrix.pre_concat(&parent.get_matrix()); + current_id = parent_id; + } else { + // FIXME: This should panic! I've removed it temporarily until + // we fix the problems with shapes without parents. + // panic!("Parent can't be found"); + break; } - } else { - None } + matrix + } + + pub fn image_filter(&self, scale: f32) -> Option { + self.blur + .filter(|blur| !blur.hidden) + .and_then(|blur| match blur.blur_type { + BlurType::LayerBlur => skia::image_filters::blur( + (blur.value * scale, blur.value * scale), + None, + None, + None, + ), + }) + } + + #[allow(dead_code)] + pub fn mask_filter(&self, scale: f32) -> Option { + self.blur + .filter(|blur| !blur.hidden) + .and_then(|blur| match blur.blur_type { + BlurType::LayerBlur => { + skia::MaskFilter::blur(skia::BlurStyle::Normal, blur.value * scale, Some(true)) + } + }) } pub fn is_recursive(&self) -> bool { @@ -955,18 +1005,36 @@ impl Shape { self.shadows.clear(); } + #[allow(dead_code)] pub fn drop_shadows(&self) -> impl DoubleEndedIterator { self.shadows .iter() + .rev() .filter(|shadow| shadow.style() == ShadowStyle::Drop) } + pub fn drop_shadows_visible(&self) -> impl DoubleEndedIterator { + self.shadows + .iter() + .rev() + .filter(|shadow| shadow.style() == ShadowStyle::Drop && !shadow.hidden()) + } + + #[allow(dead_code)] pub fn inner_shadows(&self) -> impl DoubleEndedIterator { self.shadows .iter() + .rev() .filter(|shadow| shadow.style() == ShadowStyle::Inner) } + pub fn inner_shadows_visible(&self) -> impl DoubleEndedIterator { + self.shadows + .iter() + .rev() + .filter(|shadow| shadow.style() == ShadowStyle::Inner && !shadow.hidden()) + } + pub fn to_path_transform(&self) -> Option { match self.shape_type { Type::Path(_) | Type::Bool(_) => { @@ -1101,15 +1169,6 @@ impl Shape { !self.fills.is_empty() } - pub fn has_visible_strokes(&self) -> bool { - self.visible_strokes().next().is_some() - } - - #[allow(dead_code)] - pub fn has_visible_inner_strokes(&self) -> bool { - self.visible_strokes().any(|s| s.kind == StrokeKind::Inner) - } - pub fn count_visible_inner_strokes(&self) -> usize { self.visible_strokes() .filter(|s| s.kind == StrokeKind::Inner) @@ -1152,6 +1211,34 @@ impl Shape { self.children_ids(include_hidden) } } + + pub fn drop_shadow_paints(&self) -> Vec { + let drop_shadows: Vec<&Shadow> = self.drop_shadows_visible().collect(); + + drop_shadows + .into_iter() + .map(|shadow| { + let mut paint = skia_safe::Paint::default(); + let filter = shadow.get_drop_shadow_filter(); + paint.set_image_filter(filter); + paint + }) + .collect() + } + + pub fn inner_shadow_paints(&self) -> Vec { + let inner_shadows: Vec<&Shadow> = self.inner_shadows_visible().collect(); + + inner_shadows + .into_iter() + .map(|shadow| { + let mut paint = skia_safe::Paint::default(); + let filter = shadow.get_inner_shadow_filter(); + paint.set_image_filter(filter); + paint + }) + .collect() + } } #[cfg(test)] diff --git a/render-wasm/src/render/blend.rs b/render-wasm/src/shapes/blend.rs similarity index 52% rename from render-wasm/src/render/blend.rs rename to render-wasm/src/shapes/blend.rs index b54283a012..a225b58592 100644 --- a/render-wasm/src/render/blend.rs +++ b/render-wasm/src/shapes/blend.rs @@ -1,7 +1,7 @@ use skia_safe as skia; #[derive(Debug, PartialEq, Clone, Copy)] -pub struct BlendMode(skia::BlendMode); +pub struct BlendMode(pub skia::BlendMode); impl Default for BlendMode { fn default() -> Self { @@ -9,16 +9,6 @@ impl Default for BlendMode { } } -impl From for BlendMode { - fn from(value: i32) -> Self { - if value <= skia::BlendMode::Luminosity as i32 { - unsafe { Self(std::mem::transmute::(value)) } - } else { - Self::default() - } - } -} - impl From for skia::BlendMode { fn from(val: BlendMode) -> Self { match val { diff --git a/render-wasm/src/shapes/blurs.rs b/render-wasm/src/shapes/blurs.rs index 36d3b588f2..4232f0ee1c 100644 --- a/render-wasm/src/shapes/blurs.rs +++ b/render-wasm/src/shapes/blurs.rs @@ -1,7 +1,6 @@ #[derive(Debug, Clone, Copy, PartialEq)] pub enum BlurType { - None, - Layer, + LayerBlur, } #[derive(Debug, Clone, Copy, PartialEq)] @@ -11,26 +10,10 @@ pub struct Blur { pub value: f32, } -impl From for BlurType { - fn from(value: u8) -> Self { - match value { - 1 => BlurType::Layer, - _ => BlurType::None, - } - } -} - impl Blur { - pub fn default() -> Self { + pub fn new(blur_type: BlurType, hidden: bool, value: f32) -> Self { Blur { - blur_type: BlurType::None, - hidden: true, - value: 0., - } - } - pub fn new(blur_type: u8, hidden: bool, value: f32) -> Self { - Blur { - blur_type: BlurType::from(blur_type), + blur_type, hidden, value, } diff --git a/render-wasm/src/shapes/bools.rs b/render-wasm/src/shapes/bools.rs index 1bb77b699c..644c4108d2 100644 --- a/render-wasm/src/shapes/bools.rs +++ b/render-wasm/src/shapes/bools.rs @@ -1,42 +1,16 @@ use super::Path; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Default, Clone, PartialEq)] pub struct Bool { pub bool_type: BoolType, pub path: Path, } -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Default, Clone, Copy, PartialEq)] pub enum BoolType { + #[default] Union, Difference, Intersection, Exclusion, } - -impl Default for Bool { - fn default() -> Self { - Bool { - bool_type: BoolType::Union, - path: Path::default(), - } - } -} - -impl From for BoolType { - fn from(value: u8) -> Self { - match value { - 0 => Self::Union, - 1 => Self::Difference, - 2 => Self::Intersection, - 3 => Self::Exclusion, - _ => Self::default(), - } - } -} - -impl Default for BoolType { - fn default() -> Self { - Self::Union - } -} diff --git a/render-wasm/src/shapes/fills.rs b/render-wasm/src/shapes/fills.rs index 925fd25ddd..6a772527eb 100644 --- a/render-wasm/src/shapes/fills.rs +++ b/render-wasm/src/shapes/fills.rs @@ -255,7 +255,12 @@ pub fn merge_fills(fills: &[Fill], bounding_box: Rect) -> skia::Paint { fills_paint } -pub fn set_paint_fill(paint: &mut Paint, fill: &Fill, bounding_box: &Rect) { +pub fn set_paint_fill(paint: &mut Paint, fill: &Fill, bounding_box: &Rect, remove_alpha: bool) { + if remove_alpha { + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); + return; + } let shader = get_fill_shader(fill, bounding_box); if let Some(shader) = shader { paint.set_shader(shader); diff --git a/render-wasm/src/shapes/fonts.rs b/render-wasm/src/shapes/fonts.rs index 7a4524cad5..86ab5d3897 100644 --- a/render-wasm/src/shapes/fonts.rs +++ b/render-wasm/src/shapes/fonts.rs @@ -8,16 +8,6 @@ pub enum FontStyle { Italic, } -impl From for FontStyle { - fn from(value: u8) -> Self { - match value { - 0 => Self::Normal, - 1 => Self::Italic, - _ => Self::Normal, - } - } -} - impl fmt::Display for FontStyle { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let txt = match self { diff --git a/render-wasm/src/shapes/layouts.rs b/render-wasm/src/shapes/layouts.rs index edb2e80548..9bbb2dee08 100644 --- a/render-wasm/src/shapes/layouts.rs +++ b/render-wasm/src/shapes/layouts.rs @@ -1,4 +1,3 @@ -use crate::utils::uuid_from_u32_quartet; use crate::uuid::Uuid; #[derive(Debug, Clone, PartialEq)] @@ -22,7 +21,7 @@ impl Layout { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Copy)] pub enum FlexDirection { Row, RowReverse, @@ -30,34 +29,12 @@ pub enum FlexDirection { ColumnReverse, } -impl FlexDirection { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Row, - 1 => Self::RowReverse, - 2 => Self::Column, - 3 => Self::ColumnReverse, - _ => unreachable!(), - } - } -} - -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Copy)] pub enum GridDirection { Row, Column, } -impl GridDirection { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Row, - 1 => Self::Column, - _ => unreachable!(), - } - } -} - #[derive(Debug, Clone, PartialEq, Copy)] pub enum AlignItems { Start, @@ -66,18 +43,6 @@ pub enum AlignItems { Stretch, } -impl AlignItems { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Start, - 1 => Self::End, - 2 => Self::Center, - 3 => Self::Stretch, - _ => unreachable!(), - } - } -} - #[derive(Debug, Clone, PartialEq, Copy)] pub enum AlignContent { Start, @@ -89,21 +54,6 @@ pub enum AlignContent { Stretch, } -impl AlignContent { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Start, - 1 => Self::End, - 2 => Self::Center, - 3 => Self::SpaceBetween, - 4 => Self::SpaceAround, - 5 => Self::SpaceEvenly, - 6 => Self::Stretch, - _ => unreachable!(), - } - } -} - #[derive(Debug, Clone, PartialEq, Copy)] pub enum JustifyItems { Start, @@ -112,18 +62,6 @@ pub enum JustifyItems { Stretch, } -impl JustifyItems { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Start, - 1 => Self::End, - 2 => Self::Center, - 3 => Self::Stretch, - _ => unreachable!(), - } - } -} - #[derive(Debug, Clone, PartialEq, Copy)] pub enum JustifyContent { Start, @@ -135,36 +73,12 @@ pub enum JustifyContent { Stretch, } -impl JustifyContent { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Start, - 1 => Self::End, - 2 => Self::Center, - 3 => Self::SpaceBetween, - 4 => Self::SpaceAround, - 5 => Self::SpaceEvenly, - 6 => Self::Stretch, - _ => unreachable!(), - } - } -} - #[derive(Debug, Clone, PartialEq)] pub enum WrapType { Wrap, NoWrap, } -impl WrapType { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Wrap, - 1 => Self::NoWrap, - _ => unreachable!(), - } - } -} #[derive(Debug, Copy, Clone, PartialEq)] pub enum GridTrackType { Percent, @@ -173,18 +87,6 @@ pub enum GridTrackType { Fixed, } -impl GridTrackType { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Percent, - 1 => Self::Flex, - 2 => Self::Auto, - 3 => Self::Fixed, - _ => unreachable!(), - } - } -} - #[derive(Debug, Clone, PartialEq)] pub struct GridTrack { pub track_type: GridTrackType, @@ -192,13 +94,6 @@ pub struct GridTrack { } impl GridTrack { - pub fn from_raw(raw: &RawGridTrack) -> Self { - Self { - track_type: GridTrackType::from_u8(raw.track_type), - value: f32::from_le_bytes(raw.value), - } - } - pub fn scale_content(&mut self, value: f32) { if self.track_type == GridTrackType::Fixed { self.value *= value; @@ -206,7 +101,7 @@ impl GridTrack { } } -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Copy)] pub struct GridCell { pub row: i32, pub row_span: i32, @@ -217,37 +112,6 @@ pub struct GridCell { pub shape: Option, } -impl GridCell { - pub fn from_raw(raw: &RawGridCell) -> Self { - Self { - row: i32::from_le_bytes(raw.row), - row_span: i32::from_le_bytes(raw.row_span), - column: i32::from_le_bytes(raw.column), - column_span: i32::from_le_bytes(raw.column_span), - align_self: if raw.has_align_self == 1 { - AlignSelf::from_u8(raw.align_self) - } else { - None - }, - justify_self: if raw.has_justify_self == 1 { - JustifySelf::from_u8(raw.justify_self) - } else { - None - }, - shape: if raw.has_shape_id == 1 { - Some(uuid_from_u32_quartet( - u32::from_le_bytes(raw.shape_id_a), - u32::from_le_bytes(raw.shape_id_b), - u32::from_le_bytes(raw.shape_id_c), - u32::from_le_bytes(raw.shape_id_d), - )) - } else { - None - }, - } - } -} - #[derive(Debug, Clone, PartialEq, Copy)] pub enum Sizing { Fill, @@ -255,17 +119,6 @@ pub enum Sizing { Auto, } -impl Sizing { - pub fn from_u8(value: u8) -> Self { - match value { - 0 => Self::Fill, - 1 => Self::Fix, - 2 => Self::Auto, - _ => unreachable!(), - } - } -} - #[derive(Debug, Clone, PartialEq)] pub struct LayoutData { pub align_items: AlignItems, @@ -292,6 +145,7 @@ impl LayoutData { } #[derive(Debug, Copy, Clone, PartialEq)] +#[repr(u8)] pub enum AlignSelf { Auto, Start, @@ -300,39 +154,13 @@ pub enum AlignSelf { Stretch, } -impl AlignSelf { - pub fn from_u8(value: u8) -> Option { - match value { - 0 => Some(Self::Auto), - 1 => Some(Self::Start), - 2 => Some(Self::End), - 3 => Some(Self::Center), - 4 => Some(Self::Stretch), - _ => None, - } - } -} - #[derive(Debug, Copy, Clone, PartialEq)] pub enum JustifySelf { - Auto, - Start, - End, - Center, - Stretch, -} - -impl JustifySelf { - pub fn from_u8(value: u8) -> Option { - match value { - 0 => Some(Self::Auto), - 1 => Some(Self::Start), - 2 => Some(Self::End), - 3 => Some(Self::Center), - 4 => Some(Self::Stretch), - _ => None, - } - } + Auto = 0, + Start = 1, + End = 2, + Center = 3, + Stretch = 4, } #[derive(Debug, Clone, PartialEq)] @@ -385,64 +213,6 @@ impl GridData { } } -// FIXME: use transmute -#[derive(Debug)] -#[repr(C)] -pub struct RawGridTrack { - track_type: u8, - value: [u8; 4], -} - -impl RawGridTrack { - pub fn from_bytes(bytes: [u8; 5]) -> Self { - Self { - track_type: bytes[0], - value: [bytes[1], bytes[2], bytes[3], bytes[4]], - } - } -} - -#[derive(Debug)] -#[repr(C)] -pub struct RawGridCell { - row: [u8; 4], - row_span: [u8; 4], - column: [u8; 4], - column_span: [u8; 4], - has_align_self: u8, - align_self: u8, - has_justify_self: u8, - justify_self: u8, - has_shape_id: u8, - shape_id_a: [u8; 4], - shape_id_b: [u8; 4], - shape_id_c: [u8; 4], - shape_id_d: [u8; 4], -} - -impl RawGridCell { - pub fn from_bytes(bytes: [u8; 37]) -> Self { - Self { - row: [bytes[0], bytes[1], bytes[2], bytes[3]], - row_span: [bytes[4], bytes[5], bytes[6], bytes[7]], - column: [bytes[8], bytes[9], bytes[10], bytes[11]], - column_span: [bytes[12], bytes[13], bytes[14], bytes[15]], - - has_align_self: bytes[16], - align_self: bytes[17], - - has_justify_self: bytes[18], - justify_self: bytes[19], - - has_shape_id: bytes[20], - shape_id_a: [bytes[21], bytes[22], bytes[23], bytes[24]], - shape_id_b: [bytes[25], bytes[26], bytes[27], bytes[28]], - shape_id_c: [bytes[29], bytes[30], bytes[31], bytes[32]], - shape_id_d: [bytes[33], bytes[34], bytes[35], bytes[36]], - } - } -} - #[derive(Debug, Clone, PartialEq, Copy)] pub struct LayoutItem { pub margin_top: f32, diff --git a/render-wasm/src/shapes/modifiers.rs b/render-wasm/src/shapes/modifiers.rs index e90b8e2d0c..59c2431431 100644 --- a/render-wasm/src/shapes/modifiers.rs +++ b/render-wasm/src/shapes/modifiers.rs @@ -1,20 +1,19 @@ use std::collections::{HashMap, HashSet, VecDeque}; -pub mod common; + mod constraints; mod flex_layout; + +pub mod common; pub mod grid_layout; +use crate::math::{self as math, bools, identitish, Bounds, Matrix, Point}; use common::GetBounds; -use crate::math::bools; -use crate::math::{self as math, identitish, Bounds, Matrix, Point}; - use crate::shapes::{ - auto_height, ConstraintH, ConstraintV, Frame, Group, GrowType, Layout, Modifier, Shape, - StructureEntry, TransformEntry, Type, + ConstraintH, ConstraintV, Frame, Group, GrowType, Layout, Modifier, Shape, StructureEntry, + TransformEntry, Type, }; -use crate::state::ShapesPool; -use crate::state::State; +use crate::state::{ShapesPool, State}; use crate::uuid::Uuid; #[allow(clippy::too_many_arguments)] @@ -196,12 +195,15 @@ fn propagate_transform( let mut transform = entry.transform; - if let Type::Text(content) = &shape.shape_type { - match content.grow_type() { + // NOTA: No puedo utilizar un clone porque entonces estaríamos + // perdiendo la referencia al contenido del layout... + if let Type::Text(text_content) = &mut shape.shape_type.clone() { + if text_content.needs_update_layout() { + text_content.update_layout(shape.selrect); + } + match text_content.grow_type() { GrowType::AutoHeight => { - let paragraph_width = shape_bounds_after.width(); - let mut paragraphs = content.to_paragraphs(None, None); - let height = auto_height(&mut paragraphs, paragraph_width); + let height = text_content.size.height; let resize_transform = math::resize_matrix( &shape_bounds_after, &shape_bounds_after, @@ -212,15 +214,10 @@ fn propagate_transform( transform.post_concat(&resize_transform); } GrowType::AutoWidth => { - let paragraph_width = content.get_width(); - let mut paragraphs = content.to_paragraphs(None, None); - let height = auto_height(&mut paragraphs, paragraph_width); - let resize_transform = math::resize_matrix( - &shape_bounds_after, - &shape_bounds_after, - paragraph_width, - height, - ); + let width = text_content.width(); + let height = text_content.size.height; + let resize_transform = + math::resize_matrix(&shape_bounds_after, &shape_bounds_after, width, height); shape_bounds_after = shape_bounds_after.transform(&resize_transform); transform.post_concat(&resize_transform); } diff --git a/render-wasm/src/shapes/paths.rs b/render-wasm/src/shapes/paths.rs index da04d49d2c..dfdc06ae01 100644 --- a/render-wasm/src/shapes/paths.rs +++ b/render-wasm/src/shapes/paths.rs @@ -14,23 +14,7 @@ pub enum Segment { Close, } -impl Segment { - fn xy(&self) -> Option { - match self { - Segment::MoveTo(xy) => Some(*xy), - Segment::LineTo(xy) => Some(*xy), - Segment::CurveTo((_, _, xy)) => Some(*xy), - Segment::Close => None, - } - } - - pub fn is_close_to(&self, other: &Segment) -> bool { - match (self.xy(), other.xy()) { - (Some(a), Some(b)) => math::are_close_points(a, b), - _ => false, - } - } -} +impl Segment {} #[derive(Debug, Clone, PartialEq)] pub struct Path { @@ -92,8 +76,7 @@ impl Path { } } - // TODO: handle error - let open = subpaths::is_open_path(&segments).expect("Failed to determine if path is open"); + let open = subpaths::is_open_path(&segments); Self { segments, diff --git a/render-wasm/src/shapes/paths/subpaths.rs b/render-wasm/src/shapes/paths/subpaths.rs index 4abe390d42..aa076e1ecd 100644 --- a/render-wasm/src/shapes/paths/subpaths.rs +++ b/render-wasm/src/shapes/paths/subpaths.rs @@ -1,11 +1,9 @@ -use super::Segment; -use crate::math::are_close_points; +use crate::shapes::paths::Point; +use crate::shapes::paths::Segment; -type Result = std::result::Result; - -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone)] pub struct Subpath { - segments: Vec, + pub segments: Vec, closed: Option, } @@ -17,199 +15,188 @@ impl Subpath { } } - pub fn starts_in(&self, other_segment: Option<&Segment>) -> bool { - if let (Some(start), Some(end)) = (self.start(), other_segment) { - start.is_close_to(end) - } else { - false - } + pub fn start(&self) -> Option { + self.segments.first().and_then(|s| match s { + Segment::MoveTo(p) | Segment::LineTo(p) => Some(*p), + _ => None, + }) } - pub fn ends_in(&self, other_segment: Option<&Segment>) -> bool { - if let (Some(end), Some(start)) = (self.end(), other_segment) { - end.is_close_to(start) - } else { - false - } - } - - pub fn start(&self) -> Option<&Segment> { - self.segments.first() - } - - pub fn end(&self) -> Option<&Segment> { - self.segments.last() - } - - pub fn is_empty(&self) -> bool { - self.segments.is_empty() + pub fn end(&self) -> Option { + self.segments.iter().rev().find_map(|s| match s { + Segment::MoveTo(p) | Segment::LineTo(p) => Some(*p), + Segment::CurveTo((_, _, p)) => Some(*p), + _ => None, + }) } pub fn is_closed(&self) -> bool { self.closed.unwrap_or_else(|| self.calculate_closed()) } - pub fn add_segment(&mut self, segment: Segment) { - self.segments.push(segment); - self.closed = None; - } - pub fn reversed(&self) -> Self { - let mut reversed = self.clone(); - reversed.segments.reverse(); - reversed + let mut rev = self.clone(); + rev.segments.reverse(); + rev.closed = None; + rev } fn calculate_closed(&self) -> bool { if self.segments.is_empty() { - return false; + return true; } - - // Check if the path ends with a Close segment if let Some(Segment::Close) = self.segments.last() { return true; } - - // Check if the first and last points are close to each other - if let (Some(first), Some(last)) = (self.segments.first(), self.segments.last()) { - let first_point = match first { - Segment::MoveTo(xy) => xy, - _ => return false, - }; - - let last_point = match last { - Segment::LineTo(xy) => xy, - Segment::CurveTo((_, _, xy)) => xy, - _ => return false, - }; - - return are_close_points(*first_point, *last_point); + if let (Some(first), Some(last)) = (self.start(), self.end()) { + return are_close_points(first, last); } - false } } -impl Default for Subpath { - fn default() -> Self { - Self::new(vec![]) +fn are_close_points(a: Point, b: Point) -> bool { + let tol = 1e-1; + (a.0 - b.0).abs() < tol && (a.1 - b.1).abs() < tol +} + +#[derive(Debug, Clone)] +enum MergeMode { + EndStart, + StartEnd, + EndEnd, + StartStart, +} + +impl TryFrom<(&Subpath, &Subpath)> for Subpath { + type Error = &'static str; + fn try_from((a, b): (&Subpath, &Subpath)) -> Result { + let mut segs = a.segments.clone(); + segs.extend_from_slice(&b.segments); + Ok(Subpath::new(segs)) } } -/// Joins two subpaths into a single subpath -impl TryFrom<(&Subpath, &Subpath)> for Subpath { - type Error = String; +pub fn closed_subpaths(subpaths: Vec) -> Vec { + let n = subpaths.len(); + if n == 0 { + return vec![]; + } - fn try_from((subpath, other): (&Subpath, &Subpath)) -> Result { - if subpath.is_empty() || other.is_empty() || subpath.end() != other.start() { - return Err("Subpaths cannot be joined".to_string()); + let mut used = vec![false; n]; + let mut result = Vec::with_capacity(n); + + for i in 0..n { + if used[i] { + continue; } - let mut segments = subpath.segments.clone(); - segments.extend_from_slice(&other.segments); - Ok(Subpath::new(segments)) + let mut current = subpaths[i].clone(); + used[i] = true; + let mut merged_any = false; + + loop { + if current.is_closed() { + break; + } + + let mut did_merge = false; + + for j in 0..n { + if used[j] || subpaths[j].is_closed() { + continue; + } + + let candidate = &subpaths[j]; + let maybe_merge = [ + (current.end(), candidate.start(), MergeMode::EndStart), + (current.start(), candidate.end(), MergeMode::StartEnd), + (current.end(), candidate.end(), MergeMode::EndEnd), + (current.start(), candidate.start(), MergeMode::StartStart), + ] + .iter() + .find_map(|(p1, p2, mode)| { + if let (Some(a), Some(b)) = (p1, p2) { + if are_close_points(*a, *b) { + Some(mode.clone()) + } else { + None + } + } else { + None + } + }); + + if let Some(mode) = maybe_merge { + if let Some(new_current) = try_merge(¤t, candidate, mode) { + used[j] = true; + current = new_current; + merged_any = true; + did_merge = true; + break; + } + } + } + + if !did_merge { + break; + } + } + + if !current.is_closed() && merged_any { + if let Some(start) = current.start() { + let mut segs = current.segments.clone(); + segs.push(Segment::LineTo(start)); + segs.push(Segment::Close); + current = Subpath::new(segs); + } + } + + result.push(current); + } + + result +} + +fn try_merge(current: &Subpath, candidate: &Subpath, mode: MergeMode) -> Option { + match mode { + MergeMode::EndStart => Subpath::try_from((current, candidate)).ok(), + MergeMode::StartEnd => Subpath::try_from((candidate, current)).ok(), + MergeMode::EndEnd => Subpath::try_from((current, &candidate.reversed())).ok(), + MergeMode::StartStart => Subpath::try_from((&candidate.reversed(), current)).ok(), } } -/// Groups segments into subpaths based on MoveTo segments -fn get_subpaths(segments: &[Segment]) -> Vec { - let mut subpaths: Vec = vec![]; - let mut current_subpath = Subpath::default(); +pub fn split_into_subpaths(segments: &[Segment]) -> Vec { + let mut subpaths = Vec::new(); + let mut current_segments = Vec::new(); for segment in segments { match segment { Segment::MoveTo(_) => { - if !current_subpath.is_empty() { - subpaths.push(current_subpath); + // Start new subpath unless current is empty + if !current_segments.is_empty() { + subpaths.push(Subpath::new(current_segments.clone())); + current_segments.clear(); } - current_subpath = Subpath::default(); - // Add the MoveTo segment to the new subpath - current_subpath.add_segment(*segment); - } - _ => { - current_subpath.add_segment(*segment); + current_segments.push(*segment); } + _ => current_segments.push(*segment), } } - if !current_subpath.is_empty() { - subpaths.push(current_subpath); + // Push last subpath if any + if !current_segments.is_empty() { + subpaths.push(Subpath::new(current_segments)); } subpaths } -/// Computes the merged candidate and the remaining, unmerged subpaths -fn merge_paths(candidate: Subpath, others: Vec) -> Result<(Subpath, Vec)> { - if candidate.is_closed() { - return Ok((candidate, others)); - } - - let mut merged = candidate.clone(); - let mut other_without_merged = vec![]; - - for subpath in others { - // Only merge if the candidate is not already closed and the subpath can be meaningfully connected - if !merged.is_closed() && !subpath.is_closed() { - if merged.ends_in(subpath.start()) { - merged = Subpath::try_from((&merged, &subpath))?; - } else if merged.starts_in(subpath.end()) { - merged = Subpath::try_from((&subpath, &merged))?; - } else if merged.ends_in(subpath.end()) { - merged = Subpath::try_from((&merged, &subpath.reversed()))?; - } else if merged.starts_in(subpath.start()) { - merged = Subpath::try_from((&subpath.reversed(), &merged))?; - } else { - other_without_merged.push(subpath); - } - } else { - // If either subpath is closed, don't merge - other_without_merged.push(subpath); - } - } - - Ok((merged, other_without_merged)) -} - -/// Searches a path for potential subpaths that can be closed and merges them -fn closed_subpaths( - current: &Subpath, - others: &[Subpath], - partial: &[Subpath], -) -> Result> { - let mut result = partial.to_vec(); - - let (new_current, new_others) = if current.is_closed() { - (current.clone(), others.to_vec()) - } else { - merge_paths(current.clone(), others.to_vec())? - }; - - // we haven't found any matching subpaths -> advance - if new_current == *current { - result.push(current.clone()); - if new_others.is_empty() { - return Ok(result); - } - - closed_subpaths(&new_others[0], &new_others[1..], &result) - } - // if diffrent, we have to search again with the merged subpaths - else { - closed_subpaths(&new_current, &new_others, &result) - } -} - -pub fn is_open_path(segments: &[Segment]) -> Result { - let subpaths = get_subpaths(segments); - let closed_subpaths = if subpaths.len() > 1 { - closed_subpaths(&subpaths[0], &subpaths[1..], &[])? - } else { - subpaths - }; - - // return true if any subpath is open - Ok(closed_subpaths.iter().any(|subpath| !subpath.is_closed())) +pub fn is_open_path(segments: &[Segment]) -> bool { + let subpaths = split_into_subpaths(segments); + let closed_subpaths = closed_subpaths(subpaths); + closed_subpaths.iter().any(|sp| !sp.is_closed()) } #[cfg(test)] @@ -235,8 +222,7 @@ mod tests { Segment::Close, ]; - let result = - subpaths::is_open_path(&segments).expect("Failed to determine if path is open"); + let result = subpaths::is_open_path(&segments); assert!(result, "Path should be open"); } @@ -249,8 +235,7 @@ mod tests { Segment::LineTo((223.0, 582.0)), ]; - let result = - subpaths::is_open_path(&segments).expect("Failed to determine if path is open"); + let result = subpaths::is_open_path(&segments); assert!(!result, "Path should be closed"); } @@ -300,16 +285,14 @@ mod tests { Segment::LineTo((400.1158, 610.0)), ]; - let result = - subpaths::is_open_path(&segments).expect("Failed to determine if path is open"); + let result = subpaths::is_open_path(&segments); assert!(result, "Path should be open"); } #[test] fn test_is_open_path_4() { let segments = vec![]; - let result = - subpaths::is_open_path(&segments).expect("Failed to determine if path is open"); + let result = subpaths::is_open_path(&segments); assert!(!result, "Path should be closed"); } } diff --git a/render-wasm/src/shapes/shadows.rs b/render-wasm/src/shapes/shadows.rs index cf8c77f6a8..71e09a493c 100644 --- a/render-wasm/src/shapes/shadows.rs +++ b/render-wasm/src/shapes/shadows.rs @@ -3,28 +3,13 @@ use skia_safe::{self as skia, image_filters, ImageFilter, Paint}; use super::Color; use crate::render::filters::compose_filters; -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Default, Clone, Copy, PartialEq)] pub enum ShadowStyle { + #[default] Drop, Inner, } -impl From for ShadowStyle { - fn from(value: u8) -> Self { - match value { - 0 => Self::Drop, - 1 => Self::Inner, - _ => Self::default(), - } - } -} - -impl Default for ShadowStyle { - fn default() -> Self { - Self::Drop - } -} - #[derive(Debug, Clone, Copy, PartialEq)] pub struct Shadow { pub color: Color, @@ -35,7 +20,6 @@ pub struct Shadow { hidden: bool, } -// TODO: create shadows out of a chunk of bytes impl Shadow { pub fn new( color: Color, @@ -63,19 +47,6 @@ impl Shadow { self.hidden } - pub fn get_drop_shadow_paint( - &self, - antialias: bool, - blur_filter: Option<&ImageFilter>, - ) -> Paint { - let mut paint = Paint::default(); - let shadow_filter = self.get_drop_shadow_filter(); - let filter = compose_filters(blur_filter, shadow_filter.as_ref()); - paint.set_image_filter(filter); - paint.set_anti_alias(antialias); - paint - } - pub fn get_drop_shadow_filter(&self) -> Option { let mut filter = image_filters::drop_shadow_only( (self.offset.0, self.offset.1), diff --git a/render-wasm/src/shapes/shape_to_path.rs b/render-wasm/src/shapes/shape_to_path.rs index ef63eec9dc..3996f12e7c 100644 --- a/render-wasm/src/shapes/shape_to_path.rs +++ b/render-wasm/src/shapes/shape_to_path.rs @@ -75,7 +75,7 @@ fn make_corner( pub fn rect_segments(shape: &Shape, corners: Option) -> Vec { let sr = shape.selrect; - if let Some([r1, r2, r3, r4]) = corners { + let segments = if let Some([r1, r2, r3, r4]) = corners { let p1 = (sr.x(), sr.y() + r1.y); let p2 = (sr.x() + r1.x, sr.y()); let p3 = (sr.x() + sr.width() - r2.x, sr.y()); @@ -97,45 +97,55 @@ pub fn rect_segments(shape: &Shape, corners: Option) -> Vec { Segment::LineTo(p1), ] } else { + let p1 = (sr.x(), sr.y()); + let p2 = (sr.x() + sr.width(), sr.y()); + let p3 = (sr.x() + sr.width(), sr.y() + sr.height()); + let p4 = (sr.x(), sr.y() + sr.height()); vec![ - Segment::MoveTo((sr.x(), sr.y())), - Segment::LineTo((sr.x() + sr.width(), sr.y())), - Segment::LineTo((sr.x() + sr.width(), sr.y() + sr.height())), - Segment::LineTo((sr.x(), sr.y() + sr.height())), + Segment::MoveTo(p1), + Segment::LineTo(p2), + Segment::LineTo(p3), + Segment::LineTo(p4), Segment::Close, ] - } + }; + + transform_segments(segments, shape) +} + +fn transform_point(p: (f32, f32), matrix: &skia_safe::Matrix) -> (f32, f32) { + let pt = skia_safe::Point::new(p.0, p.1); + let tp = matrix.map_point(pt); + (tp.x, tp.y) } pub fn circle_segments(shape: &Shape) -> Vec { let sr = shape.selrect; - let mx = sr.x() + sr.width() / 2.0; - let my = sr.y() + sr.height() / 2.0; - let ex = sr.x() + sr.width(); - let ey = sr.y() + sr.height(); - let c = BEZIER_CIRCLE_C; let c1x = sr.x() + (sr.width() / 2.0 * (1.0 - c)); let c2x = sr.x() + (sr.width() / 2.0 * (1.0 + c)); let c1y = sr.y() + (sr.height() / 2.0 * (1.0 - c)); let c2y = sr.y() + (sr.height() / 2.0 * (1.0 + c)); - let p1x = mx; - let p1y = sr.y(); - let p2x = ex; - let p2y = my; - let p3x = mx; - let p3y = ey; - let p4x = sr.x(); - let p4y = my; + let mx = sr.x() + sr.width() / 2.0; + let my = sr.y() + sr.height() / 2.0; + let ex = sr.x() + sr.width(); + let ey = sr.y() + sr.height(); - vec![ - Segment::MoveTo((p1x, p1y)), - Segment::CurveTo(((c2x, p1y), (p2x, c1y), (p2x, p2y))), - Segment::CurveTo(((p2x, c2y), (c2x, p3y), (p3x, p3y))), - Segment::CurveTo(((c1x, p3y), (p4x, c2y), (p4x, p4y))), - Segment::CurveTo(((p4x, c1y), (c1x, p1y), (p1x, p1y))), - ] + let p1 = (mx, sr.y()); + let p2 = (ex, my); + let p3 = (mx, ey); + let p4 = (sr.x(), my); + + let segments = vec![ + Segment::MoveTo(p1), + Segment::CurveTo(((c2x, p1.1), (p2.0, c1y), p2)), + Segment::CurveTo(((p2.0, c2y), (c2x, p3.1), p3)), + Segment::CurveTo(((c1x, p3.1), (p4.0, c2y), p4)), + Segment::CurveTo(((p4.0, c1y), (c1x, p1.1), p1)), + ]; + + transform_segments(segments, shape) } fn join_paths(path: Path, other: Path) -> Path { @@ -144,6 +154,31 @@ fn join_paths(path: Path, other: Path) -> Path { Path::new(segments) } +fn transform_segments(segments: Vec, shape: &Shape) -> Vec { + let mut matrix = shape.transform; + let center = shape.center(); + matrix.post_translate(center); + matrix.pre_translate(-center); + + if !matrix.is_identity() { + segments + .into_iter() + .map(|seg| match seg { + Segment::MoveTo(p) => Segment::MoveTo(transform_point(p, &matrix)), + Segment::LineTo(p) => Segment::LineTo(transform_point(p, &matrix)), + Segment::CurveTo((h1, h2, p)) => Segment::CurveTo(( + transform_point(h1, &matrix), + transform_point(h2, &matrix), + transform_point(p, &matrix), + )), + Segment::Close => Segment::Close, + }) + .collect() + } else { + segments + } +} + impl ToPath for Shape { fn to_path( &self, @@ -174,7 +209,10 @@ impl ToPath for Shape { }; result = join_paths(result, shape.to_path(shapes, modifiers, structure)); } - result + // Force closure of the group path + let mut segments = result.segments().clone(); + segments.push(Segment::Close); + Path::new(segments) } Type::Bool(bool_data) => bool_data.path, @@ -187,13 +225,14 @@ impl ToPath for Shape { Type::SVGRaw(_) => Path::default(), - Type::Text(text) => { - let text_paths = TextPaths::new(text); + Type::Text(ref text) => { + let text_paths = TextPaths::new(text.clone()); let mut result = Path::default(); for (path, _) in text_paths.get_paths(true) { result = join_paths(result, Path::from_skia_path(path)); } - result + + Path::new(transform_segments(result.segments().clone(), &shape)) } } } diff --git a/render-wasm/src/shapes/strokes.rs b/render-wasm/src/shapes/strokes.rs index e080a782c3..108b03bcd3 100644 --- a/render-wasm/src/shapes/strokes.rs +++ b/render-wasm/src/shapes/strokes.rs @@ -4,7 +4,7 @@ use std::collections::HashMap; use super::Corners; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Clone, PartialEq, Copy)] pub enum StrokeStyle { Solid, Dotted, @@ -12,44 +12,17 @@ pub enum StrokeStyle { Mixed, } -impl From for StrokeStyle { - fn from(value: u8) -> Self { - match value { - 1 => StrokeStyle::Dotted, - 2 => StrokeStyle::Dashed, - 3 => StrokeStyle::Mixed, - _ => StrokeStyle::Solid, - } - } -} - #[derive(Debug, Clone, Copy, PartialEq)] pub enum StrokeCap { - None, - Line, - Triangle, - Rectangle, - Circle, - Diamond, + LineArrow, + TriangleArrow, + SquareMarker, + CircleMarker, + DiamondMarker, Round, Square, } -impl From for StrokeCap { - fn from(value: u8) -> Self { - match value { - 1 => StrokeCap::Line, - 2 => StrokeCap::Triangle, - 3 => StrokeCap::Rectangle, - 4 => StrokeCap::Circle, - 5 => StrokeCap::Diamond, - 6 => StrokeCap::Round, - 7 => StrokeCap::Square, - _ => StrokeCap::None, - } - } -} - #[derive(Debug, Clone, Copy, PartialEq)] pub enum StrokeKind { Inner, @@ -62,8 +35,8 @@ pub struct Stroke { pub fill: Fill, pub width: f32, pub style: StrokeStyle, - pub cap_end: StrokeCap, - pub cap_start: StrokeCap, + pub cap_end: Option, + pub cap_start: Option, pub kind: StrokeKind, } @@ -77,35 +50,50 @@ impl Stroke { } } - pub fn new_center_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) -> Self { + pub fn new_center_stroke( + width: f32, + style: StrokeStyle, + cap_start: Option, + cap_end: Option, + ) -> Self { Stroke { fill: Fill::Solid(SolidColor(skia::Color::TRANSPARENT)), width, - style: StrokeStyle::from(style), - cap_end: StrokeCap::from(cap_end), - cap_start: StrokeCap::from(cap_start), + style, + cap_end, + cap_start, kind: StrokeKind::Center, } } - pub fn new_inner_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) -> Self { + pub fn new_inner_stroke( + width: f32, + style: StrokeStyle, + cap_start: Option, + cap_end: Option, + ) -> Self { Stroke { fill: Fill::Solid(SolidColor(skia::Color::TRANSPARENT)), width, - style: StrokeStyle::from(style), - cap_end: StrokeCap::from(cap_end), - cap_start: StrokeCap::from(cap_start), + style, + cap_end, + cap_start, kind: StrokeKind::Inner, } } - pub fn new_outer_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) -> Self { + pub fn new_outer_stroke( + width: f32, + style: StrokeStyle, + cap_start: Option, + cap_end: Option, + ) -> Self { Stroke { fill: Fill::Solid(SolidColor(skia::Color::TRANSPARENT)), width, - style: StrokeStyle::from(style), - cap_end: StrokeCap::from(cap_end), - cap_start: StrokeCap::from(cap_start), + style, + cap_end, + cap_start, kind: StrokeKind::Outer, } } @@ -264,4 +252,11 @@ impl Stroke { paint } + + pub fn is_transparent(&self) -> bool { + match &self.fill { + Fill::Solid(SolidColor(color)) => color.a() == 0, + _ => false, + } + } } diff --git a/render-wasm/src/shapes/text.rs b/render-wasm/src/shapes/text.rs index 6cbfbd3052..e31bac1195 100644 --- a/render-wasm/src/shapes/text.rs +++ b/render-wasm/src/shapes/text.rs @@ -1,37 +1,138 @@ use crate::{ math::{Matrix, Rect}, - render::{default_font, filters::compose_filters, DEFAULT_EMOJI_FONT}, + render::{default_font, DEFAULT_EMOJI_FONT}, }; + +use core::f32; +use macros::ToJs; use skia_safe::{ self as skia, - paint::Paint, - textlayout::{ParagraphBuilder, ParagraphStyle}, - ImageFilter, MaskFilter, + paint::{self, Paint}, + textlayout::ParagraphBuilder, + textlayout::ParagraphStyle, + textlayout::PositionWithAffinity, }; use std::collections::HashSet; use super::FontFamily; -use crate::shapes::{self, merge_fills, set_paint_fill, Stroke, StrokeKind}; -use crate::utils::{get_fallback_fonts, get_font_collection, uuid_from_u32}; -use crate::wasm::fills::parse_fills_from_bytes; +use crate::math::Point; +use crate::shapes::{self, merge_fills}; +use crate::utils::{get_fallback_fonts, get_font_collection}; use crate::Uuid; -#[derive(Debug, PartialEq, Clone, Copy)] +// TODO: maybe move this to the wasm module? +pub type ParagraphBuilderGroup = Vec; + +#[repr(u8)] +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] pub enum GrowType { - Fixed, - AutoWidth, - AutoHeight, + Fixed = 0, + AutoWidth = 1, + AutoHeight = 2, } -impl GrowType { - pub fn from(grow_type: u8) -> Self { - match grow_type { - 0 => Self::Fixed, - 1 => Self::AutoWidth, - 2 => Self::AutoHeight, - _ => unreachable!(), +#[derive(Debug, PartialEq, Copy, Clone)] +pub struct TextContentSize { + pub width: f32, + pub height: f32, + pub max_width: f32, +} + +const DEFAULT_TEXT_CONTENT_SIZE: f32 = 0.01; + +impl TextContentSize { + pub fn default() -> Self { + Self { + width: DEFAULT_TEXT_CONTENT_SIZE, + height: DEFAULT_TEXT_CONTENT_SIZE, + max_width: DEFAULT_TEXT_CONTENT_SIZE, } } + + pub fn new(width: f32, height: f32, max_width: f32) -> Self { + Self { + width, + height, + max_width, + } + } + + pub fn new_with_size(width: f32, height: f32) -> Self { + Self { + width, + height, + max_width: DEFAULT_TEXT_CONTENT_SIZE, + } + } + + pub fn set_size(&mut self, width: f32, height: f32) { + self.width = width; + self.height = height; + } + + pub fn copy_finite_size(&mut self, size: TextContentSize) { + if f32::is_finite(size.width) { + self.width = size.width; + } + if f32::is_finite(size.max_width) { + self.max_width = size.max_width; + } else { + self.max_width = size.width; + } + if f32::is_finite(size.height) { + self.height = size.height; + } + } +} + +#[derive(Debug)] +pub struct TextContentLayoutResult( + Vec, + Vec>, + TextContentSize, +); + +#[derive(Debug)] +pub struct TextContentLayout { + pub paragraph_builders: Vec, + pub paragraphs: Vec>, +} + +impl Clone for TextContentLayout { + fn clone(&self) -> Self { + Self { + paragraph_builders: vec![], + paragraphs: vec![], + } + } +} + +impl PartialEq for TextContentLayout { + fn eq(&self, _other: &Self) -> bool { + true + } +} + +impl TextContentLayout { + pub fn new() -> Self { + Self { + paragraph_builders: vec![], + paragraphs: vec![], + } + } + + pub fn set( + &mut self, + paragraph_builders: Vec, + paragraphs: Vec>, + ) { + self.paragraph_builders = paragraph_builders; + self.paragraphs = paragraphs; + } + + pub fn needs_update(&self) -> bool { + self.paragraph_builders.is_empty() || self.paragraphs.is_empty() + } } #[derive(Debug, PartialEq, Clone)] @@ -39,30 +140,8 @@ pub struct TextContent { pub paragraphs: Vec, pub bounds: Rect, pub grow_type: GrowType, -} - -pub fn build_paragraphs_with_width( - paragraphs: &mut [Vec], - width: f32, -) -> Vec> { - paragraphs - .iter_mut() - .map(|builders| { - builders - .iter_mut() - .map(|builder| { - let mut paragraph = builder.build(); - // For auto-width, always layout with infinite width first to get intrinsic width - paragraph.layout(f32::MAX); - let intrinsic_width = paragraph.max_intrinsic_width().ceil(); - // Use the larger of the requested width or intrinsic width to prevent line breaks - let final_width = f32::max(width, intrinsic_width); - paragraph.layout(final_width); - paragraph - }) - .collect() - }) - .collect() + pub size: TextContentSize, + pub layout: TextContentLayout, } impl TextContent { @@ -71,6 +150,8 @@ impl TextContent { paragraphs: Vec::new(), bounds, grow_type, + size: TextContentSize::default(), + layout: TextContentLayout::new(), } } @@ -81,18 +162,19 @@ impl TextContent { paragraphs, bounds, grow_type, + size: TextContentSize::new_with_size(bounds.width(), bounds.height()), + layout: TextContentLayout::new(), } } + pub fn bounds(&self) -> Rect { + self.bounds + } + pub fn set_xywh(&mut self, x: f32, y: f32, w: f32, h: f32) { self.bounds = Rect::from_xywh(x, y, w, h); } - #[allow(dead_code)] - pub fn width(&self) -> f32 { - self.bounds.width() - } - #[allow(dead_code)] pub fn x(&self) -> f32 { self.bounds.x() @@ -107,91 +189,15 @@ impl TextContent { self.paragraphs.push(paragraph); } - pub fn to_paragraphs( - &self, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, - ) -> Vec> { - let fonts = get_font_collection(); - let fallback_fonts = get_fallback_fonts(); - let mut paragraph_group = Vec::new(); - - for paragraph in &self.paragraphs { - let paragraph_style = paragraph.paragraph_to_style(); - let mut builder = ParagraphBuilder::new(¶graph_style, fonts); - for leaf in ¶graph.children { - let text_style = leaf.to_style(&self.bounds, fallback_fonts, blur, blur_mask); - let text = leaf.apply_text_transform(); - builder.push_style(&text_style); - builder.add_text(&text); - } - paragraph_group.push(vec![builder]); - } - - paragraph_group + pub fn paragraphs(&self) -> &[Paragraph] { + &self.paragraphs } - pub fn to_stroke_paragraphs( - &self, - stroke: &Stroke, - bounds: &Rect, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, - count_inner_strokes: usize, - ) -> Vec> { - let fallback_fonts = get_fallback_fonts(); - let fonts = get_font_collection(); - let mut paragraph_group = Vec::new(); - - for paragraph in &self.paragraphs { - let mut stroke_paragraphs_map: std::collections::HashMap = - std::collections::HashMap::new(); - - for leaf in paragraph.children.iter() { - let mut text_paint = merge_fills(&leaf.fills, *bounds); - if let Some(blur_mask) = blur_mask { - text_paint.set_mask_filter(blur_mask.clone()); - } - let stroke_paints = get_text_stroke_paints( - stroke, - bounds, - &text_paint, - blur, - blur_mask, - count_inner_strokes, - ); - let text: String = leaf.apply_text_transform(); - - for (paint_idx, stroke_paint) in stroke_paints.iter().enumerate() { - let builder = stroke_paragraphs_map.entry(paint_idx).or_insert_with(|| { - let paragraph_style = paragraph.paragraph_to_style(); - ParagraphBuilder::new(¶graph_style, fonts) - }); - let stroke_paint = stroke_paint.clone(); - let stroke_style = - leaf.to_stroke_style(&stroke_paint, fallback_fonts, blur, blur_mask); - builder.push_style(&stroke_style); - builder.add_text(&text); - } - } - - let stroke_paragraphs: Vec = (0..stroke_paragraphs_map.len()) - .map(|i| stroke_paragraphs_map.remove(&i).unwrap()) - .collect(); - - paragraph_group.push(stroke_paragraphs); - } - - paragraph_group - } - - pub fn get_width(&self) -> f32 { + pub fn width(&self) -> f32 { if self.grow_type() == GrowType::AutoWidth { - let temp_paragraphs = self.to_paragraphs(None, None); - let mut temp_paragraphs = temp_paragraphs; - auto_width(&mut temp_paragraphs, f32::MAX).ceil() + self.size.width } else { - self.width() + self.bounds.width() } } @@ -204,10 +210,7 @@ impl TextContent { } pub fn visual_bounds(&self) -> (f32, f32) { - let paragraph_width = self.get_width(); - let mut paragraphs = self.to_paragraphs(None, None); - let paragraph_height = auto_height(&mut paragraphs, paragraph_width); - (paragraph_width, paragraph_height) + (self.size.width, self.size.height) } pub fn transform(&mut self, transform: &Matrix) { @@ -219,6 +222,149 @@ impl TextContent { let p2 = transform.map_point(skia::Point::new(right, bottom)); self.bounds = Rect::from_ltrb(p1.x, p1.y, p2.x, p2.y); } + + pub fn get_caret_position_at(&self, point: &Point) -> Option { + let mut offset_y = 0.0; + let paragraphs = self.layout.paragraphs.iter().flatten(); + + for paragraph in paragraphs { + let start_y = offset_y; + let end_y = offset_y + paragraph.height(); + if point.y > start_y && point.y < end_y { + let position_with_affinity = paragraph.get_glyph_position_at_coordinate(*point); + return Some(position_with_affinity); + } + offset_y += paragraph.height(); + } + None + } + + /// Builds the ParagraphBuilders necessary to render + /// this text. + pub fn paragraph_builder_group_from_text( + &self, + use_shadow: Option, + ) -> Vec { + let fonts = get_font_collection(); + let fallback_fonts = get_fallback_fonts(); + let mut paragraph_group = Vec::new(); + + for paragraph in self.paragraphs() { + let paragraph_style = paragraph.paragraph_to_style(); + let mut builder = ParagraphBuilder::new(¶graph_style, fonts); + for leaf in paragraph.children() { + let remove_alpha = use_shadow.unwrap_or(false) && !leaf.is_transparent(); + let text_style = leaf.to_style(&self.bounds(), fallback_fonts, remove_alpha); + let text = leaf.apply_text_transform(); + builder.push_style(&text_style); + builder.add_text(&text); + } + paragraph_group.push(vec![builder]); + } + + paragraph_group + } + + /// Performs a text auto layout without width limits. + /// This should be the same as text_auto_layout. + fn build_paragraphs_from_paragraph_builders( + &self, + paragraph_builders: &mut [ParagraphBuilderGroup], + width: f32, + ) -> Vec> { + let paragraphs = paragraph_builders + .iter_mut() + .map(|builders| { + builders + .iter_mut() + .map(|builder| { + let mut paragraph = builder.build(); + // For auto-width, always layout with infinite width first to get intrinsic width + paragraph.layout(width); + paragraph + }) + .collect() + }) + .collect(); + paragraphs + } + + /// Performs an Auto Width text layout. + fn text_layout_auto_width(&self) -> TextContentLayoutResult { + let mut paragraph_builders = self.paragraph_builder_group_from_text(None); + let paragraphs = + self.build_paragraphs_from_paragraph_builders(&mut paragraph_builders, f32::MAX); + let (width, height) = + paragraphs + .iter() + .flatten() + .fold((0.0, 0.0), |(auto_width, auto_height), paragraph| { + ( + f32::max(paragraph.max_intrinsic_width(), auto_width), + auto_height + paragraph.height(), + ) + }); + + let size = TextContentSize::new(width.ceil(), height.ceil(), width.ceil()); + TextContentLayoutResult(paragraph_builders, paragraphs, size) + } + + /// Private function that performs + /// Performs an Auto Height text layout. + fn text_layout_auto_height(&self) -> TextContentLayoutResult { + let width = self.width(); + let mut paragraph_builders = self.paragraph_builder_group_from_text(None); + let paragraphs = + self.build_paragraphs_from_paragraph_builders(&mut paragraph_builders, f32::INFINITY); + let height = paragraphs + .iter() + .flatten() + .fold(0.0, |auto_height, paragraph| { + auto_height + paragraph.height() + }); + + let size = TextContentSize::new_with_size(width.ceil(), height.ceil()); + TextContentLayoutResult(paragraph_builders, paragraphs, size) + } + + /// Performs a Fixed text layout. + fn text_layout_fixed(&self) -> TextContentLayoutResult { + let width = self.width(); + let mut paragraph_builders = self.paragraph_builder_group_from_text(None); + let paragraphs = + self.build_paragraphs_from_paragraph_builders(&mut paragraph_builders, width); + + let size = TextContentSize::new_with_size(width.ceil(), f32::INFINITY); + TextContentLayoutResult(paragraph_builders, paragraphs, size) + } + + pub fn needs_update_layout(&self) -> bool { + self.layout.needs_update() + } + + pub fn set_layout_from_result(&mut self, result: TextContentLayoutResult) { + self.layout.set(result.0, result.1); + self.size.copy_finite_size(result.2); + } + + pub fn update_layout(&mut self, selrect: Rect) -> TextContentSize { + self.size.set_size(selrect.width(), selrect.height()); + match self.grow_type() { + GrowType::AutoHeight => { + let result = self.text_layout_auto_height(); + self.set_layout_from_result(result); + } + GrowType::AutoWidth => { + let result = self.text_layout_auto_width(); + self.set_layout_from_result(result); + } + GrowType::Fixed => { + let result = self.text_layout_fixed(); + self.set_layout_from_result(result); + } + } + self.size + } } impl Default for TextContent { @@ -227,17 +373,31 @@ impl Default for TextContent { paragraphs: vec![], bounds: Rect::default(), grow_type: GrowType::Fixed, + size: TextContentSize::default(), + layout: TextContentLayout::new(), } } } +pub type TextAlign = skia::textlayout::TextAlign; +pub type TextDirection = skia::textlayout::TextDirection; +pub type TextDecoration = skia::textlayout::TextDecoration; + +#[derive(Debug, PartialEq, Clone, Copy)] +pub enum TextTransform { + Lowercase, + Uppercase, + Capitalize, +} + +// FIXME: Rethink this type. We'll probably need to move the serialization to the +// wasm module and store here meaningful model values (and/or skia type aliases) #[derive(Debug, PartialEq, Clone)] pub struct Paragraph { - num_leaves: u32, - text_align: u8, - text_direction: u8, - text_decoration: u8, - text_transform: u8, + text_align: TextAlign, + text_direction: TextDirection, + text_decoration: Option, + text_transform: Option, line_height: f32, letter_spacing: f32, typography_ref_file: Uuid, @@ -248,11 +408,10 @@ pub struct Paragraph { impl Default for Paragraph { fn default() -> Self { Self { - num_leaves: 0, - text_align: 0, - text_direction: 0, - text_decoration: 0, - text_transform: 0, + text_align: TextAlign::default(), + text_direction: TextDirection::LTR, + text_decoration: None, + text_transform: None, line_height: 1.0, letter_spacing: 0.0, typography_ref_file: Uuid::nil(), @@ -265,11 +424,10 @@ impl Default for Paragraph { impl Paragraph { #[allow(clippy::too_many_arguments)] pub fn new( - num_leaves: u32, - text_align: u8, - text_direction: u8, - text_decoration: u8, - text_transform: u8, + text_align: TextAlign, + text_direction: TextDirection, + text_decoration: Option, + text_transform: Option, line_height: f32, letter_spacing: f32, typography_ref_file: Uuid, @@ -277,7 +435,6 @@ impl Paragraph { children: Vec, ) -> Self { Self { - num_leaves, text_align, text_direction, text_decoration, @@ -295,8 +452,7 @@ impl Paragraph { self.children = children; } - #[allow(dead_code)] - pub fn get_children(&self) -> &Vec { + pub fn children(&self) -> &[TextLeaf] { &self.children } @@ -305,20 +461,11 @@ impl Paragraph { self.children.push(leaf); } + // FIXME: move serialization to wasm module pub fn paragraph_to_style(&self) -> ParagraphStyle { let mut style = ParagraphStyle::default(); - style.set_text_align(match self.text_align { - 0 => skia::textlayout::TextAlign::Left, - 1 => skia::textlayout::TextAlign::Center, - 2 => skia::textlayout::TextAlign::Right, - 3 => skia::textlayout::TextAlign::Justify, - _ => skia::textlayout::TextAlign::Left, - }); - style.set_text_direction(match self.text_direction { - 0 => skia::textlayout::TextDirection::LTR, - 1 => skia::textlayout::TextDirection::RTL, - _ => skia::textlayout::TextDirection::LTR, - }); + style.set_text_align(self.text_align); + style.set_text_direction(self.text_direction); if !self.children.is_empty() { let reference_child = self @@ -328,7 +475,7 @@ impl Paragraph { .unwrap_or(&self.children[0]); let mut strut_style = skia::textlayout::StrutStyle::default(); - let line_height = self.line_height.max(1.0); + let line_height = self.line_height.max(0.0); strut_style.set_font_size(reference_child.font_size); strut_style.set_height(line_height); strut_style.set_height_override(true); @@ -363,12 +510,11 @@ pub struct TextLeaf { font_family: FontFamily, font_size: f32, letter_spacing: f32, - font_style: u8, font_weight: i32, font_variant_id: Uuid, - text_decoration: u8, - text_transform: u8, - text_direction: u8, + text_decoration: Option, + text_transform: Option, + text_direction: TextDirection, fills: Vec, } @@ -379,10 +525,9 @@ impl TextLeaf { font_family: FontFamily, font_size: f32, letter_spacing: f32, - font_style: u8, - text_decoration: u8, - text_transform: u8, - text_direction: u8, + text_decoration: Option, + text_transform: Option, + text_direction: TextDirection, font_weight: i32, font_variant_id: Uuid, fills: Vec, @@ -392,7 +537,6 @@ impl TextLeaf { font_family, font_size, letter_spacing, - font_style, text_decoration, text_transform, text_direction, @@ -402,18 +546,29 @@ impl TextLeaf { } } + pub fn set_text(&mut self, text: String) { + self.text = text; + } + + pub fn fills(&self) -> &[shapes::Fill] { + &self.fills + } + pub fn to_style( &self, content_bounds: &Rect, fallback_fonts: &HashSet, - _blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, + remove_alpha: bool, ) -> skia::textlayout::TextStyle { let mut style = skia::textlayout::TextStyle::default(); - let mut paint = merge_fills(&self.fills, *content_bounds); - if let Some(blur_mask) = blur_mask { - paint.set_mask_filter(blur_mask.clone()); + let mut paint = paint::Paint::default(); + + if remove_alpha { + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); + } else { + paint = merge_fills(&self.fills, *content_bounds); } style.set_foreground_paint(&paint); @@ -422,11 +577,8 @@ impl TextLeaf { style.set_half_leading(false); style.set_decoration_type(match self.text_decoration { - 0 => skia::textlayout::TextDecoration::NO_DECORATION, - 1 => skia::textlayout::TextDecoration::UNDERLINE, - 2 => skia::textlayout::TextDecoration::LINE_THROUGH, - 3 => skia::textlayout::TextDecoration::OVERLINE, - _ => skia::textlayout::TextDecoration::NO_DECORATION, + Some(text_decoration) => text_decoration, + None => skia::textlayout::TextDecoration::NO_DECORATION, }); // Trick to avoid showing the text decoration @@ -448,19 +600,25 @@ impl TextLeaf { &self, stroke_paint: &Paint, fallback_fonts: &HashSet, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, + remove_alpha: bool, ) -> skia::textlayout::TextStyle { - let mut style = self.to_style(&Rect::default(), fallback_fonts, blur, blur_mask); - style.set_foreground_paint(stroke_paint); + let mut style = self.to_style(&Rect::default(), fallback_fonts, remove_alpha); + if remove_alpha { + let mut paint = skia::Paint::default(); + paint.set_style(stroke_paint.style()); + paint.set_stroke_width(stroke_paint.stroke_width()); + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); + style.set_foreground_paint(&paint); + } else { + style.set_foreground_paint(stroke_paint); + } + style.set_font_size(self.font_size); style.set_letter_spacing(self.letter_spacing); style.set_decoration_type(match self.text_decoration { - 0 => skia::textlayout::TextDecoration::NO_DECORATION, - 1 => skia::textlayout::TextDecoration::UNDERLINE, - 2 => skia::textlayout::TextDecoration::LINE_THROUGH, - 3 => skia::textlayout::TextDecoration::OVERLINE, - _ => skia::textlayout::TextDecoration::NO_DECORATION, + Some(text_decoration) => text_decoration, + None => skia::textlayout::TextDecoration::NO_DECORATION, }); style } @@ -471,9 +629,9 @@ impl TextLeaf { pub fn apply_text_transform(&self) -> String { match self.text_transform { - 1 => self.text.to_uppercase(), - 2 => self.text.to_lowercase(), - 3 => self + Some(TextTransform::Uppercase) => self.text.to_uppercase(), + Some(TextTransform::Lowercase) => self.text.to_lowercase(), + Some(TextTransform::Capitalize) => self .text .split_whitespace() .map(|word| { @@ -485,346 +643,18 @@ impl TextLeaf { }) .collect::>() .join(" "), - _ => self.text.clone(), + None => self.text.clone(), } } pub fn scale_content(&mut self, value: f32) { self.font_size *= value; } -} -const RAW_PARAGRAPH_DATA_SIZE: usize = std::mem::size_of::(); -const RAW_LEAF_DATA_SIZE: usize = std::mem::size_of::(); -pub const RAW_LEAF_FILLS_SIZE: usize = 160; - -#[repr(C)] -#[derive(Debug, Clone, Copy)] -pub struct RawTextLeaf { - font_style: u8, - text_decoration: u8, - text_transform: u8, - font_size: f32, - letter_spacing: f32, - font_weight: i32, - font_id: [u32; 4], - font_family: [u8; 4], - font_variant_id: [u32; 4], - text_length: u32, - total_fills: u32, -} - -impl From<[u8; RAW_LEAF_DATA_SIZE]> for RawTextLeaf { - fn from(bytes: [u8; RAW_LEAF_DATA_SIZE]) -> Self { - unsafe { std::mem::transmute(bytes) } - } -} - -impl TryFrom<&[u8]> for RawTextLeaf { - type Error = String; - fn try_from(bytes: &[u8]) -> Result { - let data: [u8; RAW_LEAF_DATA_SIZE] = bytes - .get(0..RAW_LEAF_DATA_SIZE) - .and_then(|slice| slice.try_into().ok()) - .ok_or("Invalid text leaf data".to_string())?; - Ok(RawTextLeaf::from(data)) - } -} - -#[allow(dead_code)] -#[repr(C)] -#[derive(Debug, Clone)] -pub struct RawTextLeafData { - font_style: u8, - text_decoration: u8, - text_transform: u8, - text_direction: u8, - font_size: f32, - letter_spacing: f32, - font_weight: i32, - font_id: [u32; 4], - font_family: [u8; 4], - font_variant_id: [u32; 4], - text_length: u32, - total_fills: u32, - fills: Vec, -} - -impl From<&[u8]> for RawTextLeafData { - fn from(bytes: &[u8]) -> Self { - let text_leaf: RawTextLeaf = RawTextLeaf::try_from(bytes).unwrap(); - let total_fills = text_leaf.total_fills as usize; - - // Use checked_mul to prevent overflow - let fills_size = total_fills - .checked_mul(RAW_LEAF_FILLS_SIZE) - .expect("Overflow occurred while calculating fills size"); - - let fills_start = RAW_LEAF_DATA_SIZE; - let fills_end = fills_start + fills_size; - let buffer = &bytes[fills_start..fills_end]; - let fills = parse_fills_from_bytes(buffer, total_fills); - - Self { - font_style: text_leaf.font_style, - text_decoration: text_leaf.text_decoration, - text_transform: text_leaf.text_transform, - text_direction: 0, // TODO: Añadirlo - font_size: text_leaf.font_size, - letter_spacing: text_leaf.letter_spacing, - font_weight: text_leaf.font_weight, - font_id: text_leaf.font_id, - font_family: text_leaf.font_family, - font_variant_id: text_leaf.font_variant_id, - text_length: text_leaf.text_length, - total_fills: text_leaf.total_fills, - fills, - } - } -} - -#[repr(C)] -#[repr(align(4))] -#[derive(Debug, Clone, Copy)] -pub struct RawParagraphData { - num_leaves: u32, - text_align: u8, - text_direction: u8, - text_decoration: u8, - text_transform: u8, - line_height: f32, - letter_spacing: f32, - typography_ref_file: [u32; 4], - typography_ref_id: [u32; 4], -} - -impl From<[u8; RAW_PARAGRAPH_DATA_SIZE]> for RawParagraphData { - fn from(bytes: [u8; RAW_PARAGRAPH_DATA_SIZE]) -> Self { - unsafe { std::mem::transmute(bytes) } - } -} - -impl TryFrom<&[u8]> for RawParagraphData { - type Error = String; - fn try_from(bytes: &[u8]) -> Result { - let data: [u8; RAW_PARAGRAPH_DATA_SIZE] = bytes - .get(0..RAW_PARAGRAPH_DATA_SIZE) - .and_then(|slice| slice.try_into().ok()) - .ok_or("Invalid paragraph data".to_string())?; - Ok(RawParagraphData::from(data)) - } -} - -impl RawTextData { - fn text_from_bytes(buffer: &[u8], offset: usize, text_length: u32) -> (String, usize) { - let text_length = text_length as usize; - let text_end = offset + text_length; - - if text_end > buffer.len() { - panic!( - "Invalid text range: offset={}, text_end={}, buffer_len={}", - offset, - text_end, - buffer.len() - ); - } - - let text_utf8 = buffer[offset..text_end].to_vec(); - if text_utf8.is_empty() { - return (String::new(), text_end); - } - - let text = String::from_utf8_lossy(&text_utf8).to_string(); - (text, text_end) - } -} - -pub struct RawTextData { - pub paragraph: Paragraph, -} - -impl From<&Vec> for RawTextData { - fn from(bytes: &Vec) -> Self { - let paragraph = RawParagraphData::try_from(&bytes[..RAW_PARAGRAPH_DATA_SIZE]).unwrap(); - let mut offset = RAW_PARAGRAPH_DATA_SIZE; - let mut raw_text_leaves: Vec = Vec::new(); - let mut text_leaves: Vec = Vec::new(); - - for _ in 0..paragraph.num_leaves { - let text_leaf = RawTextLeafData::from(&bytes[offset..]); - raw_text_leaves.push(text_leaf.clone()); - offset += RAW_LEAF_DATA_SIZE + (text_leaf.total_fills as usize * RAW_LEAF_FILLS_SIZE); - } - - for text_leaf in raw_text_leaves.iter() { - let (text, new_offset) = - RawTextData::text_from_bytes(bytes, offset, text_leaf.text_length); - offset = new_offset; - - let font_id = uuid_from_u32(text_leaf.font_id); - let font_variant_id = uuid_from_u32(text_leaf.font_variant_id); - - let font_family = FontFamily::new( - font_id, - text_leaf.font_weight as u32, - text_leaf.font_style.into(), - ); - - let new_text_leaf = TextLeaf::new( - text, - font_family, - text_leaf.font_size, - text_leaf.letter_spacing, - text_leaf.font_style, - text_leaf.text_decoration, - text_leaf.text_transform, - text_leaf.text_direction, - text_leaf.font_weight, - font_variant_id, - text_leaf.fills.clone(), - ); - text_leaves.push(new_text_leaf); - } - - let typography_ref_file = uuid_from_u32(paragraph.typography_ref_file); - let typography_ref_id = uuid_from_u32(paragraph.typography_ref_id); - - let paragraph = Paragraph::new( - paragraph.num_leaves, - paragraph.text_align, - paragraph.text_direction, - paragraph.text_decoration, - paragraph.text_transform, - paragraph.line_height, - paragraph.letter_spacing, - typography_ref_file, - typography_ref_id, - text_leaves.clone(), - ); - - Self { paragraph } - } -} - -pub fn get_built_paragraphs( - paragraphs: &mut [Vec], - width: f32, -) -> Vec> { - build_paragraphs_with_width(paragraphs, width) -} - -pub fn auto_width(paragraphs: &mut [Vec], width: f32) -> f32 { - let built_paragraphs = get_built_paragraphs(paragraphs, width); - - built_paragraphs - .iter() - .flatten() - .fold(0.0, |auto_width, p| { - f32::max(p.max_intrinsic_width(), auto_width) + pub fn is_transparent(&self) -> bool { + self.fills.iter().all(|fill| match fill { + shapes::Fill::Solid(shapes::SolidColor(color)) => color.a() == 0, + _ => false, }) -} - -pub fn auto_height(paragraphs: &mut [Vec], width: f32) -> f32 { - paragraphs.iter_mut().fold(0.0, |auto_height, p| { - p.iter_mut().fold(auto_height, |auto_height, paragraph| { - let mut paragraph = paragraph.build(); - paragraph.layout(width); - auto_height + paragraph.height() - }) - }) -} - -fn get_text_stroke_paints( - stroke: &Stroke, - bounds: &Rect, - text_paint: &Paint, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, - count_inner_strokes: usize, -) -> Vec { - let mut paints = Vec::new(); - - match stroke.kind { - StrokeKind::Inner => { - let shader = text_paint.shader(); - let mut is_opaque = true; - - if shader.is_some() { - is_opaque = shader.unwrap().is_opaque(); - } - - if is_opaque && count_inner_strokes == 1 { - let mut paint = text_paint.clone(); - paint.set_style(skia::PaintStyle::Fill); - paint.set_anti_alias(true); - if let Some(blur) = blur { - paint.set_image_filter(blur.clone()); - } - paints.push(paint); - let mut paint = skia::Paint::default(); - paint.set_style(skia::PaintStyle::Stroke); - paint.set_blend_mode(skia::BlendMode::SrcIn); - paint.set_anti_alias(true); - paint.set_stroke_width(stroke.width * 2.0); - set_paint_fill(&mut paint, &stroke.fill, bounds); - if let Some(blur) = blur { - paint.set_image_filter(blur.clone()); - } - paints.push(paint); - } else { - let mut paint = text_paint.clone(); - paint.set_style(skia::PaintStyle::Fill); - paint.set_anti_alias(false); - set_paint_fill(&mut paint, &stroke.fill, bounds); - paints.push(paint); - - let mut paint = skia::Paint::default(); - let image_filter = - skia_safe::image_filters::erode((stroke.width, stroke.width), None, None); - - let filter = compose_filters(blur, image_filter.as_ref()); - paint.set_image_filter(filter); - paint.set_anti_alias(false); - paint.set_blend_mode(skia::BlendMode::DstOut); - paints.push(paint); - } - } - StrokeKind::Center => { - let mut paint = skia::Paint::default(); - paint.set_style(skia::PaintStyle::Stroke); - paint.set_anti_alias(true); - paint.set_stroke_width(stroke.width); - - set_paint_fill(&mut paint, &stroke.fill, bounds); - if let Some(blur) = blur { - paint.set_image_filter(blur.clone()); - } - - paints.push(paint); - } - StrokeKind::Outer => { - let mut paint = skia::Paint::default(); - paint.set_style(skia::PaintStyle::Stroke); - paint.set_blend_mode(skia::BlendMode::DstOver); - paint.set_anti_alias(true); - paint.set_stroke_width(stroke.width * 2.0); - set_paint_fill(&mut paint, &stroke.fill, bounds); - if let Some(blur_mask) = blur_mask { - paint.set_mask_filter(blur_mask.clone()); - } - paints.push(paint); - - let mut paint = skia::Paint::default(); - paint.set_style(skia::PaintStyle::Fill); - paint.set_blend_mode(skia::BlendMode::Clear); - paint.set_color(skia::Color::TRANSPARENT); - paint.set_anti_alias(true); - if let Some(blur_mask) = blur_mask { - paint.set_mask_filter(blur_mask.clone()); - } - paints.push(paint); - } } - - paints } diff --git a/render-wasm/src/shapes/text_paths.rs b/render-wasm/src/shapes/text_paths.rs index 11c987055e..4bc1d1d628 100644 --- a/render-wasm/src/shapes/text_paths.rs +++ b/render-wasm/src/shapes/text_paths.rs @@ -12,17 +12,16 @@ pub struct TextPaths(TextContent); // It's an example of how to convert texts to paths #[allow(dead_code)] impl TextPaths { - pub fn new(content: TextContent) -> Self { - Self(content) + pub fn new(text_content: TextContent) -> Self { + Self(text_content) } pub fn get_paths(&self, antialias: bool) -> Vec<(skia::Path, skia::Paint)> { let mut paths = Vec::new(); - let mut offset_y = self.bounds.y(); - let mut paragraphs = self.to_paragraphs(None, None); + let mut paragraph_builders = self.0.paragraph_builder_group_from_text(None); - for paragraphs in paragraphs.iter_mut() { + for paragraphs in paragraph_builders.iter_mut() { for paragraph_builder in paragraphs.iter_mut() { // 1. Get paragraph and set the width layout let mut skia_paragraph = paragraph_builder.build(); diff --git a/render-wasm/src/state/shapes_pool.rs b/render-wasm/src/state/shapes_pool.rs index 125a80a141..e349594742 100644 --- a/render-wasm/src/state/shapes_pool.rs +++ b/render-wasm/src/state/shapes_pool.rs @@ -78,4 +78,13 @@ impl ShapesPool { let idx = *self.shapes_uuid_to_idx.get(id)?; Some(&self.shapes[idx]) } + + #[allow(dead_code)] + pub fn iter(&self) -> std::slice::Iter<'_, Shape> { + self.shapes.iter() + } + + pub fn iter_mut(&mut self) -> std::slice::IterMut<'_, Shape> { + self.shapes.iter_mut() + } } diff --git a/render-wasm/src/view.rs b/render-wasm/src/view.rs index a78c11f6a3..8f21a27eae 100644 --- a/render-wasm/src/view.rs +++ b/render-wasm/src/view.rs @@ -1,5 +1,7 @@ use skia_safe::Rect; +use crate::math::{Matrix, Point}; + #[derive(Debug, Copy, Clone)] pub(crate) struct Viewbox { pub pan_x: f32, @@ -53,7 +55,18 @@ impl Viewbox { .set_wh(self.width / self.zoom, self.height / self.zoom); } + pub fn pan(&self) -> Point { + Point::new(self.pan_x, self.pan_y) + } + pub fn zoom(&self) -> f32 { self.zoom } + + pub fn get_matrix(&self) -> Matrix { + let mut matrix = Matrix::new_identity(); + matrix.post_translate(self.pan()); + matrix.post_scale((self.zoom, self.zoom), None); + matrix + } } diff --git a/render-wasm/src/wasm.rs b/render-wasm/src/wasm.rs index b905da4687..8002e462c4 100644 --- a/render-wasm/src/wasm.rs +++ b/render-wasm/src/wasm.rs @@ -1,6 +1,10 @@ +pub mod blend; +pub mod blurs; pub mod fills; pub mod fonts; -pub mod layout; +pub mod layouts; pub mod paths; +pub mod shadows; +pub mod shapes; pub mod strokes; pub mod text; diff --git a/render-wasm/src/wasm/blend.rs b/render-wasm/src/wasm/blend.rs new file mode 100644 index 0000000000..d0dcbad118 --- /dev/null +++ b/render-wasm/src/wasm/blend.rs @@ -0,0 +1,65 @@ +use macros::ToJs; +use skia_safe as skia; + +use crate::shapes::BlendMode; +use crate::{with_current_shape_mut, STATE}; + +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawBlendMode { + Normal = 3, + Screen = 14, + Overlay = 15, + Darken = 16, + Lighten = 17, + ColorDodge = 18, + ColorBurn = 19, + HardLight = 20, + SoftLight = 21, + Difference = 22, + Exclusion = 23, + Multiply = 24, + Hue = 25, + Saturation = 26, + Color = 27, + Luminosity = 28, +} + +impl From for RawBlendMode { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for BlendMode { + fn from(value: RawBlendMode) -> Self { + match value { + RawBlendMode::Normal => BlendMode(skia::BlendMode::SrcOver), + RawBlendMode::Screen => BlendMode(skia::BlendMode::Screen), + RawBlendMode::Overlay => BlendMode(skia::BlendMode::Overlay), + RawBlendMode::Darken => BlendMode(skia::BlendMode::Darken), + RawBlendMode::Lighten => BlendMode(skia::BlendMode::Lighten), + RawBlendMode::ColorDodge => BlendMode(skia::BlendMode::ColorDodge), + RawBlendMode::ColorBurn => BlendMode(skia::BlendMode::ColorBurn), + RawBlendMode::HardLight => BlendMode(skia::BlendMode::HardLight), + RawBlendMode::SoftLight => BlendMode(skia::BlendMode::SoftLight), + RawBlendMode::Difference => BlendMode(skia::BlendMode::Difference), + RawBlendMode::Exclusion => BlendMode(skia::BlendMode::Exclusion), + RawBlendMode::Multiply => BlendMode(skia::BlendMode::Multiply), + RawBlendMode::Hue => BlendMode(skia::BlendMode::Hue), + RawBlendMode::Saturation => BlendMode(skia::BlendMode::Saturation), + RawBlendMode::Color => BlendMode(skia::BlendMode::Color), + RawBlendMode::Luminosity => BlendMode(skia::BlendMode::Luminosity), + } + } +} + +#[no_mangle] +pub extern "C" fn set_shape_blend_mode(mode: u8) { + let mode = RawBlendMode::from(mode); + + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_blend_mode(mode.into()); + }); +} diff --git a/render-wasm/src/wasm/blurs.rs b/render-wasm/src/wasm/blurs.rs new file mode 100644 index 0000000000..700ac053bc --- /dev/null +++ b/render-wasm/src/wasm/blurs.rs @@ -0,0 +1,40 @@ +use macros::ToJs; + +use crate::shapes::{Blur, BlurType}; +use crate::{with_current_shape_mut, STATE}; + +#[derive(Debug, Clone, Copy, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawBlurType { + LayerBlur = 0, // odd naming to comply with cljs value +} + +impl From for RawBlurType { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for BlurType { + fn from(value: RawBlurType) -> Self { + match value { + RawBlurType::LayerBlur => BlurType::LayerBlur, + } + } +} + +#[no_mangle] +pub extern "C" fn set_shape_blur(blur_type: u8, hidden: bool, value: f32) { + with_current_shape_mut!(state, |shape: &mut Shape| { + let blur_type = RawBlurType::from(blur_type); + shape.set_blur(Some(Blur::new(blur_type.into(), hidden, value))); + }); +} + +#[no_mangle] +pub extern "C" fn clear_shape_blur() { + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_blur(None); + }); +} diff --git a/render-wasm/src/wasm/fills.rs b/render-wasm/src/wasm/fills.rs index 29c0d573d6..24935e7491 100644 --- a/render-wasm/src/wasm/fills.rs +++ b/render-wasm/src/wasm/fills.rs @@ -1,16 +1,18 @@ -mod gradient; -mod image; -mod solid; +use macros::ToJs; use crate::mem; use crate::shapes; use crate::with_current_shape_mut; use crate::STATE; +mod gradient; +mod image; +mod solid; + const RAW_FILL_DATA_SIZE: usize = std::mem::size_of::(); #[repr(C, u8, align(4))] -#[derive(Debug, PartialEq, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] #[allow(dead_code)] pub enum RawFillData { Solid(solid::RawSolidData) = 0x00, @@ -51,6 +53,7 @@ impl TryFrom<&[u8]> for RawFillData { } } +// FIXME: return Result pub fn parse_fills_from_bytes(buffer: &[u8], num_fills: usize) -> Vec { buffer .chunks_exact(RAW_FILL_DATA_SIZE) diff --git a/render-wasm/src/wasm/fills/image.rs b/render-wasm/src/wasm/fills/image.rs index 15ab5e037f..b7075899ff 100644 --- a/render-wasm/src/wasm/fills/image.rs +++ b/render-wasm/src/wasm/fills/image.rs @@ -1,6 +1,12 @@ +use crate::mem; +use crate::mem::SerializableResult; +use crate::uuid::Uuid; +use crate::with_state_mut; +use crate::STATE; use crate::{shapes::ImageFill, utils::uuid_from_u32_quartet}; const FLAG_KEEP_ASPECT_RATIO: u8 = 1 << 0; +const IMAGE_IDS_SIZE: usize = 32; #[derive(Debug, Clone, Copy, PartialEq)] #[repr(C)] @@ -31,3 +37,50 @@ impl From for ImageFill { ) } } + +#[repr(C)] +#[derive(Clone, Debug)] +pub struct ShapeImageIds { + shape_id: Uuid, + image_id: Uuid, +} + +impl From<[u8; IMAGE_IDS_SIZE]> for ShapeImageIds { + fn from(bytes: [u8; IMAGE_IDS_SIZE]) -> Self { + let shape_id = Uuid::from_bytes(bytes[0..16].try_into().unwrap()); + let image_id = Uuid::from_bytes(bytes[16..32].try_into().unwrap()); + ShapeImageIds { shape_id, image_id } + } +} + +impl TryFrom> for ShapeImageIds { + type Error = &'static str; + + fn try_from(value: Vec) -> Result { + let mut arr = [0u8; IMAGE_IDS_SIZE]; + arr.copy_from_slice(&value); + Ok(ShapeImageIds::from(arr)) + } +} + +#[no_mangle] +pub extern "C" fn store_image() { + let bytes = mem::bytes(); + let ids = ShapeImageIds::try_from(bytes[0..IMAGE_IDS_SIZE].to_vec()).unwrap(); + let image_bytes = &bytes[IMAGE_IDS_SIZE..]; + + with_state_mut!(state, { + if let Err(msg) = state + .render_state_mut() + .add_image(ids.image_id, image_bytes) + { + eprintln!("{}", msg); + } + }); + + with_state_mut!(state, { + state.update_tile_for_shape(ids.shape_id); + }); + + mem::free_bytes(); +} diff --git a/render-wasm/src/wasm/fonts.rs b/render-wasm/src/wasm/fonts.rs index b4295e63d6..bdc85ac124 100644 --- a/render-wasm/src/wasm/fonts.rs +++ b/render-wasm/src/wasm/fonts.rs @@ -1,9 +1,33 @@ +use macros::ToJs; + use crate::mem; +use crate::shapes::{FontFamily, FontStyle}; use crate::utils::uuid_from_u32_quartet; use crate::with_state_mut; use crate::STATE; -use crate::shapes::FontFamily; +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawFontStyle { + Normal = 0, + Italic = 1, +} + +impl From for RawFontStyle { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for FontStyle { + fn from(value: RawFontStyle) -> Self { + match value { + RawFontStyle::Normal => FontStyle::Normal, + RawFontStyle::Italic => FontStyle::Italic, + } + } +} #[no_mangle] pub extern "C" fn store_font( @@ -23,8 +47,9 @@ pub extern "C" fn store_font( with_state_mut!(state, { let id = uuid_from_u32_quartet(a2, b2, c2, d2); let font_bytes = mem::bytes(); + let font_style = RawFontStyle::from(style); - let family = FontFamily::new(id, weight, style.into()); + let family = FontFamily::new(id, weight, font_style.into()); let _ = state .render_state_mut() @@ -52,7 +77,8 @@ pub extern "C" fn is_font_uploaded( ) -> bool { with_state_mut!(state, { let id = uuid_from_u32_quartet(a, b, c, d); - let family = FontFamily::new(id, weight, style.into()); + let font_style = RawFontStyle::from(style); + let family = FontFamily::new(id, weight, font_style.into()); let res = state.render_state().fonts().has_family(&family, is_emoji); res diff --git a/render-wasm/src/wasm/layout.rs b/render-wasm/src/wasm/layout.rs deleted file mode 100644 index 2eb7139433..0000000000 --- a/render-wasm/src/wasm/layout.rs +++ /dev/null @@ -1,249 +0,0 @@ -use crate::mem; -use crate::shapes::{self, ConstraintH, ConstraintV, VerticalAlign}; -use crate::{uuid_from_u32_quartet, with_current_shape_mut, with_state, with_state_mut, STATE}; - -#[no_mangle] -pub extern "C" fn set_shape_constraint_h(constraint: u8) { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_constraint_h(ConstraintH::from(constraint)); - }); -} - -#[no_mangle] -pub extern "C" fn set_shape_constraint_v(constraint: u8) { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_constraint_v(ConstraintV::from(constraint)); - }); -} - -#[no_mangle] -pub extern "C" fn clear_shape_constraints() { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.clear_constraints(); - }); -} - -#[no_mangle] -pub extern "C" fn set_shape_vertical_align(align: u8) { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_vertical_align(VerticalAlign::from(align)); - }); -} - -#[no_mangle] -pub extern "C" fn clear_shape_layout() { - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.clear_layout(); - }); -} - -#[no_mangle] -pub extern "C" fn set_flex_layout_data( - dir: u8, - row_gap: f32, - column_gap: f32, - align_items: u8, - align_content: u8, - justify_items: u8, - justify_content: u8, - wrap_type: u8, - padding_top: f32, - padding_right: f32, - padding_bottom: f32, - padding_left: f32, -) { - let dir = shapes::FlexDirection::from_u8(dir); - let align_items = shapes::AlignItems::from_u8(align_items); - let align_content = shapes::AlignContent::from_u8(align_content); - let justify_items = shapes::JustifyItems::from_u8(justify_items); - let justify_content = shapes::JustifyContent::from_u8(justify_content); - let wrap_type = shapes::WrapType::from_u8(wrap_type); - - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_flex_layout_data( - dir, - row_gap, - column_gap, - align_items, - align_content, - justify_items, - justify_content, - wrap_type, - padding_top, - padding_right, - padding_bottom, - padding_left, - ); - }); -} - -#[no_mangle] -pub extern "C" fn set_layout_child_data( - margin_top: f32, - margin_right: f32, - margin_bottom: f32, - margin_left: f32, - h_sizing: u8, - v_sizing: u8, - has_max_h: bool, - max_h: f32, - has_min_h: bool, - min_h: f32, - has_max_w: bool, - max_w: f32, - has_min_w: bool, - min_w: f32, - has_align_self: bool, - align_self: u8, - is_absolute: bool, - z_index: i32, -) { - let h_sizing = shapes::Sizing::from_u8(h_sizing); - let v_sizing = shapes::Sizing::from_u8(v_sizing); - let max_h = if has_max_h { Some(max_h) } else { None }; - let min_h = if has_min_h { Some(min_h) } else { None }; - let max_w = if has_max_w { Some(max_w) } else { None }; - let min_w = if has_min_w { Some(min_w) } else { None }; - let align_self = if has_align_self { - shapes::AlignSelf::from_u8(align_self) - } else { - None - }; - - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_flex_layout_child_data( - margin_top, - margin_right, - margin_bottom, - margin_left, - h_sizing, - v_sizing, - max_h, - min_h, - max_w, - min_w, - align_self, - is_absolute, - z_index, - ); - }); -} - -#[no_mangle] -pub extern "C" fn set_grid_layout_data( - dir: u8, - row_gap: f32, - column_gap: f32, - align_items: u8, - align_content: u8, - justify_items: u8, - justify_content: u8, - padding_top: f32, - padding_right: f32, - padding_bottom: f32, - padding_left: f32, -) { - let dir = shapes::GridDirection::from_u8(dir); - let align_items = shapes::AlignItems::from_u8(align_items); - let align_content = shapes::AlignContent::from_u8(align_content); - let justify_items = shapes::JustifyItems::from_u8(justify_items); - let justify_content = shapes::JustifyContent::from_u8(justify_content); - - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_grid_layout_data( - dir, - row_gap, - column_gap, - align_items, - align_content, - justify_items, - justify_content, - padding_top, - padding_right, - padding_bottom, - padding_left, - ); - }); -} - -#[no_mangle] -pub extern "C" fn set_grid_columns() { - let bytes = mem::bytes(); - - let entries: Vec<_> = bytes - .chunks(size_of::()) - .map(|data| shapes::RawGridTrack::from_bytes(data.try_into().unwrap())) - .collect(); - - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_grid_columns(entries); - }); - - mem::free_bytes(); -} - -#[no_mangle] -pub extern "C" fn set_grid_rows() { - let bytes = mem::bytes(); - - let entries: Vec<_> = bytes - .chunks(size_of::()) - .map(|data| shapes::RawGridTrack::from_bytes(data.try_into().unwrap())) - .collect(); - - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_grid_rows(entries); - }); - - mem::free_bytes(); -} - -#[no_mangle] -pub extern "C" fn set_grid_cells() { - let bytes = mem::bytes(); - - let entries: Vec<_> = bytes - .chunks(size_of::()) - .map(|data| shapes::RawGridCell::from_bytes(data.try_into().unwrap())) - .collect(); - - with_current_shape_mut!(state, |shape: &mut Shape| { - shape.set_grid_cells(entries); - }); - - mem::free_bytes(); -} - -#[no_mangle] -pub extern "C" fn show_grid(a: u32, b: u32, c: u32, d: u32) { - with_state_mut!(state, { - let id = uuid_from_u32_quartet(a, b, c, d); - state.render_state.show_grid = Some(id); - }); -} - -#[no_mangle] -pub extern "C" fn hide_grid() { - with_state_mut!(state, { - state.render_state.show_grid = None; - }); -} - -#[no_mangle] -pub extern "C" fn get_grid_coords(pos_x: f32, pos_y: f32) -> *mut u8 { - let row: i32; - let col: i32; - with_state!(state, { - if let Some((r, c)) = state.get_grid_coords(pos_x, pos_y) { - row = r; - col = c; - } else { - row = -1; - col = -1; - }; - }); - let mut bytes = vec![0; 8]; - bytes[0..4].clone_from_slice(&row.to_le_bytes()); - bytes[4..8].clone_from_slice(&col.to_le_bytes()); - mem::write_bytes(bytes) -} diff --git a/render-wasm/src/wasm/layouts.rs b/render-wasm/src/wasm/layouts.rs new file mode 100644 index 0000000000..a97812b519 --- /dev/null +++ b/render-wasm/src/wasm/layouts.rs @@ -0,0 +1,90 @@ +use crate::shapes::Sizing; +use crate::{with_current_shape_mut, STATE}; +use macros::ToJs; + +mod align; +mod constraints; +mod flex; +mod grid; + +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawSizing { + Fill = 0, + Fix = 1, + Auto = 2, +} + +impl From for RawSizing { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for Sizing { + fn from(value: RawSizing) -> Self { + match value { + RawSizing::Fill => Sizing::Fill, + RawSizing::Fix => Sizing::Fix, + RawSizing::Auto => Sizing::Auto, + } + } +} + +#[no_mangle] +pub extern "C" fn clear_shape_layout() { + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.clear_layout(); + }); +} + +#[no_mangle] +pub extern "C" fn set_layout_child_data( + margin_top: f32, + margin_right: f32, + margin_bottom: f32, + margin_left: f32, + h_sizing: u8, + v_sizing: u8, + has_max_h: bool, + max_h: f32, + has_min_h: bool, + min_h: f32, + has_max_w: bool, + max_w: f32, + has_min_w: bool, + min_w: f32, + align_self: u8, + is_absolute: bool, + z_index: i32, +) { + let h_sizing = RawSizing::from(h_sizing); + let v_sizing = RawSizing::from(v_sizing); + let max_h = if has_max_h { Some(max_h) } else { None }; + let min_h = if has_min_h { Some(min_h) } else { None }; + let max_w = if has_max_w { Some(max_w) } else { None }; + let min_w = if has_min_w { Some(min_w) } else { None }; + + let raw_align_self = align::RawAlignSelf::from(align_self); + + let align_self = raw_align_self.try_into().ok(); + + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_flex_layout_child_data( + margin_top, + margin_right, + margin_bottom, + margin_left, + h_sizing.into(), + v_sizing.into(), + max_h, + min_h, + max_w, + min_w, + align_self, + is_absolute, + z_index, + ); + }); +} diff --git a/render-wasm/src/wasm/layouts/align.rs b/render-wasm/src/wasm/layouts/align.rs new file mode 100644 index 0000000000..42810588d9 --- /dev/null +++ b/render-wasm/src/wasm/layouts/align.rs @@ -0,0 +1,223 @@ +use macros::ToJs; + +use crate::shapes::{ + AlignContent, AlignItems, AlignSelf, JustifyContent, JustifyItems, JustifySelf, VerticalAlign, +}; +use crate::{with_current_shape_mut, STATE}; + +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawAlignItems { + Start = 0, + End = 1, + Center = 2, + Stretch = 3, +} + +impl From for RawAlignItems { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for AlignItems { + fn from(value: RawAlignItems) -> Self { + match value { + RawAlignItems::Start => AlignItems::Start, + RawAlignItems::End => AlignItems::End, + RawAlignItems::Center => AlignItems::Center, + RawAlignItems::Stretch => AlignItems::Stretch, + } + } +} + +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawAlignContent { + Start = 0, + End = 1, + Center = 2, + SpaceBetween = 3, + SpaceAround = 4, + SpaceEvenly = 5, + Stretch = 6, +} + +impl From for RawAlignContent { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for AlignContent { + fn from(value: RawAlignContent) -> Self { + match value { + RawAlignContent::Start => AlignContent::Start, + RawAlignContent::End => AlignContent::End, + RawAlignContent::Center => AlignContent::Center, + RawAlignContent::SpaceBetween => AlignContent::SpaceBetween, + RawAlignContent::SpaceAround => AlignContent::SpaceAround, + RawAlignContent::SpaceEvenly => AlignContent::SpaceEvenly, + RawAlignContent::Stretch => AlignContent::Stretch, + } + } +} + +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawJustifyItems { + Start = 0, + End = 1, + Center = 2, + Stretch = 3, +} + +impl From for RawJustifyItems { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for JustifyItems { + fn from(value: RawJustifyItems) -> Self { + match value { + RawJustifyItems::Start => JustifyItems::Start, + RawJustifyItems::End => JustifyItems::End, + RawJustifyItems::Center => JustifyItems::Center, + RawJustifyItems::Stretch => JustifyItems::Stretch, + } + } +} + +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawJustifyContent { + Start = 0, + End = 1, + Center = 2, + SpaceBetween = 3, + SpaceAround = 4, + SpaceEvenly = 5, + Stretch = 6, +} + +impl From for RawJustifyContent { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for JustifyContent { + fn from(value: RawJustifyContent) -> Self { + match value { + RawJustifyContent::Start => JustifyContent::Start, + RawJustifyContent::End => JustifyContent::End, + RawJustifyContent::Center => JustifyContent::Center, + RawJustifyContent::SpaceBetween => JustifyContent::SpaceBetween, + RawJustifyContent::SpaceAround => JustifyContent::SpaceAround, + RawJustifyContent::SpaceEvenly => JustifyContent::SpaceEvenly, + RawJustifyContent::Stretch => JustifyContent::Stretch, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawJustifySelf { + None = 0, + Auto = 1, + Start = 2, + End = 3, + Center = 4, + Stretch = 5, +} + +impl From for RawJustifySelf { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl TryFrom for JustifySelf { + type Error = (); + fn try_from(value: RawJustifySelf) -> Result { + match value { + RawJustifySelf::None => Err(()), + RawJustifySelf::Auto => Ok(JustifySelf::Auto), + RawJustifySelf::Start => Ok(JustifySelf::Start), + RawJustifySelf::End => Ok(JustifySelf::End), + RawJustifySelf::Center => Ok(JustifySelf::Center), + RawJustifySelf::Stretch => Ok(JustifySelf::Stretch), + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawAlignSelf { + None = 0, + Auto = 1, + Start = 2, + End = 3, + Center = 4, + Stretch = 5, +} + +impl From for RawAlignSelf { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl TryFrom for AlignSelf { + type Error = (); + fn try_from(value: RawAlignSelf) -> Result { + match value { + RawAlignSelf::None => Err(()), + RawAlignSelf::Auto => Ok(AlignSelf::Auto), + RawAlignSelf::Start => Ok(AlignSelf::Start), + RawAlignSelf::End => Ok(AlignSelf::End), + RawAlignSelf::Center => Ok(AlignSelf::Center), + RawAlignSelf::Stretch => Ok(AlignSelf::Stretch), + } + } +} + +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawVerticalAlign { + Top = 0, + Center = 1, + Bottom = 2, +} + +impl From for RawVerticalAlign { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for VerticalAlign { + fn from(value: RawVerticalAlign) -> Self { + match value { + RawVerticalAlign::Top => VerticalAlign::Top, + RawVerticalAlign::Center => VerticalAlign::Center, + RawVerticalAlign::Bottom => VerticalAlign::Bottom, + } + } +} + +#[no_mangle] +pub extern "C" fn set_shape_vertical_align(align: u8) { + with_current_shape_mut!(state, |shape: &mut Shape| { + let align = RawVerticalAlign::from(align); + shape.set_vertical_align(align.into()); + }); +} diff --git a/render-wasm/src/wasm/layouts/constraints.rs b/render-wasm/src/wasm/layouts/constraints.rs new file mode 100644 index 0000000000..057e739241 --- /dev/null +++ b/render-wasm/src/wasm/layouts/constraints.rs @@ -0,0 +1,85 @@ +use macros::ToJs; + +use crate::shapes::{ConstraintH, ConstraintV}; +use crate::{with_current_shape_mut, STATE}; + +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawConstraintH { + Left = 0, + Right = 1, + Leftright = 2, // odd casing to comply with cljs value + Center = 3, + Scale = 4, +} + +impl From for RawConstraintH { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for ConstraintH { + fn from(value: RawConstraintH) -> Self { + match value { + RawConstraintH::Left => ConstraintH::Left, + RawConstraintH::Right => ConstraintH::Right, + RawConstraintH::Leftright => ConstraintH::LeftRight, + RawConstraintH::Center => ConstraintH::Center, + RawConstraintH::Scale => ConstraintH::Scale, + } + } +} + +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawConstraintV { + Top = 0, + Bottom = 1, + Topbottom = 2, // odd casing to comply with cljs value + Center = 3, + Scale = 4, +} + +impl From for RawConstraintV { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for ConstraintV { + fn from(value: RawConstraintV) -> Self { + match value { + RawConstraintV::Top => ConstraintV::Top, + RawConstraintV::Bottom => ConstraintV::Bottom, + RawConstraintV::Topbottom => ConstraintV::TopBottom, + RawConstraintV::Center => ConstraintV::Center, + RawConstraintV::Scale => ConstraintV::Scale, + } + } +} + +#[no_mangle] +pub extern "C" fn set_shape_constraint_h(constraint: u8) { + with_current_shape_mut!(state, |shape: &mut Shape| { + let constraint = RawConstraintH::from(constraint); + shape.set_constraint_h(Some(constraint.into())); + }); +} + +#[no_mangle] +pub extern "C" fn set_shape_constraint_v(constraint: u8) { + with_current_shape_mut!(state, |shape: &mut Shape| { + let constraint = RawConstraintV::from(constraint); + shape.set_constraint_v(Some(constraint.into())); + }); +} + +#[no_mangle] +pub extern "C" fn clear_shape_constraints() { + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.clear_constraints(); + }); +} diff --git a/render-wasm/src/wasm/layouts/flex.rs b/render-wasm/src/wasm/layouts/flex.rs new file mode 100644 index 0000000000..10d1f991e8 --- /dev/null +++ b/render-wasm/src/wasm/layouts/flex.rs @@ -0,0 +1,95 @@ +use crate::shapes::{FlexDirection, WrapType}; +use crate::{with_current_shape_mut, STATE}; +use macros::ToJs; + +use super::align; + +#[derive(Debug, Clone, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawFlexDirection { + Row = 0, + RowReverse = 1, + Column = 2, + ColumnReverse = 3, +} + +impl From for RawFlexDirection { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for FlexDirection { + fn from(value: RawFlexDirection) -> Self { + match value { + RawFlexDirection::Row => FlexDirection::Row, + RawFlexDirection::RowReverse => FlexDirection::RowReverse, + RawFlexDirection::Column => FlexDirection::Column, + RawFlexDirection::ColumnReverse => FlexDirection::ColumnReverse, + } + } +} + +#[derive(Debug, Clone, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawWrapType { + Wrap = 0, + Nowrap = 1, // odd casing to comply with cljs value +} + +impl From for RawWrapType { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for WrapType { + fn from(value: RawWrapType) -> Self { + match value { + RawWrapType::Wrap => WrapType::Wrap, + RawWrapType::Nowrap => WrapType::NoWrap, + } + } +} + +#[no_mangle] +pub extern "C" fn set_flex_layout_data( + dir: u8, + row_gap: f32, + column_gap: f32, + align_items: u8, + align_content: u8, + justify_items: u8, + justify_content: u8, + wrap_type: u8, + padding_top: f32, + padding_right: f32, + padding_bottom: f32, + padding_left: f32, +) { + let dir = RawFlexDirection::from(dir); + let align_items = align::RawAlignItems::from(align_items); + let align_content = align::RawAlignContent::from(align_content); + let justify_items = align::RawJustifyItems::from(justify_items); + let justify_content = align::RawJustifyContent::from(justify_content); + let wrap_type = RawWrapType::from(wrap_type); + + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_flex_layout_data( + dir.into(), + row_gap, + column_gap, + align_items.into(), + align_content.into(), + justify_items.into(), + justify_content.into(), + wrap_type.into(), + padding_top, + padding_right, + padding_bottom, + padding_left, + ); + }); +} diff --git a/render-wasm/src/wasm/layouts/grid.rs b/render-wasm/src/wasm/layouts/grid.rs new file mode 100644 index 0000000000..096468e514 --- /dev/null +++ b/render-wasm/src/wasm/layouts/grid.rs @@ -0,0 +1,253 @@ +use macros::ToJs; + +use crate::mem; +use crate::shapes::{GridCell, GridDirection, GridTrack, GridTrackType}; +use crate::uuid::Uuid; +use crate::{uuid_from_u32_quartet, with_current_shape_mut, with_state, with_state_mut, STATE}; + +use super::align; + +#[derive(Debug)] +#[repr(C, align(1))] +struct RawGridCell { + row: i32, + row_span: i32, + column: i32, + column_span: i32, + align_self: u8, + justify_self: u8, + _padding: u16, + shape_id_a: u32, + shape_id_b: u32, + shape_id_c: u32, + shape_id_d: u32, +} + +impl From<[u8; size_of::()]> for RawGridCell { + fn from(bytes: [u8; size_of::()]) -> Self { + unsafe { std::mem::transmute(bytes) } + } +} + +impl From for GridCell { + fn from(raw: RawGridCell) -> Self { + let raw_justify_self = super::align::RawJustifySelf::from(raw.justify_self); + let raw_align_self = super::align::RawAlignSelf::from(raw.align_self); + let shape_id = uuid_from_u32_quartet( + raw.shape_id_a, + raw.shape_id_b, + raw.shape_id_c, + raw.shape_id_d, + ); + + Self { + row: raw.row, + row_span: raw.row_span, + column: raw.column, + column_span: raw.column_span, + align_self: raw_align_self.try_into().ok(), + justify_self: raw_justify_self.try_into().ok(), + shape: if shape_id != Uuid::nil() { + Some(shape_id) + } else { + None + }, + } + } +} + +#[derive(Debug, Clone, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawGridDirection { + Row = 0, + Column = 1, +} + +impl From for RawGridDirection { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for GridDirection { + fn from(value: RawGridDirection) -> Self { + match value { + RawGridDirection::Row => Self::Row, + RawGridDirection::Column => Self::Column, + } + } +} + +#[derive(Debug, Copy, Clone, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawGridTrackType { + Percent = 0, + Flex = 1, + Auto = 2, + Fixed = 3, +} + +impl From for RawGridTrackType { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for GridTrackType { + fn from(value: RawGridTrackType) -> Self { + match value { + RawGridTrackType::Percent => Self::Percent, + RawGridTrackType::Flex => Self::Flex, + RawGridTrackType::Auto => Self::Auto, + RawGridTrackType::Fixed => Self::Fixed, + } + } +} + +#[derive(Debug)] +#[repr(C, align(4))] +#[allow(dead_code)] +pub struct RawGridTrack { + track_type: RawGridTrackType, + _padding: [u8; 3], + value: f32, +} + +impl From<[u8; size_of::()]> for RawGridTrack { + fn from(bytes: [u8; size_of::()]) -> Self { + unsafe { std::mem::transmute(bytes) } + } +} + +impl From for GridTrack { + fn from(raw: RawGridTrack) -> Self { + Self { + track_type: raw.track_type.into(), + value: raw.value, + } + } +} + +#[no_mangle] +pub extern "C" fn set_grid_layout_data( + dir: u8, + row_gap: f32, + column_gap: f32, + align_items: u8, + align_content: u8, + justify_items: u8, + justify_content: u8, + padding_top: f32, + padding_right: f32, + padding_bottom: f32, + padding_left: f32, +) { + let dir = RawGridDirection::from(dir); + let align_items = align::RawAlignItems::from(align_items); + let align_content = align::RawAlignContent::from(align_content); + let justify_items = align::RawJustifyItems::from(justify_items); + let justify_content = align::RawJustifyContent::from(justify_content); + + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_grid_layout_data( + dir.into(), + row_gap, + column_gap, + align_items.into(), + align_content.into(), + justify_items.into(), + justify_content.into(), + padding_top, + padding_right, + padding_bottom, + padding_left, + ); + }); +} + +#[no_mangle] +pub extern "C" fn set_grid_columns() { + let bytes = mem::bytes(); + + let entries: Vec = bytes + .chunks(size_of::()) + .map(|data| data.try_into().unwrap()) + .map(|data: [u8; size_of::()]| RawGridTrack::from(data).into()) + .collect(); + + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_grid_columns(entries); + }); + + mem::free_bytes(); +} + +#[no_mangle] +pub extern "C" fn set_grid_rows() { + let bytes = mem::bytes(); + + let entries: Vec = bytes + .chunks(size_of::()) + .map(|data| data.try_into().unwrap()) + .map(|data: [u8; size_of::()]| RawGridTrack::from(data).into()) + .collect(); + + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_grid_rows(entries); + }); + + mem::free_bytes(); +} + +#[no_mangle] +pub extern "C" fn set_grid_cells() { + let bytes = mem::bytes(); + + let cells: Vec = bytes + .chunks(size_of::()) + .map(|data| data.try_into().expect("Invalid grid cell data")) + .map(|data: [u8; size_of::()]| RawGridCell::from(data)) + .collect(); + + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_grid_cells(cells.into_iter().map(|raw| raw.into()).collect()); + }); + + mem::free_bytes(); +} + +#[no_mangle] +pub extern "C" fn show_grid(a: u32, b: u32, c: u32, d: u32) { + with_state_mut!(state, { + let id = uuid_from_u32_quartet(a, b, c, d); + state.render_state.show_grid = Some(id); + }); +} + +#[no_mangle] +pub extern "C" fn hide_grid() { + with_state_mut!(state, { + state.render_state.show_grid = None; + }); +} + +#[no_mangle] +pub extern "C" fn get_grid_coords(pos_x: f32, pos_y: f32) -> *mut u8 { + let row: i32; + let col: i32; + with_state!(state, { + if let Some((r, c)) = state.get_grid_coords(pos_x, pos_y) { + row = r; + col = c; + } else { + row = -1; + col = -1; + }; + }); + let mut bytes = vec![0; 8]; + bytes[0..4].clone_from_slice(&row.to_le_bytes()); + bytes[4..8].clone_from_slice(&col.to_le_bytes()); + mem::write_bytes(bytes) +} diff --git a/render-wasm/src/wasm/paths.rs b/render-wasm/src/wasm/paths.rs index a211eaaff5..5fb9bc7c28 100644 --- a/render-wasm/src/wasm/paths.rs +++ b/render-wasm/src/wasm/paths.rs @@ -1,17 +1,18 @@ #![allow(unused_mut, unused_variables)] -use indexmap::IndexSet; +use macros::ToJs; use mem::SerializableResult; -use uuid::Uuid; +use std::mem::size_of; +use std::sync::{Mutex, OnceLock}; -use crate::math::bools; -use crate::shapes::{BoolType, Path, Segment, ToPath}; -use crate::uuid; -use crate::{mem, with_current_shape, with_current_shape_mut, with_state, STATE}; +use crate::shapes::{Path, Segment, ToPath}; +use crate::{mem, with_current_shape, with_current_shape_mut, STATE}; const RAW_SEGMENT_DATA_SIZE: usize = size_of::(); +pub mod bools; + #[repr(C, u16, align(4))] -#[derive(Debug, PartialEq, Clone, Copy)] +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] #[allow(dead_code)] enum RawSegmentData { MoveTo(RawMoveCommand) = 0x01, @@ -151,17 +152,59 @@ impl From> for Path { } } +static PATH_UPLOAD_BUFFER: OnceLock>> = OnceLock::new(); + +fn get_path_upload_buffer() -> &'static Mutex> { + PATH_UPLOAD_BUFFER.get_or_init(|| Mutex::new(Vec::new())) +} + +#[no_mangle] +pub extern "C" fn start_shape_path_buffer() { + let buffer = get_path_upload_buffer(); + let mut buffer = buffer.lock().unwrap(); + buffer.clear(); +} + +#[no_mangle] +pub extern "C" fn set_shape_path_chunk_buffer() { + let bytes = mem::bytes(); + let buffer = get_path_upload_buffer(); + let mut buffer = buffer.lock().unwrap(); + buffer.extend_from_slice(&bytes); + mem::free_bytes(); +} + +#[no_mangle] +pub extern "C" fn set_shape_path_buffer() { + with_current_shape_mut!(state, |shape: &mut Shape| { + let buffer = get_path_upload_buffer(); + let mut buffer = buffer.lock().unwrap(); + let chunk_size = size_of::(); + if !buffer.len().is_multiple_of(chunk_size) { + // FIXME + println!("Warning: buffer length is not a multiple of chunk size!"); + } + let mut segments = Vec::new(); + for (i, chunk) in buffer.chunks(chunk_size).enumerate() { + match RawSegmentData::try_from(chunk) { + Ok(seg) => segments.push(Segment::from(seg)), + Err(e) => println!("Error at segment {}: {}", i, e), + } + } + shape.set_path_segments(segments); + buffer.clear(); + }); +} + #[no_mangle] pub extern "C" fn set_shape_path_content() { with_current_shape_mut!(state, |shape: &mut Shape| { let bytes = mem::bytes(); - let segments = bytes .chunks(size_of::()) .map(|chunk| RawSegmentData::try_from(chunk).expect("Invalid path data")) .map(Segment::from) .collect(); - shape.set_path_segments(segments); }); } @@ -182,37 +225,6 @@ pub extern "C" fn current_to_path() -> *mut u8 { mem::write_vec(result) } -#[no_mangle] -pub extern "C" fn calculate_bool(raw_bool_type: u8) -> *mut u8 { - let bytes = mem::bytes_or_empty(); - - let entries: IndexSet = bytes - .chunks(size_of::<::BytesType>()) - .map(|data| Uuid::from_bytes(data.try_into().unwrap())) - .collect(); - - mem::free_bytes(); - - let bool_type = BoolType::from(raw_bool_type); - let result; - with_state!(state, { - let path = bools::bool_from_shapes( - bool_type, - &entries, - &state.shapes, - &state.modifiers, - &state.structure, - ); - result = path - .segments() - .iter() - .copied() - .map(RawSegmentData::from_segment) - .collect(); - }); - mem::write_vec(result) -} - // Extracts a string from the bytes slice until the next null byte (0) and returns the result as a `String`. // Updates the `start` index to the end of the extracted string. fn extract_string(start: &mut usize, bytes: &[u8]) -> String { diff --git a/render-wasm/src/wasm/paths/bools.rs b/render-wasm/src/wasm/paths/bools.rs new file mode 100644 index 0000000000..cc72543d63 --- /dev/null +++ b/render-wasm/src/wasm/paths/bools.rs @@ -0,0 +1,75 @@ +use macros::ToJs; + +use indexmap::IndexSet; + +use super::RawSegmentData; +use crate::math; +use crate::shapes::BoolType; +use crate::uuid::Uuid; +use crate::{mem, SerializableResult}; +use crate::{with_current_shape_mut, with_state, STATE}; + +#[derive(Debug, Clone, Copy, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawBoolType { + Union = 0, + Difference = 1, + Intersection = 2, + Exclusion = 3, +} + +impl From for RawBoolType { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for BoolType { + fn from(value: RawBoolType) -> Self { + match value { + RawBoolType::Union => BoolType::Union, + RawBoolType::Difference => BoolType::Difference, + RawBoolType::Intersection => BoolType::Intersection, + RawBoolType::Exclusion => BoolType::Exclusion, + } + } +} + +#[no_mangle] +pub extern "C" fn set_shape_bool_type(raw_bool_type: u8) { + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.set_bool_type(RawBoolType::from(raw_bool_type).into()); + }); +} + +#[no_mangle] +pub extern "C" fn calculate_bool(raw_bool_type: u8) -> *mut u8 { + let bytes = mem::bytes_or_empty(); + + let entries: IndexSet = bytes + .chunks(size_of::<::BytesType>()) + .map(|data| Uuid::from_bytes(data.try_into().unwrap())) + .collect(); + + mem::free_bytes(); + + let bool_type = RawBoolType::from(raw_bool_type).into(); + let result; + with_state!(state, { + let path = math::bools::bool_from_shapes( + bool_type, + &entries, + &state.shapes, + &state.modifiers, + &state.structure, + ); + result = path + .segments() + .iter() + .copied() + .map(RawSegmentData::from_segment) + .collect(); + }); + mem::write_vec(result) +} diff --git a/render-wasm/src/wasm/shadows.rs b/render-wasm/src/wasm/shadows.rs new file mode 100644 index 0000000000..c7a95aacfe --- /dev/null +++ b/render-wasm/src/wasm/shadows.rs @@ -0,0 +1,54 @@ +use macros::ToJs; +use skia_safe as skia; + +use crate::shapes::{Shadow, ShadowStyle}; +use crate::{with_current_shape_mut, STATE}; + +#[derive(Debug, Clone, Copy, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawShadowStyle { + // NOTE: Odd naming to comply with cljs value + DropShadow = 0, + InnerShadow = 1, +} + +impl From for RawShadowStyle { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for ShadowStyle { + fn from(value: RawShadowStyle) -> Self { + match value { + RawShadowStyle::DropShadow => Self::Drop, + RawShadowStyle::InnerShadow => Self::Inner, + } + } +} + +#[no_mangle] +pub extern "C" fn add_shape_shadow( + raw_color: u32, + blur: f32, + spread: f32, + x: f32, + y: f32, + raw_style: u8, + hidden: bool, +) { + with_current_shape_mut!(state, |shape: &mut Shape| { + let color = skia::Color::new(raw_color); + let style = RawShadowStyle::from(raw_style).into(); + let shadow = Shadow::new(color, blur, spread, (x, y), style, hidden); + shape.add_shadow(shadow); + }); +} + +#[no_mangle] +pub extern "C" fn clear_shape_shadows() { + with_current_shape_mut!(state, |shape: &mut Shape| { + shape.clear_shadows(); + }); +} diff --git a/render-wasm/src/wasm/shapes.rs b/render-wasm/src/wasm/shapes.rs new file mode 100644 index 0000000000..c2ff3b4931 --- /dev/null +++ b/render-wasm/src/wasm/shapes.rs @@ -0,0 +1,47 @@ +use macros::ToJs; + +use crate::shapes::{Bool, Frame, Group, Path, Rect, SVGRaw, TextContent, Type}; +use crate::{with_current_shape_mut, STATE}; + +#[derive(Debug, Clone, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawShapeType { + Frame = 0, + Group = 1, + Bool = 2, + Rect = 3, + Path = 4, + Text = 5, + Circle = 6, + SVGRaw = 7, +} + +impl From for RawShapeType { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for Type { + fn from(value: RawShapeType) -> Self { + match value { + RawShapeType::Frame => Type::Frame(Frame::default()), + RawShapeType::Group => Type::Group(Group::default()), + RawShapeType::Bool => Type::Bool(Bool::default()), + RawShapeType::Rect => Type::Rect(Rect::default()), + RawShapeType::Path => Type::Path(Path::default()), + RawShapeType::Text => Type::Text(TextContent::default()), + RawShapeType::Circle => Type::Circle, + RawShapeType::SVGRaw => Type::SVGRaw(SVGRaw::default()), + } + } +} + +#[no_mangle] +pub extern "C" fn set_shape_type(shape_type: u8) { + with_current_shape_mut!(state, |shape: &mut Shape| { + let shape_type = RawShapeType::from(shape_type); + shape.set_shape_type(shape_type.into()); + }); +} diff --git a/render-wasm/src/wasm/strokes.rs b/render-wasm/src/wasm/strokes.rs index 4e64fedad6..21a7e321ff 100644 --- a/render-wasm/src/wasm/strokes.rs +++ b/render-wasm/src/wasm/strokes.rs @@ -1,31 +1,118 @@ +use macros::ToJs; + use crate::mem; -use crate::shapes; +use crate::shapes::{self, StrokeCap, StrokeStyle}; use crate::with_current_shape_mut; use crate::STATE; +#[derive(Debug, Clone, PartialEq, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawStrokeStyle { + Solid = 0, + Dotted = 1, + Dashed = 2, + Mixed = 3, +} + +impl From for RawStrokeStyle { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for StrokeStyle { + fn from(value: RawStrokeStyle) -> Self { + match value { + RawStrokeStyle::Solid => StrokeStyle::Solid, + RawStrokeStyle::Dotted => StrokeStyle::Dotted, + RawStrokeStyle::Dashed => StrokeStyle::Dashed, + RawStrokeStyle::Mixed => StrokeStyle::Mixed, + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawStrokeCap { + None = 0, + LineArrow = 1, + TriangleArrow = 2, + SquareMarker = 3, + CircleMarker = 4, + DiamondMarker = 5, + Round = 6, + Square = 7, +} + +impl From for RawStrokeCap { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl TryFrom for StrokeCap { + type Error = (); + + fn try_from(value: RawStrokeCap) -> Result { + match value { + RawStrokeCap::None => Err(()), + RawStrokeCap::LineArrow => Ok(StrokeCap::LineArrow), + RawStrokeCap::TriangleArrow => Ok(StrokeCap::TriangleArrow), + RawStrokeCap::SquareMarker => Ok(StrokeCap::SquareMarker), + RawStrokeCap::CircleMarker => Ok(StrokeCap::CircleMarker), + RawStrokeCap::DiamondMarker => Ok(StrokeCap::DiamondMarker), + RawStrokeCap::Round => Ok(StrokeCap::Round), + RawStrokeCap::Square => Ok(StrokeCap::Square), + } + } +} + #[no_mangle] pub extern "C" fn add_shape_center_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) { + let stroke_style = RawStrokeStyle::from(style); + let cap_start = RawStrokeCap::from(cap_start); + let cap_end = RawStrokeCap::from(cap_end); + with_current_shape_mut!(state, |shape: &mut Shape| { shape.add_stroke(shapes::Stroke::new_center_stroke( - width, style, cap_start, cap_end, + width, + stroke_style.into(), + cap_start.try_into().ok(), + cap_end.try_into().ok(), )); }); } #[no_mangle] pub extern "C" fn add_shape_inner_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) { + let stroke_style = RawStrokeStyle::from(style); + let cap_start = RawStrokeCap::from(cap_start); + let cap_end = RawStrokeCap::from(cap_end); + with_current_shape_mut!(state, |shape: &mut Shape| { shape.add_stroke(shapes::Stroke::new_inner_stroke( - width, style, cap_start, cap_end, + width, + stroke_style.into(), + cap_start.try_into().ok(), + cap_end.try_into().ok(), )); }); } #[no_mangle] pub extern "C" fn add_shape_outer_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) { + let stroke_style = RawStrokeStyle::from(style); + let cap_start = RawStrokeCap::from(cap_start); + let cap_end = RawStrokeCap::from(cap_end); + with_current_shape_mut!(state, |shape: &mut Shape| { shape.add_stroke(shapes::Stroke::new_outer_stroke( - width, style, cap_start, cap_end, + width, + stroke_style.into(), + cap_start.try_into().ok(), + cap_end.try_into().ok(), )); }); } diff --git a/render-wasm/src/wasm/text.rs b/render-wasm/src/wasm/text.rs index 06096bf0e8..01d70dcfdc 100644 --- a/render-wasm/src/wasm/text.rs +++ b/render-wasm/src/wasm/text.rs @@ -1,8 +1,315 @@ -use crate::mem; -use crate::shapes::{auto_height, build_paragraphs_with_width, GrowType, RawTextData, Type}; +use macros::ToJs; -use crate::STATE; -use crate::{with_current_shape, with_current_shape_mut}; +use super::fonts::RawFontStyle; +use crate::math::{Matrix, Point}; +use crate::mem; +use crate::shapes::{ + self, GrowType, TextAlign, TextDecoration, TextDirection, TextTransform, Type, +}; +use crate::utils::{uuid_from_u32, uuid_from_u32_quartet}; +use crate::{with_current_shape, with_current_shape_mut, with_state_mut, STATE}; + +const RAW_LEAF_DATA_SIZE: usize = std::mem::size_of::(); +pub const RAW_LEAF_FILLS_SIZE: usize = 160; +const RAW_PARAGRAPH_DATA_SIZE: usize = std::mem::size_of::(); + +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] +#[repr(u8)] +pub enum RawTextAlign { + Left = 0, + Center = 1, + Right = 2, + Justify = 3, +} + +impl From for TextAlign { + fn from(value: RawTextAlign) -> Self { + match value { + RawTextAlign::Left => TextAlign::Left, + RawTextAlign::Center => TextAlign::Center, + RawTextAlign::Right => TextAlign::Right, + RawTextAlign::Justify => TextAlign::Justify, + } + } +} + +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] +#[repr(u8)] +pub enum RawTextDirection { + Ltr = 0, + Rtl = 1, +} + +impl From for TextDirection { + fn from(value: RawTextDirection) -> Self { + match value { + RawTextDirection::Ltr => TextDirection::LTR, + RawTextDirection::Rtl => TextDirection::RTL, + } + } +} + +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] +#[repr(u8)] +pub enum RawTextDecoration { + None = 0, + Underline = 1, + LineThrough = 2, + Overline = 3, +} + +impl From for Option { + fn from(value: RawTextDecoration) -> Self { + match value { + RawTextDecoration::None => None, + RawTextDecoration::Underline => Some(TextDecoration::UNDERLINE), + RawTextDecoration::LineThrough => Some(TextDecoration::LINE_THROUGH), + RawTextDecoration::Overline => Some(TextDecoration::OVERLINE), + } + } +} + +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] +#[repr(u8)] +pub enum RawTextTransform { + None = 0, + Uppercase = 1, + Lowercase = 2, + Capitalize = 3, +} + +impl From for Option { + fn from(value: RawTextTransform) -> Self { + match value { + RawTextTransform::None => None, + RawTextTransform::Uppercase => Some(TextTransform::Uppercase), + RawTextTransform::Lowercase => Some(TextTransform::Lowercase), + RawTextTransform::Capitalize => Some(TextTransform::Capitalize), + } + } +} + +#[repr(C)] +#[repr(align(4))] +#[derive(Debug, Clone, Copy)] +pub struct RawParagraphData { + leaf_count: u32, + text_align: RawTextAlign, + text_direction: RawTextDirection, + text_decoration: RawTextDecoration, + text_transform: RawTextTransform, + line_height: f32, + letter_spacing: f32, + typography_ref_file: [u32; 4], + typography_ref_id: [u32; 4], +} + +impl From<[u8; RAW_PARAGRAPH_DATA_SIZE]> for RawParagraphData { + fn from(bytes: [u8; RAW_PARAGRAPH_DATA_SIZE]) -> Self { + unsafe { std::mem::transmute(bytes) } + } +} + +impl TryFrom<&[u8]> for RawParagraphData { + type Error = String; + fn try_from(bytes: &[u8]) -> Result { + let data: [u8; RAW_PARAGRAPH_DATA_SIZE] = bytes + .get(0..RAW_PARAGRAPH_DATA_SIZE) + .and_then(|slice| slice.try_into().ok()) + .ok_or("Invalid paragraph data".to_string())?; + Ok(RawParagraphData::from(data)) + } +} + +// FIXME: Merge this struct with RawTextLeaf once we cap the amount of fills a text shape has +#[repr(C)] +#[derive(Debug, Clone, Copy)] +pub struct RawTextLeafAttrs { + font_style: RawFontStyle, + text_decoration: RawTextDecoration, + text_transform: RawTextTransform, + text_direction: RawTextDirection, + font_size: f32, + letter_spacing: f32, + font_weight: i32, + font_id: [u32; 4], + font_family: [u8; 4], + font_variant_id: [u32; 4], // TODO: maybe add RawUUID type + text_length: u32, + fill_count: u32, // FIXME: we should cap the amount of fills a text shape has +} + +impl From<[u8; RAW_LEAF_DATA_SIZE]> for RawTextLeafAttrs { + fn from(bytes: [u8; RAW_LEAF_DATA_SIZE]) -> Self { + unsafe { std::mem::transmute(bytes) } + } +} + +impl TryFrom<&[u8]> for RawTextLeafAttrs { + type Error = String; + fn try_from(bytes: &[u8]) -> Result { + let data: [u8; RAW_LEAF_DATA_SIZE] = bytes + .get(0..RAW_LEAF_DATA_SIZE) + .and_then(|slice| slice.try_into().ok()) + .ok_or("Invalid text leaf data".to_string())?; + Ok(RawTextLeafAttrs::from(data)) + } +} + +#[allow(dead_code)] +#[repr(C)] +#[derive(Debug, Clone)] +pub struct RawTextLeaf { + attrs: RawTextLeafAttrs, + raw_fills: Vec, // FIXME: remove this once we cap the amount of fills a text shape has +} + +impl TryFrom<&[u8]> for RawTextLeaf { + // TODO: use a proper error type + type Error = String; + + fn try_from(bytes: &[u8]) -> Result { + let raw_attrs: RawTextLeafAttrs = RawTextLeafAttrs::try_from(bytes)?; + let total_fills = raw_attrs.fill_count as usize; + + // Use checked_mul to prevent overflow + let fills_size = total_fills + .checked_mul(RAW_LEAF_FILLS_SIZE) + .ok_or("Overflow occurred while calculating fills size")?; + + let fills_start = RAW_LEAF_DATA_SIZE; + let fills_end = fills_start + fills_size; + let raw_fills = &bytes[fills_start..fills_end]; + + Ok(Self { + attrs: raw_attrs, + raw_fills: raw_fills.to_vec(), + }) + } +} + +impl From for shapes::TextLeaf { + fn from(value: RawTextLeaf) -> Self { + let text = String::default(); + + let font_family = shapes::FontFamily::new( + uuid_from_u32(value.attrs.font_id), + value.attrs.font_weight as u32, + value.attrs.font_style.into(), + ); + let fills = + super::fills::parse_fills_from_bytes(&value.raw_fills, value.attrs.fill_count as usize); + + Self::new( + text, + font_family, + value.attrs.font_size, + value.attrs.letter_spacing, + value.attrs.text_decoration.into(), + value.attrs.text_transform.into(), + value.attrs.text_direction.into(), + value.attrs.font_weight, + uuid_from_u32(value.attrs.font_variant_id), + fills, + ) + } +} + +#[repr(C)] +#[derive(Debug, Clone)] +pub struct RawParagraph { + attrs: RawParagraphData, + leaves: Vec, + text_buffer: Vec, +} + +impl TryFrom<&Vec> for RawParagraph { + // TODO: use a proper error type + type Error = String; + + fn try_from(bytes: &Vec) -> Result { + let attrs = RawParagraphData::try_from(&bytes[..RAW_PARAGRAPH_DATA_SIZE])?; + let mut offset = RAW_PARAGRAPH_DATA_SIZE; + let mut raw_text_leaves: Vec = Vec::new(); + + for _ in 0..attrs.leaf_count { + let text_leaf = RawTextLeaf::try_from(&bytes[offset..])?; + let leaf_size = + RAW_LEAF_DATA_SIZE + (text_leaf.attrs.fill_count as usize * RAW_LEAF_FILLS_SIZE); + + offset += leaf_size; + raw_text_leaves.push(text_leaf); + } + + let text_buffer = &bytes[offset..]; + + Ok(Self { + attrs, + leaves: raw_text_leaves, + text_buffer: text_buffer.to_vec(), + }) + } +} + +impl From for shapes::Paragraph { + fn from(value: RawParagraph) -> Self { + let typography_ref_file = uuid_from_u32(value.attrs.typography_ref_file); + let typography_ref_id = uuid_from_u32(value.attrs.typography_ref_id); + + let mut leaves = vec![]; + + let mut offset = 0; + for raw_leaf in value.leaves.into_iter() { + let delta = raw_leaf.attrs.text_length as usize; + let text_buffer = &value.text_buffer[offset..offset + delta]; + + let mut leaf = shapes::TextLeaf::from(raw_leaf); + if !text_buffer.is_empty() { + leaf.set_text(String::from_utf8_lossy(text_buffer).to_string()); + } + + leaves.push(leaf); + offset += delta; + } + + shapes::Paragraph::new( + value.attrs.text_align.into(), + value.attrs.text_direction.into(), + value.attrs.text_decoration.into(), + value.attrs.text_transform.into(), + value.attrs.line_height, + value.attrs.letter_spacing, + typography_ref_file, + typography_ref_id, + leaves, + ) + } +} + +#[derive(Debug, PartialEq, Clone, Copy, ToJs)] +#[repr(u8)] +#[allow(dead_code)] +pub enum RawGrowType { + Fixed = 0, + AutoWidth = 1, + AutoHeight = 2, +} + +impl From for RawGrowType { + fn from(value: u8) -> Self { + unsafe { std::mem::transmute(value) } + } +} + +impl From for GrowType { + fn from(value: RawGrowType) -> Self { + match value { + RawGrowType::Fixed => GrowType::Fixed, + RawGrowType::AutoWidth => GrowType::AutoWidth, + RawGrowType::AutoHeight => GrowType::AutoHeight, + } + } +} #[no_mangle] pub extern "C" fn clear_shape_text() { @@ -15,9 +322,9 @@ pub extern "C" fn clear_shape_text() { pub extern "C" fn set_shape_text_content() { let bytes = mem::bytes(); with_current_shape_mut!(state, |shape: &mut Shape| { - let raw_text_data = RawTextData::from(&bytes); + let raw_text_data = RawParagraph::try_from(&bytes).unwrap(); shape - .add_paragraph(raw_text_data.paragraph) + .add_paragraph(raw_text_data.into()) .expect("Failed to add paragraph"); }); mem::free_bytes(); @@ -25,54 +332,91 @@ pub extern "C" fn set_shape_text_content() { #[no_mangle] pub extern "C" fn set_shape_grow_type(grow_type: u8) { + let grow_type = RawGrowType::from(grow_type); + with_current_shape_mut!(state, |shape: &mut Shape| { if let Type::Text(text_content) = &mut shape.shape_type { text_content.set_grow_type(GrowType::from(grow_type)); + } else { + panic!("Trying to update grow type in a shape that it's not a text shape"); } }); } #[no_mangle] pub extern "C" fn get_text_dimensions() -> *mut u8 { - let mut width = 0.01; - let mut height = 0.01; - let mut m_width = 0.01; + let mut ptr = std::ptr::null_mut(); + with_current_shape_mut!(state, |shape: &mut Shape| { + if let Type::Text(content) = &mut shape.shape_type { + let text_content_size = content.update_layout(shape.selrect); - with_current_shape!(state, |shape: &Shape| { - width = shape.selrect.width(); - height = shape.selrect.height(); - - if let Type::Text(content) = &shape.shape_type { - // 1. Reset Paragraphs - let paragraph_width = content.get_width(); - let mut paragraphs = content.to_paragraphs(None, None); - let built_paragraphs = build_paragraphs_with_width(&mut paragraphs, paragraph_width); - - // 2. Max Width Calculation - m_width = built_paragraphs - .iter() - .flatten() - .fold(0.0, |max_width, p| f32::max(p.max_width(), max_width)); - - // 3. Width and Height Calculation - match content.grow_type() { - GrowType::AutoHeight => { - let mut paragraph_height = content.to_paragraphs(None, None); - height = auto_height(&mut paragraph_height, paragraph_width).ceil(); - } - GrowType::AutoWidth => { - width = paragraph_width; - let mut paragraph_height = content.to_paragraphs(None, None); - height = auto_height(&mut paragraph_height, paragraph_width).ceil(); - } - GrowType::Fixed => {} - } + let mut bytes = vec![0; 12]; + bytes[0..4].clone_from_slice(&text_content_size.width.to_le_bytes()); + bytes[4..8].clone_from_slice(&text_content_size.height.to_le_bytes()); + bytes[8..12].clone_from_slice(&text_content_size.max_width.to_le_bytes()); + ptr = mem::write_bytes(bytes) } }); - let mut bytes = vec![0; 12]; - bytes[0..4].clone_from_slice(&width.to_le_bytes()); - bytes[4..8].clone_from_slice(&height.to_le_bytes()); - bytes[8..12].clone_from_slice(&m_width.to_le_bytes()); - mem::write_bytes(bytes) + // FIXME: I think it should be better if instead of returning + // a NULL ptr we failed gracefully. + ptr +} + +#[no_mangle] +pub extern "C" fn update_shape_text_layout() { + with_current_shape_mut!(state, |shape: &mut Shape| { + if let Type::Text(text_content) = &mut shape.shape_type { + text_content.update_layout(shape.selrect); + } + }); +} + +#[no_mangle] +pub extern "C" fn update_shape_text_layout_for(a: u32, b: u32, c: u32, d: u32) { + with_state_mut!(state, { + let shape_id = uuid_from_u32_quartet(a, b, c, d); + if let Some(shape) = state.shapes.get_mut(&shape_id) { + if let Type::Text(text_content) = &mut shape.shape_type { + text_content.update_layout(shape.selrect); + } + } + }); +} + +#[no_mangle] +pub extern "C" fn update_shape_text_layout_for_all() { + with_state_mut!(state, { + for shape in state.shapes.iter_mut() { + if let Type::Text(text_content) = &mut shape.shape_type { + text_content.update_layout(shape.selrect); + } + } + }); +} + +#[no_mangle] +pub extern "C" fn get_caret_position_at(x: f32, y: f32) -> i32 { + with_current_shape!(state, |shape: &Shape| { + if let Type::Text(text_content) = &shape.shape_type { + let mut matrix = Matrix::new_identity(); + let shape_matrix = shape.get_concatenated_matrix(&state.shapes); + let view_matrix = state.render_state.viewbox.get_matrix(); + if let Some(inv_view_matrix) = view_matrix.invert() { + matrix.post_concat(&inv_view_matrix); + matrix.post_concat(&shape_matrix); + + let mapped_point = matrix.map_point(Point::new(x, y)); + + if let Some(position_with_affinity) = + text_content.get_caret_position_at(&mapped_point) + { + return position_with_affinity.position; + } + } + } else { + panic!("Trying to update grow type in a shape that it's not a text shape"); + } + }); + -1 } diff --git a/render-wasm/watch b/render-wasm/watch index 874dfba92f..74a2b1974a 100755 --- a/render-wasm/watch +++ b/render-wasm/watch @@ -9,11 +9,15 @@ pushd $_SCRIPT_DIR; export CARGO_BUILD_TARGET=${CARGO_BUILD_TARGET:-"wasm32-unknown-emscripten"}; export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-binaries/releases/download/0.87.0/skia-binaries-e551f334ad5cbdf43abf-wasm32-unknown-emscripten-gl-svg-textlayout-binary-cache-webp.tar.gz"} +_SHARED_FILE=$(find target/wasm32-unknown-emscripten -name render_wasm_shared.js | head -n 1); + +cat target/wasm32-unknown-emscripten/$_BUILD_MODE/render_wasm.js "$_SHARED_FILE" > ../frontend/resources/public/js/$_BUILD_NAME.js +cp target/wasm32-unknown-emscripten/$_BUILD_MODE/render_wasm.wasm ../frontend/resources/public/js/$_BUILD_NAME.wasm pushd $_SCRIPT_DIR; cargo watch \ -x "build $_CARGO_PARAMS" \ - -s "cp target/wasm32-unknown-emscripten/$_BUILD_MODE/render_wasm.js ../frontend/resources/public/js/" \ + -s "cat target/wasm32-unknown-emscripten/$_BUILD_MODE/render_wasm.js \"$_SHARED_FILE\" > ../frontend/resources/public/js/$_BUILD_NAME.js" \ -s "cp target/wasm32-unknown-emscripten/$_BUILD_MODE/render_wasm.wasm ../frontend/resources/public/js/" \ -s "sed -i 's/render_wasm.wasm/render_wasm.wasm?version=develop/g' ../frontend/resources/public/js/render_wasm.js" \ -s "echo 'DONE\n'";